mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
[MIRROR] Fix a bunch of issues and runtimes (#11145)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
199e857d15
commit
46c940fbdf
@@ -45,6 +45,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
|||||||
#define FLEXIBLEMATERIAL (1<<4) // At the moment, masks with this flag will not prevent eating even if they are covering your face.
|
#define FLEXIBLEMATERIAL (1<<4) // At the moment, masks with this flag will not prevent eating even if they are covering your face.
|
||||||
#define ALLOW_SURVIVALFOOD (1<<5) // Allows special survival food items to be eaten through it
|
#define ALLOW_SURVIVALFOOD (1<<5) // Allows special survival food items to be eaten through it
|
||||||
#define INFINITE_AIR (1<<6) // Provides an infinite air supply.
|
#define INFINITE_AIR (1<<6) // Provides an infinite air supply.
|
||||||
|
#define NOSTRIP (1<<7) // Items that should never get stripped
|
||||||
|
|
||||||
// Flags for pass_flags. - Used in /atom/var/pass_flags
|
// Flags for pass_flags. - Used in /atom/var/pass_flags
|
||||||
#define PASSTABLE (1<<0)
|
#define PASSTABLE (1<<0)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||||
|
|
||||||
/proc/dopage(src,target)
|
/proc/dopage(source, target)
|
||||||
var/href_list
|
var/href_list
|
||||||
var/href
|
var/href
|
||||||
href_list = params2list("src=\ref[src]&[target]=1")
|
href_list = params2list("src=\ref[source]&[target]=1")
|
||||||
href = "src=\ref[src];[target]=1"
|
href = "src=\ref[source];[target]=1"
|
||||||
src:temphtml = null
|
source:temphtml = null
|
||||||
src:Topic(href, href_list)
|
source:Topic(href, href_list)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
/proc/is_on_same_plane_or_station(var/z1, var/z2)
|
/proc/is_on_same_plane_or_station(var/z1, var/z2)
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ GLOBAL_LIST_INIT(legacy_tg_space_type_cache, typecacheof(/turf/space))
|
|||||||
* Note that this can only be used inside the [datum/tg_jps_pathfind][pathfind datum] since it uses variables from said datum.
|
* Note that this can only be used inside the [datum/tg_jps_pathfind][pathfind datum] since it uses variables from said datum.
|
||||||
* If you really want to optimize things, optimize this, cuz this gets called a lot.
|
* If you really want to optimize things, optimize this, cuz this gets called a lot.
|
||||||
*/
|
*/
|
||||||
#define CAN_STEP(cur_turf, next) (next && !next.density && !(simulated_only && GLOB.legacy_tg_space_type_cache[next.type]) && !cur_turf.LinkBlockedWithAccess(next,caller, id) && (next != avoid))
|
#define CAN_STEP(cur_turf, next) (next && !next.density && !(simulated_only && GLOB.legacy_tg_space_type_cache[next.type]) && !cur_turf.LinkBlockedWithAccess(next,proc_caller, id) && (next != avoid))
|
||||||
/// Another helper macro for JPS, for telling when a node has forced neighbors that need expanding
|
/// Another helper macro for JPS, for telling when a node has forced neighbors that need expanding
|
||||||
#define STEP_NOT_HERE_BUT_THERE(cur_turf, dirA, dirB) ((!CAN_STEP(cur_turf, get_step(cur_turf, dirA)) && CAN_STEP(cur_turf, get_step(cur_turf, dirB))))
|
#define STEP_NOT_HERE_BUT_THERE(cur_turf, dirA, dirB) ((!CAN_STEP(cur_turf, get_step(cur_turf, dirA)) && CAN_STEP(cur_turf, get_step(cur_turf, dirB))))
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ GLOBAL_LIST_INIT(legacy_tg_space_type_cache, typecacheof(/turf/space))
|
|||||||
*/
|
*/
|
||||||
/datum/tg_jps_pathfind
|
/datum/tg_jps_pathfind
|
||||||
/// The thing that we're actually trying to path for
|
/// The thing that we're actually trying to path for
|
||||||
var/atom/movable/caller
|
var/atom/movable/proc_caller
|
||||||
/// The turf where we started at
|
/// The turf where we started at
|
||||||
var/turf/start
|
var/turf/start
|
||||||
/// The turf we're trying to path to (note that this won't track a moving target)
|
/// The turf we're trying to path to (note that this won't track a moving target)
|
||||||
@@ -170,8 +170,8 @@ GLOBAL_LIST_INIT(legacy_tg_space_type_cache, typecacheof(/turf/space))
|
|||||||
/// A specific turf we're avoiding, like if a mulebot is being blocked by someone t-posing in a doorway we're trying to get through
|
/// A specific turf we're avoiding, like if a mulebot is being blocked by someone t-posing in a doorway we're trying to get through
|
||||||
var/turf/avoid
|
var/turf/avoid
|
||||||
|
|
||||||
/datum/tg_jps_pathfind/New(atom/movable/caller, atom/goal, id, max_distance, mintargetdist, simulated_only, avoid)
|
/datum/tg_jps_pathfind/New(atom/movable/proc_caller, atom/goal, id, max_distance, mintargetdist, simulated_only, avoid)
|
||||||
src.caller = caller
|
src.proc_caller = proc_caller
|
||||||
end = get_turf(goal)
|
end = get_turf(goal)
|
||||||
open = new /datum/tg_heap(GLOBAL_PROC_REF(TGHeapPathWeightCompare))
|
open = new /datum/tg_heap(GLOBAL_PROC_REF(TGHeapPathWeightCompare))
|
||||||
sources = new()
|
sources = new()
|
||||||
@@ -188,7 +188,7 @@ GLOBAL_LIST_INIT(legacy_tg_space_type_cache, typecacheof(/turf/space))
|
|||||||
* return null, which [/proc/get_path_to] translates to an empty list (notable for simple bots, who need empty lists)
|
* return null, which [/proc/get_path_to] translates to an empty list (notable for simple bots, who need empty lists)
|
||||||
*/
|
*/
|
||||||
/datum/tg_jps_pathfind/proc/search()
|
/datum/tg_jps_pathfind/proc/search()
|
||||||
start = get_turf(caller)
|
start = get_turf(proc_caller)
|
||||||
if(!start || !end)
|
if(!start || !end)
|
||||||
stack_trace("Invalid A* start or destination")
|
stack_trace("Invalid A* start or destination")
|
||||||
return
|
return
|
||||||
@@ -204,7 +204,7 @@ GLOBAL_LIST_INIT(legacy_tg_space_type_cache, typecacheof(/turf/space))
|
|||||||
|
|
||||||
//then run the main loop
|
//then run the main loop
|
||||||
while(!open.is_empty() && !path)
|
while(!open.is_empty() && !path)
|
||||||
if(!caller)
|
if(!proc_caller)
|
||||||
return
|
return
|
||||||
current_processed_node = open.pop() //get the lower f_value turf in the open list
|
current_processed_node = open.pop() //get the lower f_value turf in the open list
|
||||||
if(max_distance && (current_processed_node.number_tiles > max_distance))//if too many steps, don't process that path
|
if(max_distance && (current_processed_node.number_tiles > max_distance))//if too many steps, don't process that path
|
||||||
@@ -382,14 +382,14 @@ GLOBAL_LIST_INIT(legacy_tg_space_type_cache, typecacheof(/turf/space))
|
|||||||
return
|
return
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For seeing if we can actually move between 2 given turfs while accounting for our access and the caller's pass_flags
|
* For seeing if we can actually move between 2 given turfs while accounting for our access and the proc_caller's pass_flags
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* * caller: The movable, if one exists, being used for mobility checks to see what tiles it can reach
|
* * proc_caller: The movable, if one exists, being used for mobility checks to see what tiles it can reach
|
||||||
* * ID: An ID card that decides if we can gain access to doors that would otherwise block a turf
|
* * ID: An ID card that decides if we can gain access to doors that would otherwise block a turf
|
||||||
* * simulated_only: Do we only worry about turfs with simulated atmos, most notably things that aren't space?
|
* * simulated_only: Do we only worry about turfs with simulated atmos, most notably things that aren't space?
|
||||||
*/
|
*/
|
||||||
/turf/proc/LinkBlockedWithAccess(turf/destination_turf, caller, ID)
|
/turf/proc/LinkBlockedWithAccess(turf/destination_turf, proc_caller, ID)
|
||||||
var/static/datum/pathfinding/whatever = new
|
var/static/datum/pathfinding/whatever = new
|
||||||
return !global.default_pathfinding_adjacency(src, destination_turf, GLOB.generic_pathfinding_actor, whatever)
|
return !global.default_pathfinding_adjacency(src, destination_turf, GLOB.generic_pathfinding_actor, whatever)
|
||||||
|
|
||||||
|
|||||||
@@ -423,9 +423,9 @@ GLOBAL_LIST_EMPTY(text_tag_cache)
|
|||||||
t = replacetext(t, "\[/grid\]", "</td></tr></table>")
|
t = replacetext(t, "\[/grid\]", "</td></tr></table>")
|
||||||
t = replacetext(t, "\[row\]", "</td><tr>")
|
t = replacetext(t, "\[row\]", "</td><tr>")
|
||||||
t = replacetext(t, "\[cell\]", "<td>")
|
t = replacetext(t, "\[cell\]", "<td>")
|
||||||
t = replacetext(t, "\[logo\]", "<img src = https://raw.githubusercontent.com/CHOMPStation2/CHOMPStation2/master/html/images/ntlogo.png>") //CHOMPEdit
|
t = replacetext(t, "\[logo\]", "<img src=\ref['html/images/ntlogo.png']")
|
||||||
t = replacetext(t, "\[redlogo\]", "<img src = https://raw.githubusercontent.com/CHOMPStation2/CHOMPStation2/master/html/images/redntlogo.png>") //CHOMPEdit
|
t = replacetext(t, "\[redlogo\]", "<img src=\ref['html/images/redntlogo.png']>")
|
||||||
t = replacetext(t, "\[sglogo\]", "<img src = https://raw.githubusercontent.com/CHOMPStation2/CHOMPStation2/master/html/images/sglogo.png>") //CHOMPEdit
|
t = replacetext(t, "\[sglogo\]", "<img src=\ref['html/images/sglogo.png']")
|
||||||
t = replacetext(t, "\[editorbr\]", "")
|
t = replacetext(t, "\[editorbr\]", "")
|
||||||
return t
|
return t
|
||||||
|
|
||||||
@@ -473,9 +473,9 @@ GLOBAL_LIST_EMPTY(text_tag_cache)
|
|||||||
t = replacetext(t, "</table>", "\[/grid\]")
|
t = replacetext(t, "</table>", "\[/grid\]")
|
||||||
t = replacetext(t, "<tr>", "\[row\]")
|
t = replacetext(t, "<tr>", "\[row\]")
|
||||||
t = replacetext(t, "<td>", "\[cell\]")
|
t = replacetext(t, "<td>", "\[cell\]")
|
||||||
t = replacetext(t, "<img src = ntlogo.png>", "\[logo\]")
|
t = replacetext(t, "<img src=\ref['html/images/ntlogo.png']>", "\[logo\]")
|
||||||
t = replacetext(t, "<img src = redntlogo.png>", "\[redlogo\]")
|
t = replacetext(t, "<img src=\ref['html/images/redntlogo.png']>", "\[redlogo\]")
|
||||||
t = replacetext(t, "<img src = sglogo.png>", "\[sglogo\]")
|
t = replacetext(t, "<img src=\ref['html/images/sglogo.png']>", "\[sglogo\]")
|
||||||
t = replacetext(t, "<span class=\"paper_field\"></span>", "\[field\]")
|
t = replacetext(t, "<span class=\"paper_field\"></span>", "\[field\]")
|
||||||
t = replacetext(t, "<span class=\"redacted\">R E D A C T E D</span>", "\[redacted\]")
|
t = replacetext(t, "<span class=\"redacted\">R E D A C T E D</span>", "\[redacted\]")
|
||||||
t = strip_html_properly(t)
|
t = strip_html_properly(t)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
* @param hook Identifier of the hook to call.
|
* @param hook Identifier of the hook to call.
|
||||||
* @returns 1 if all hooked code runs successfully, 0 otherwise.
|
* @returns 1 if all hooked code runs successfully, 0 otherwise.
|
||||||
*/
|
*/
|
||||||
/proc/callHook(hook, list/args=null)
|
/proc/callHook(hook, list/arguments=null)
|
||||||
var/hook_path = text2path("/hook/[hook]")
|
var/hook_path = text2path("/hook/[hook]")
|
||||||
if(!hook_path)
|
if(!hook_path)
|
||||||
error("Invalid hook '/hook/[hook]' called.")
|
error("Invalid hook '/hook/[hook]' called.")
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
var/requester = new hook_path
|
var/requester = new hook_path
|
||||||
var/status = 1
|
var/status = 1
|
||||||
for(var/P in typesof("[hook_path]/proc"))
|
for(var/P in typesof("[hook_path]/proc"))
|
||||||
if(!call(requester, P)(arglist(args)))
|
if(!call(requester, P)(arglist(arguments)))
|
||||||
error("Hook '[P]' failed or runtimed.")
|
error("Hook '[P]' failed or runtimed.")
|
||||||
status = 0
|
status = 0
|
||||||
|
|
||||||
|
|||||||
@@ -118,13 +118,13 @@ SUBSYSTEM_DEF(xenoarch)
|
|||||||
artifact_turf.artifact_find = new()
|
artifact_turf.artifact_find = new()
|
||||||
|
|
||||||
/// This is the proc that is used when a Z level runs out of artifacts. This means you have 'completed' your job and now you get bonus goodies to keep you occupied.
|
/// This is the proc that is used when a Z level runs out of artifacts. This means you have 'completed' your job and now you get bonus goodies to keep you occupied.
|
||||||
/datum/controller/subsystem/xenoarch/proc/continual_generation(var/mob/living/caller)
|
/datum/controller/subsystem/xenoarch/proc/continual_generation(var/mob/living/user)
|
||||||
|
|
||||||
/// So, to preface this, I had to do a lot of testing with this to ensure it wouldn't cause mass lag and that it properly functioned.
|
/// So, to preface this, I had to do a lot of testing with this to ensure it wouldn't cause mass lag and that it properly functioned.
|
||||||
/// At first, I tried to make it scan mineral in the user's Z. There's not really any preexisting functionality for this that I could find, so that was a negative.
|
/// At first, I tried to make it scan mineral in the user's Z. There's not really any preexisting functionality for this that I could find, so that was a negative.
|
||||||
/// Next, I saw what would happen if it did 'in world' and then went 'if M.z != caller.z continue' and that caused...A lot of lag. For a long time.
|
/// Next, I saw what would happen if it did 'in world' and then went 'if M.z != user.z continue' and that caused...A lot of lag. For a long time.
|
||||||
/// This range(100) was for me was completely lagless. It gives a good amount of artifacts to keep digging and keep archeo working so they don't 'run out' of things to do.
|
/// This range(100) was for me was completely lagless. It gives a good amount of artifacts to keep digging and keep archeo working so they don't 'run out' of things to do.
|
||||||
for(var/turf/simulated/mineral/M in range(100, caller))
|
for(var/turf/simulated/mineral/M in range(100, user))
|
||||||
|
|
||||||
if(!M.density)
|
if(!M.density)
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -24,9 +24,9 @@
|
|||||||
return
|
return
|
||||||
return list("title" = title, "message" = message)
|
return list("title" = title, "message" = message)
|
||||||
|
|
||||||
/datum/uplink_item/abstract/announcements/fake_centcom/get_goods(var/obj/item/uplink/U, var/loc, var/mob/user, var/list/args)
|
/datum/uplink_item/abstract/announcements/fake_centcom/get_goods(var/obj/item/uplink/U, var/location, var/mob/user, var/list/arguments)
|
||||||
post_comm_message(args["title"], replacetext(args["message"], "\n", "<br/>"))
|
post_comm_message(arguments["title"], replacetext(arguments["message"], "\n", "<br/>"))
|
||||||
command_announcement.Announce(args["message"], args["title"])
|
command_announcement.Announce(arguments["message"], arguments["title"])
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/datum/uplink_item/abstract/announcements/fake_crew_arrival
|
/datum/uplink_item/abstract/announcements/fake_crew_arrival
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!"
|
desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!"
|
||||||
item_cost = 15
|
item_cost = 15
|
||||||
|
|
||||||
/datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/uplink/U, var/loc, var/mob/user, var/list/args)
|
/datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/uplink/U, var/location, var/mob/user, var/list/arguments)
|
||||||
if(!user)
|
if(!user)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
desc = "Interferes with the station's ion sensors. Triggers immediately upon investment."
|
desc = "Interferes with the station's ion sensors. Triggers immediately upon investment."
|
||||||
item_cost = 10
|
item_cost = 10
|
||||||
|
|
||||||
/datum/uplink_item/abstract/announcements/fake_ion_storm/get_goods(var/obj/item/uplink/U, var/loc)
|
/datum/uplink_item/abstract/announcements/fake_ion_storm/get_goods(var/obj/item/uplink/U, var/location)
|
||||||
ion_storm_announcement()
|
ion_storm_announcement()
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
desc = "Interferes with the station's radiation sensors. Triggers immediately upon investment."
|
desc = "Interferes with the station's radiation sensors. Triggers immediately upon investment."
|
||||||
item_cost = 15
|
item_cost = 15
|
||||||
|
|
||||||
/datum/uplink_item/abstract/announcements/fake_radiation/get_goods(var/obj/item/uplink/U, var/loc)
|
/datum/uplink_item/abstract/announcements/fake_radiation/get_goods(var/obj/item/uplink/U, var/location)
|
||||||
var/datum/event_meta/EM = new(EVENT_LEVEL_MUNDANE, "Fake Radiation Storm", add_to_queue = 0)
|
var/datum/event_meta/EM = new(EVENT_LEVEL_MUNDANE, "Fake Radiation Storm", add_to_queue = 0)
|
||||||
new/datum/event/radiation_storm/syndicate(EM)
|
new/datum/event/radiation_storm/syndicate(EM)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -35,11 +35,11 @@
|
|||||||
/datum/uplink_item/item/badassery/random_many/cost(obj/item/uplink/U, telecrystals)
|
/datum/uplink_item/item/badassery/random_many/cost(obj/item/uplink/U, telecrystals)
|
||||||
return max(1, telecrystals)
|
return max(1, telecrystals)
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/uplink/U, var/loc, var/mob/M)
|
/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/uplink/U, var/location, var/mob/M)
|
||||||
var/list/bought_items = list()
|
var/list/bought_items = list()
|
||||||
for(var/datum/uplink_item/UI in get_random_uplink_items(U, M.mind.tcrystals, loc))
|
for(var/datum/uplink_item/UI in get_random_uplink_items(U, M.mind.tcrystals, location))
|
||||||
UI.purchase_log(U)
|
UI.purchase_log(U)
|
||||||
var/obj/item/I = UI.get_goods(U, loc)
|
var/obj/item/I = UI.get_goods(U, location)
|
||||||
if(istype(I))
|
if(istype(I))
|
||||||
bought_items += I
|
bought_items += I
|
||||||
|
|
||||||
@@ -77,8 +77,8 @@
|
|||||||
..()
|
..()
|
||||||
desc = "A crate containing [item_worth] telecrystal\s worth of surplus leftovers."
|
desc = "A crate containing [item_worth] telecrystal\s worth of surplus leftovers."
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/uplink/U, var/loc)
|
/datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/uplink/U, var/location)
|
||||||
var/obj/structure/largecrate/C = new(loc)
|
var/obj/structure/largecrate/C = new(location)
|
||||||
var/random_items = get_surplus_items(null, item_worth, C)
|
var/random_items = get_surplus_items(null, item_worth, C)
|
||||||
for(var/datum/uplink_item/I in random_items)
|
for(var/datum/uplink_item/I in random_items)
|
||||||
I.purchase_log(U)
|
I.purchase_log(U)
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
category = /datum/uplink_category/telecrystals
|
category = /datum/uplink_category/telecrystals
|
||||||
blacklisted = 1
|
blacklisted = 1
|
||||||
|
|
||||||
/datum/uplink_item/item/telecrystal/get_goods(obj/item/uplink/U, loc, mob/M)
|
/datum/uplink_item/item/telecrystal/get_goods(obj/item/uplink/U, location, mob/M)
|
||||||
return new /obj/item/stack/telecrystal(loc, cost(U, M.mind.tcrystals))
|
return new /obj/item/stack/telecrystal(location, cost(U, M.mind.tcrystals))
|
||||||
|
|
||||||
/datum/uplink_item/item/telecrystal/one
|
/datum/uplink_item/item/telecrystal/one
|
||||||
name = "Telecrystal - 01"
|
name = "Telecrystal - 01"
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ var/datum/uplink/uplink = new()
|
|||||||
return desc
|
return desc
|
||||||
|
|
||||||
// get_goods does not necessarily return physical objects, it is simply a way to acquire the uplink item without paying
|
// get_goods does not necessarily return physical objects, it is simply a way to acquire the uplink item without paying
|
||||||
/datum/uplink_item/proc/get_goods(var/obj/item/uplink/U, var/loc, var/mob/user)
|
/datum/uplink_item/proc/get_goods(var/obj/item/uplink/U, var/location, var/mob/user)
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
/datum/uplink_item/proc/log_icon()
|
/datum/uplink_item/proc/log_icon()
|
||||||
@@ -117,8 +117,8 @@ var/datum/uplink/uplink = new()
|
|||||||
A.put_in_any_hand_if_possible(I)
|
A.put_in_any_hand_if_possible(I)
|
||||||
return I
|
return I
|
||||||
|
|
||||||
/datum/uplink_item/item/get_goods(obj/item/uplink/U, loc, mob/user)
|
/datum/uplink_item/item/get_goods(obj/item/uplink/U, location, mob/user)
|
||||||
var/obj/item/I = new path(loc)
|
var/obj/item/I = new path(location)
|
||||||
return I
|
return I
|
||||||
|
|
||||||
/datum/uplink_item/item/description()
|
/datum/uplink_item/item/description()
|
||||||
@@ -154,8 +154,8 @@ var/datum/uplink/uplink = new()
|
|||||||
var/crate_path = /obj/structure/largecrate
|
var/crate_path = /obj/structure/largecrate
|
||||||
var/list/paths = list() // List of paths to be spawned into the crate.
|
var/list/paths = list() // List of paths to be spawned into the crate.
|
||||||
|
|
||||||
/datum/uplink_item/crated/get_goods(obj/item/uplink/U, loc, mob/user)
|
/datum/uplink_item/crated/get_goods(obj/item/uplink/U, location, mob/user)
|
||||||
var/obj/L = new crate_path(get_turf(loc))
|
var/obj/L = new crate_path(get_turf(location))
|
||||||
|
|
||||||
L.adjust_scale(rand(9, 12) / 10, rand(9, 12) / 10) // Some variation in the crate / locker size.
|
L.adjust_scale(rand(9, 12) / 10, rand(9, 12) / 10) // Some variation in the crate / locker size.
|
||||||
|
|
||||||
@@ -179,7 +179,7 @@ var/datum/uplink/uplink = new()
|
|||||||
/****************
|
/****************
|
||||||
* Support procs *
|
* Support procs *
|
||||||
****************/
|
****************/
|
||||||
/proc/get_random_uplink_items(var/obj/item/uplink/U, var/remaining_TC, var/loc)
|
/proc/get_random_uplink_items(var/obj/item/uplink/U, var/remaining_TC, var/location)
|
||||||
var/list/bought_items = list()
|
var/list/bought_items = list()
|
||||||
while(remaining_TC)
|
while(remaining_TC)
|
||||||
var/datum/uplink_item/I = default_uplink_selection.get_random_item(remaining_TC, U, bought_items)
|
var/datum/uplink_item/I = default_uplink_selection.get_random_item(remaining_TC, U, bought_items)
|
||||||
@@ -190,7 +190,7 @@ var/datum/uplink/uplink = new()
|
|||||||
|
|
||||||
return bought_items
|
return bought_items
|
||||||
|
|
||||||
/proc/get_surplus_items(var/obj/item/uplink/U, var/remaining_TC, var/loc)
|
/proc/get_surplus_items(var/obj/item/uplink/U, var/remaining_TC, var/location)
|
||||||
var/list/bought_items = list()
|
var/list/bought_items = list()
|
||||||
var/override = TRUE
|
var/override = TRUE
|
||||||
while(remaining_TC)
|
while(remaining_TC)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
C.toggle_power()
|
C.toggle_power()
|
||||||
|
|
||||||
if(WIRE_PARTICLE_STRENGTH)
|
if(WIRE_PARTICLE_STRENGTH)
|
||||||
C.add_strength()
|
C.add_strength(usr)
|
||||||
|
|
||||||
if(WIRE_PARTICLE_INTERFACE)
|
if(WIRE_PARTICLE_INTERFACE)
|
||||||
C.interface_control = !C.interface_control
|
C.interface_control = !C.interface_control
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
//Copypasta
|
//Copypasta
|
||||||
valid_turfs:
|
valid_turfs:
|
||||||
for(var/turf/simulated/T in A.contents)
|
for(var/turf/simulated/T in A.contents)
|
||||||
if(T.density || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall
|
if(T.density || ismineralturf(T)) //Don't blink to vacuum or a wall
|
||||||
continue
|
continue
|
||||||
for(var/atom/movable/stuff in T.contents)
|
for(var/atom/movable/stuff in T.contents)
|
||||||
if(stuff.density)
|
if(stuff.density)
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
valid_turfs:
|
valid_turfs:
|
||||||
for(var/turf/simulated/T in range(AM, range))
|
for(var/turf/simulated/T in range(AM, range))
|
||||||
if(T.density || T.block_tele || istype(T, /turf/simulated/mineral)) //Don't blink to vacuum or a wall
|
if(T.density || T.block_tele || ismineralturf(T)) //Don't blink to vacuum or a wall
|
||||||
continue
|
continue
|
||||||
for(var/atom/movable/stuff in T.contents)
|
for(var/atom/movable/stuff in T.contents)
|
||||||
if(stuff.density)
|
if(stuff.density)
|
||||||
|
|||||||
@@ -289,8 +289,7 @@
|
|||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/machinery/porta_turret/Destroy()
|
/obj/machinery/porta_turret/Destroy()
|
||||||
qdel(spark_system)
|
QDEL_NULL(spark_system)
|
||||||
spark_system = null
|
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/machinery/porta_turret/update_icon()
|
/obj/machinery/porta_turret/update_icon()
|
||||||
@@ -588,7 +587,7 @@
|
|||||||
|
|
||||||
health -= force
|
health -= force
|
||||||
if(force > 5 && prob(45))
|
if(force > 5 && prob(45))
|
||||||
spark_system.start()
|
spark_system?.start()
|
||||||
if(health <= 0)
|
if(health <= 0)
|
||||||
die() //the death process :(
|
die() //the death process :(
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
log_message("Drilled through [target]")
|
log_message("Drilled through [target]")
|
||||||
target.ex_act(2)
|
target.ex_act(2)
|
||||||
|
|
||||||
else if(istype(target, /turf/simulated/mineral))
|
else if(ismineralturf(target))
|
||||||
if(enable_special)
|
if(enable_special)
|
||||||
for(var/turf/simulated/mineral/M in range(chassis,1))
|
for(var/turf/simulated/mineral/M in range(chassis,1))
|
||||||
if(get_dir(chassis,M)&chassis.dir)
|
if(get_dir(chassis,M)&chassis.dir)
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
else
|
else
|
||||||
log_message("Bored through [target]")
|
log_message("Bored through [target]")
|
||||||
target.ex_act(2)
|
target.ex_act(2)
|
||||||
else if(istype(target, /turf/simulated/mineral))
|
else if(ismineralturf(target))
|
||||||
var/turf/simulated/mineral/M = target
|
var/turf/simulated/mineral/M = target
|
||||||
if(enable_special && !M.density)
|
if(enable_special && !M.density)
|
||||||
M.ex_act(2)
|
M.ex_act(2)
|
||||||
|
|||||||
@@ -132,7 +132,7 @@
|
|||||||
else
|
else
|
||||||
log_message("Drilled through [target]")
|
log_message("Drilled through [target]")
|
||||||
target.ex_act(2)
|
target.ex_act(2)
|
||||||
else if(istype(target, /turf/simulated/mineral))
|
else if(ismineralturf(target))
|
||||||
for(var/turf/simulated/mineral/M in range(chassis,1))
|
for(var/turf/simulated/mineral/M in range(chassis,1))
|
||||||
if(get_dir(chassis,M)&chassis.dir)
|
if(get_dir(chassis,M)&chassis.dir)
|
||||||
M.GetDrilled()
|
M.GetDrilled()
|
||||||
|
|||||||
@@ -1024,6 +1024,8 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
|||||||
|
|
||||||
/obj/item/MouseEntered(location,control,params)
|
/obj/item/MouseEntered(location,control,params)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
if(QDELETED(src))
|
||||||
|
return
|
||||||
if(usr?.read_preference(/datum/preference/toggle/inv_tooltips) && ((src in usr) || isstorage(loc))) // If in inventory or in storage we're looking at
|
if(usr?.read_preference(/datum/preference/toggle/inv_tooltips) && ((src in usr) || isstorage(loc))) // If in inventory or in storage we're looking at
|
||||||
var/user = usr
|
var/user = usr
|
||||||
tip_timer = addtimer(CALLBACK(src, PROC_REF(openTip), location, control, params, user), 5, TIMER_STOPPABLE)
|
tip_timer = addtimer(CALLBACK(src, PROC_REF(openTip), location, control, params, user), 5, TIMER_STOPPABLE)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
var/turf/our_turf = get_turf(user)
|
var/turf/our_turf = get_turf(user)
|
||||||
|
|
||||||
var/final = "<head><style>body {font-family: Verdana; background-color: #C1BDA3;}</style></head><center><h3>Nanotrasen Security Citation</h3><hr>This security citation has been issued to <br><big>[capitalize(ticket_name)]</big></center><b>Reason</b>:<br><i>[details]</i><hr><center><small>See your local representative at Central Command after the shift is over to resolve this issue.</small><br><img src = ntlogo.png></center>"
|
var/final = "<head><style>body {font-family: Verdana; background-color: #C1BDA3;}</style></head><center><h3>Nanotrasen Security Citation</h3><hr>This security citation has been issued to <br><big>[capitalize(ticket_name)]</big></center><b>Reason</b>:<br><i>[details]</i><hr><center><small>See your local representative at Central Command after the shift is over to resolve this issue.</small><br><img src=\ref['html/images/ntlogo.png']></center>"
|
||||||
|
|
||||||
var/obj/item/paper/sec_ticket/p = new /obj/item/paper/sec_ticket(our_turf)
|
var/obj/item/paper/sec_ticket/p = new /obj/item/paper/sec_ticket(our_turf)
|
||||||
|
|
||||||
|
|||||||
@@ -367,12 +367,14 @@
|
|||||||
configured = 1
|
configured = 1
|
||||||
to_chat(user, span_notice("Card settings set."))
|
to_chat(user, span_notice("Card settings set."))
|
||||||
|
|
||||||
/obj/item/card/id/event/attackby(obj/item/I as obj, var/mob/user)
|
/obj/item/card/id/event/attackby(obj/item/I, var/mob/user)
|
||||||
if(istype(I, /obj/item/card/id) && !accessset)
|
if(istype(I, /obj/item/card/id) && !accessset)
|
||||||
var/obj/item/card/id/O = I
|
var/obj/item/card/id/O = I
|
||||||
access |= O.GetAccess()
|
access |= O.GetAccess()
|
||||||
desc = I.desc
|
desc = I.desc
|
||||||
rank = O.rank
|
rank = O.rank
|
||||||
|
mining_points = O.mining_points
|
||||||
|
survey_points = O.survey_points
|
||||||
to_chat(user, span_notice("You copy the access from \the [I] to \the [src]."))
|
to_chat(user, span_notice("You copy the access from \the [I] to \the [src]."))
|
||||||
user.drop_from_inventory(I)
|
user.drop_from_inventory(I)
|
||||||
qdel(I)
|
qdel(I)
|
||||||
|
|||||||
@@ -253,7 +253,7 @@
|
|||||||
for(var/lang in new_character.client.prefs.alternate_languages)
|
for(var/lang in new_character.client.prefs.alternate_languages)
|
||||||
var/datum/language/chosen_language = GLOB.all_languages[lang]
|
var/datum/language/chosen_language = GLOB.all_languages[lang]
|
||||||
if(chosen_language)
|
if(chosen_language)
|
||||||
if(is_lang_whitelisted(src,chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs)))
|
if(is_lang_whitelisted(M, chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs)))
|
||||||
new_character.add_language(lang)
|
new_character.add_language(lang)
|
||||||
|
|
||||||
SEND_SIGNAL(new_character, COMSIG_HUMAN_DNA_FINALIZED)
|
SEND_SIGNAL(new_character, COMSIG_HUMAN_DNA_FINALIZED)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
/obj/structure/lattice/Initialize(mapload)
|
/obj/structure/lattice/Initialize(mapload)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
if(!(isopenturf(src.loc) || istype(src.loc, /turf/simulated/mineral) || istype(src.loc, /turf/simulated/shuttle/plating/airless/carry)))
|
if(!(isopenturf(src.loc) || ismineralturf(src.loc) || istype(src.loc, /turf/simulated/shuttle/plating/airless/carry)))
|
||||||
return INITIALIZE_HINT_QDEL
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|
||||||
for(var/obj/structure/lattice/LAT in src.loc)
|
for(var/obj/structure/lattice/LAT in src.loc)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
|
|||||||
to_chat(usr, "Error: you are not an admin!")
|
to_chat(usr, "Error: you are not an admin!")
|
||||||
return
|
return
|
||||||
|
|
||||||
var/body = "Options panel for" + span_bold("[M]")
|
var/body = "Options panel for " + span_bold("[M]")
|
||||||
if(M.client)
|
if(M.client)
|
||||||
body += " played by " + span_bold("[M.client]")
|
body += " played by " + span_bold("[M.client]")
|
||||||
body += "\[<A href='byond://?src=\ref[src];[HrefToken()];editrights=show'>[M.client.holder ? M.client.holder.rank_names() : "Player"]</A>\]"
|
body += "\[<A href='byond://?src=\ref[src];[HrefToken()];editrights=show'>[M.client.holder ? M.client.holder.rank_names() : "Player"]</A>\]"
|
||||||
@@ -596,7 +596,7 @@ GLOBAL_VAR_INIT(floorIsLava, 0)
|
|||||||
<A href='byond://?src=\ref[src];[HrefToken()];vsc=default'>Choose a default ZAS setting</A><br>
|
<A href='byond://?src=\ref[src];[HrefToken()];vsc=default'>Choose a default ZAS setting</A><br>
|
||||||
"}
|
"}
|
||||||
|
|
||||||
var/datum/browser/popup = new(owner, "admin2", "Game Panel", 210, 280)
|
var/datum/browser/popup = new(owner, "admin2", "Game Panel", 220, 295)
|
||||||
popup.set_content(dat)
|
popup.set_content(dat)
|
||||||
popup.open()
|
popup.open()
|
||||||
|
|
||||||
|
|||||||
@@ -376,15 +376,15 @@ ADMIN_VERB(game_panel, R_ADMIN|R_SERVER|R_FUN, "Game Panel", "Look at the state
|
|||||||
|
|
||||||
ADMIN_VERB(deadmin, R_NONE, "DeAdmin", "Shed your admin powers.", ADMIN_CATEGORY_MAIN)
|
ADMIN_VERB(deadmin, R_NONE, "DeAdmin", "Shed your admin powers.", ADMIN_CATEGORY_MAIN)
|
||||||
user.holder.deactivate()
|
user.holder.deactivate()
|
||||||
to_chat(src, span_interface("You are now a normal player."))
|
to_chat(user, span_interface("You are now a normal player."))
|
||||||
log_admin("[key_name(src)] deadminned themselves.")
|
log_admin("[key_name(user)] deadminned themselves.")
|
||||||
message_admins("[key_name_admin(src)] deadminned themselves.")
|
message_admins("[key_name_admin(user)] deadminned themselves.")
|
||||||
//BLACKBOX_LOG_ADMIN_VERB("Deadmin")
|
//BLACKBOX_LOG_ADMIN_VERB("Deadmin")
|
||||||
feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
if(isobserver(user.mob))
|
if(isobserver(user.mob))
|
||||||
var/mob/observer/dead/our_mob = user.mob
|
var/mob/observer/dead/our_mob = user.mob
|
||||||
our_mob.visualnet?.removeVisibility(our_mob, src)
|
our_mob.visualnet?.removeVisibility(our_mob, user)
|
||||||
|
|
||||||
/client/proc/toggle_log_hrefs()
|
/client/proc/toggle_log_hrefs()
|
||||||
set name = "Toggle href logging"
|
set name = "Toggle href logging"
|
||||||
|
|||||||
@@ -87,8 +87,8 @@
|
|||||||
text = replacetext(text, "\[/grid\]", "</td></tr></table>")
|
text = replacetext(text, "\[/grid\]", "</td></tr></table>")
|
||||||
text = replacetext(text, "\[row\]", "</td><tr>")
|
text = replacetext(text, "\[row\]", "</td><tr>")
|
||||||
text = replacetext(text, "\[cell\]", "<td>")
|
text = replacetext(text, "\[cell\]", "<td>")
|
||||||
text = replacetext(text, "\[logo\]", "<img src = ntlogo.png>") // Not sure if these would get used but why not
|
text = replacetext(text, "\[logo\]", "<img src=\ref['html/images/ntlogo.png']>") // Not sure if these would get used but why not
|
||||||
text = replacetext(text, "\[sglogo\]", "<img src = sglogo.png>")
|
text = replacetext(text, "\[sglogo\]", "<img src=\ref['html/images/sglogo.png']>")
|
||||||
return text
|
return text
|
||||||
|
|
||||||
// This is used when reading text that went through paper_markup2html(), to reverse it so that edits don't need to replace everything once more to avoid sanitization.
|
// This is used when reading text that went through paper_markup2html(), to reverse it so that edits don't need to replace everything once more to avoid sanitization.
|
||||||
@@ -124,8 +124,8 @@
|
|||||||
text = replacetext(text, "</td></tr></table>", "\[/grid\]")
|
text = replacetext(text, "</td></tr></table>", "\[/grid\]")
|
||||||
text = replacetext(text, "</td><tr>", "\[row\]")
|
text = replacetext(text, "</td><tr>", "\[row\]")
|
||||||
text = replacetext(text, "<td>", "\[cell\]")
|
text = replacetext(text, "<td>", "\[cell\]")
|
||||||
text = replacetext(text, "<img src = ntlogo.png>", "\[logo\]") // Not sure if these would get used but why not
|
text = replacetext(text, "<img src=\ref['html/images/ntlogo.png']>", "\[logo\]") // Not sure if these would get used but why not
|
||||||
text = replacetext(text, "<img src = sglogo.png>", "\[sglogo\]")
|
text = replacetext(text, "<img src=\ref['html/images/sglogo.png']>", "\[sglogo\]")
|
||||||
return text
|
return text
|
||||||
|
|
||||||
#undef NEWSFILE
|
#undef NEWSFILE
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
irc = 1
|
irc = 1
|
||||||
else
|
else
|
||||||
recipient = GLOB.directory[whom]
|
recipient = GLOB.directory[whom]
|
||||||
else if(istype(whom,/client))
|
else if(isclient(whom))
|
||||||
recipient = whom
|
recipient = whom
|
||||||
|
|
||||||
|
|
||||||
@@ -104,7 +104,8 @@
|
|||||||
if(!recipient)
|
if(!recipient)
|
||||||
if(holder)
|
if(holder)
|
||||||
to_chat(src, span_admin_pm_warning("Error: Admin-PM: Client not found."))
|
to_chat(src, span_admin_pm_warning("Error: Admin-PM: Client not found."))
|
||||||
to_chat(src, msg)
|
if(msg)
|
||||||
|
to_chat(src, msg)
|
||||||
else
|
else
|
||||||
current_ticket.MessageNoRecipient(msg)
|
current_ticket.MessageNoRecipient(msg)
|
||||||
return
|
return
|
||||||
@@ -127,11 +128,11 @@
|
|||||||
current_ticket.MessageNoRecipient(msg)
|
current_ticket.MessageNoRecipient(msg)
|
||||||
return
|
return
|
||||||
|
|
||||||
if (src.handle_spam_prevention(msg,MUTE_ADMINHELP))
|
if (src.handle_spam_prevention(MUTE_ADMINHELP))
|
||||||
return
|
return
|
||||||
|
|
||||||
//clean the message if it's not sent by a high-rank admin
|
//clean the message if it's not sent by a high-rank admin
|
||||||
if(!check_rights(R_SERVER|R_DEBUG,0)||irc)//no sending html to the poor bots
|
if(!check_rights(R_SERVER|R_DEBUG, FALSE)||irc)//no sending html to the poor bots
|
||||||
msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN)))
|
msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN)))
|
||||||
if(!msg)
|
if(!msg)
|
||||||
return
|
return
|
||||||
@@ -141,27 +142,27 @@
|
|||||||
var/keywordparsedmsg = keywords_lookup(msg)
|
var/keywordparsedmsg = keywords_lookup(msg)
|
||||||
|
|
||||||
if(irc)
|
if(irc)
|
||||||
to_chat(src, span_admin_pm_notice("PM to-<b>Admins</b>: [rawmsg]"))
|
to_chat(src, span_admin_pm_notice("PM to-" + span_bold("Admins") + ": [rawmsg]"))
|
||||||
admin_ticket_log(src, span_admin_pm_warning("Reply PM from-<b>[key_name(src, TRUE, TRUE)]</b> to <i>IRC</i>: [keywordparsedmsg]"))
|
admin_ticket_log(src, span_admin_pm_warning("Reply PM from-" + span_bold("[key_name(src, TRUE, TRUE)]") + " to " + span_italics("IRC") + ": [keywordparsedmsg]"))
|
||||||
ircreplyamount--
|
ircreplyamount--
|
||||||
send2irc("Reply: [ckey]",rawmsg)
|
send2irc("Reply: [ckey]",rawmsg)
|
||||||
else
|
else
|
||||||
if(recipient.holder)
|
if(recipient.holder)
|
||||||
if(holder) //both are admins
|
if(holder) //both are admins
|
||||||
to_chat(recipient, span_admin_pm_warning("Admin PM from-<b>[key_name(src, recipient, 1)]</b>: [keywordparsedmsg]"))
|
to_chat(recipient, span_admin_pm_warning("Admin PM from-" + span_bold("[key_name(src, recipient, 1)]") + ": [keywordparsedmsg]"))
|
||||||
to_chat(src, span_admin_pm_notice("Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]"))
|
to_chat(src, span_admin_pm_notice("Admin PM to-" + span_bold("[key_name(recipient, src, 1)]") + ": [keywordparsedmsg]"))
|
||||||
|
|
||||||
//omg this is dumb, just fill in both their tickets
|
//omg this is dumb, just fill in both their tickets
|
||||||
var/interaction_message = span_admin_pm_notice("PM from-<b>[key_name(src, recipient, 1)]</b> to-<b>[key_name(recipient, src, 1)]</b>: [keywordparsedmsg]")
|
var/interaction_message = span_admin_pm_notice("PM from-" + span_bold("[key_name(src, recipient, 1)]") + " to-" + span_bold("[key_name(recipient, src, 1)]") + ": [keywordparsedmsg]")
|
||||||
admin_ticket_log(src, interaction_message)
|
admin_ticket_log(src, interaction_message)
|
||||||
if(recipient != src) //reeee
|
if(recipient != src) //reeee
|
||||||
admin_ticket_log(recipient, interaction_message)
|
admin_ticket_log(recipient, interaction_message)
|
||||||
|
|
||||||
else //recipient is an admin but sender is not
|
else //recipient is an admin but sender is not
|
||||||
var/replymsg = span_admin_pm_warning("Reply PM from-<b>[key_name(src, recipient, 1)]</b>: [keywordparsedmsg]")
|
var/replymsg = span_admin_pm_warning("Reply PM from-" + span_bold("[key_name(src, recipient, 1)]") + ": [keywordparsedmsg]")
|
||||||
admin_ticket_log(src, replymsg)
|
admin_ticket_log(src, replymsg)
|
||||||
to_chat(recipient, replymsg)
|
to_chat(recipient, replymsg)
|
||||||
to_chat(src, span_admin_pm_notice("PM to-<b>Admins</b>: [msg]"))
|
to_chat(src, span_admin_pm_notice("PM to-" + span_bold("Admins") + ": [msg]"))
|
||||||
|
|
||||||
//play the recieving admin the adminhelp sound (if they have them enabled)
|
//play the recieving admin the adminhelp sound (if they have them enabled)
|
||||||
if(recipient.prefs?.read_preference(/datum/preference/toggle/holder/play_adminhelp_ping))
|
if(recipient.prefs?.read_preference(/datum/preference/toggle/holder/play_adminhelp_ping))
|
||||||
@@ -173,9 +174,9 @@
|
|||||||
new /datum/ticket(msg, recipient, TRUE, 1)
|
new /datum/ticket(msg, recipient, TRUE, 1)
|
||||||
|
|
||||||
to_chat(recipient, span_admin_pm_warning(span_huge(span_bold("-- Administrator private message --"))))
|
to_chat(recipient, span_admin_pm_warning(span_huge(span_bold("-- Administrator private message --"))))
|
||||||
to_chat(recipient, span_admin_pm_warning("Admin PM from-<b>[key_name(src, recipient, 0)]</b>: [msg]"))
|
to_chat(recipient, span_admin_pm_warning("Admin PM from-" + span_bold("[key_name(src, recipient, 0)]") + ": [msg]"))
|
||||||
to_chat(recipient, span_admin_pm_warning(span_italics("Click on the administrator's name to reply.")))
|
to_chat(recipient, span_admin_pm_warning(span_italics("Click on the administrator's name to reply.")))
|
||||||
to_chat(src, span_admin_pm_notice("Admin PM to-<b>[key_name(recipient, src, 1)]</b>: [msg]"))
|
to_chat(src, span_admin_pm_notice("Admin PM to-" + span_bold("[key_name(recipient, src, 1)]") + ": [msg]"))
|
||||||
|
|
||||||
admin_ticket_log(recipient, span_admin_pm_notice("PM From [key_name_admin(src)]: [keywordparsedmsg]"))
|
admin_ticket_log(recipient, span_admin_pm_notice("PM From [key_name_admin(src)]: [keywordparsedmsg]"))
|
||||||
|
|
||||||
@@ -262,7 +263,7 @@
|
|||||||
log_admin("IRC PM: [sender] -> [key_name(C)] : [msg]")
|
log_admin("IRC PM: [sender] -> [key_name(C)] : [msg]")
|
||||||
|
|
||||||
to_chat(C, span_admin_pm_warning(span_huge(span_bold("-- Administrator private message --"))))
|
to_chat(C, span_admin_pm_warning(span_huge(span_bold("-- Administrator private message --"))))
|
||||||
to_chat(C, span_admin_pm_warning("Admin PM from-<b><a href='byond://?priv_msg=[stealthkey]'>[adminname]</A></b>: [msg]"))
|
to_chat(C, span_admin_pm_warning("Admin PM from-" + span_bold("<a href='byond://?priv_msg=[stealthkey]'>[adminname]</a>") + ": [msg]"))
|
||||||
to_chat(C, span_admin_pm_warning(span_italics("Click on the administrator's name to reply.")))
|
to_chat(C, span_admin_pm_warning(span_italics("Click on the administrator's name to reply.")))
|
||||||
|
|
||||||
admin_ticket_log(C, span_admin_pm_notice("PM From [irc_tagged]: [msg]"))
|
admin_ticket_log(C, span_admin_pm_notice("PM From [irc_tagged]: [msg]"))
|
||||||
|
|||||||
@@ -314,8 +314,8 @@ ADMIN_VERB(narrate_mob_args, R_FUN, "Narrate Entity", "Narrate entities using po
|
|||||||
if(tgui_narrate_mode && tgui_narrate_privacy)
|
if(tgui_narrate_mode && tgui_narrate_privacy)
|
||||||
A.visible_message(span_italics(span_bold("\The [A.name]") + " [message]"), range = 1)
|
A.visible_message(span_italics(span_bold("\The [A.name]") + " [message]"), range = 1)
|
||||||
else if(tgui_narrate_mode && !tgui_narrate_privacy)
|
else if(tgui_narrate_mode && !tgui_narrate_privacy)
|
||||||
A.visible_message(span_bold("\The [A.name]") + "[message]",)
|
A.visible_message(span_bold("\The [A.name]") + " [message]",)
|
||||||
else if(!tgui_narrate_mode && tgui_narrate_privacy)
|
else if(!tgui_narrate_mode && tgui_narrate_privacy)
|
||||||
A.audible_message(span_italics(span_bold("\The [A.name]") + " [message]"), hearing_distance = 1)
|
A.audible_message(span_italics(span_bold("\The [A.name]") + " [message]"), hearing_distance = 1)
|
||||||
else if(!tgui_narrate_mode && !tgui_narrate_privacy)
|
else if(!tgui_narrate_mode && !tgui_narrate_privacy)
|
||||||
A.audible_message(span_bold("\The [A.name]") + "[message]")
|
A.audible_message(span_bold("\The [A.name]") + " [message]")
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
ADMIN_VERB(get_server_logs, R_ADMIN, "Get Server Logs", "View or retrieve logfiles.", ADMIN_CATEGORY_MAIN)
|
ADMIN_VERB(get_server_logs, (R_ADMIN | R_SERVER), "Get Server Logs", "View or retrieve logfiles.", ADMIN_CATEGORY_MAIN)
|
||||||
user.browseserverlogs()
|
user.browseserverlogs()
|
||||||
|
|
||||||
ADMIN_VERB(get_current_logs, R_ADMIN, "Get Current Logs", "View or retrieve logfiles for the current round.", ADMIN_CATEGORY_MAIN)
|
ADMIN_VERB(get_current_logs, (R_ADMIN | R_SERVER), "Get Current Logs", "View or retrieve logfiles for the current round.", ADMIN_CATEGORY_MAIN)
|
||||||
user.browseserverlogs(current=TRUE)
|
user.browseserverlogs(current=TRUE)
|
||||||
|
|
||||||
/client/proc/browseserverlogs(current=FALSE)
|
/client/proc/browseserverlogs(current=FALSE)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/effect/blob/proc/expand(var/turf/T)
|
/obj/effect/blob/proc/expand(var/turf/T)
|
||||||
if(istype(T, /turf/unsimulated/) || istype(T, /turf/space) || (istype(T, /turf/simulated/mineral) && T.density))
|
if(istype(T, /turf/unsimulated/) || isopenturf(T) || (ismineralturf(T) && T.density))
|
||||||
return
|
return
|
||||||
if(istype(T, /turf/simulated/wall))
|
if(istype(T, /turf/simulated/wall))
|
||||||
var/turf/simulated/wall/SW = T
|
var/turf/simulated/wall/SW = T
|
||||||
|
|||||||
@@ -282,7 +282,7 @@
|
|||||||
prefs.last_ip = address //these are gonna be used for banning
|
prefs.last_ip = address //these are gonna be used for banning
|
||||||
prefs.last_id = computer_id //these are gonna be used for banning
|
prefs.last_id = computer_id //these are gonna be used for banning
|
||||||
|
|
||||||
hook_vr("client_new",list(src)) //VOREStation Code. For now this only loads vore prefs, so better put before mob.Login() call but after normal prefs are loaded.
|
prefs_vr = new/datum/vore_preferences(src)
|
||||||
|
|
||||||
. = ..() //calls mob.Login()
|
. = ..() //calls mob.Login()
|
||||||
prefs.sanitize_preferences()
|
prefs.sanitize_preferences()
|
||||||
|
|||||||
@@ -147,8 +147,8 @@ var/global/list/valid_ringtones = list(
|
|||||||
data["pda_type"] = pdachoicelist[pref.pdachoice]
|
data["pda_type"] = pdachoicelist[pref.pdachoice]
|
||||||
data["communicator_visibility"] = pref.communicator_visibility // boolean
|
data["communicator_visibility"] = pref.communicator_visibility // boolean
|
||||||
data["ringtone"] = pref.ringtone
|
data["ringtone"] = pref.ringtone
|
||||||
// data["shoes"] = pref.shoe_hater
|
// data["shoes"] = !pref.shoe_hater // CHOMPRemove
|
||||||
data["jacket"] = pref.no_jacket
|
data["jacket"] = !pref.no_jacket
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|||||||
@@ -235,7 +235,7 @@ var/list/gear_datums = list()
|
|||||||
if(TG.display_name in active_gear_list)
|
if(TG.display_name in active_gear_list)
|
||||||
active_gear_list -= TG.display_name
|
active_gear_list -= TG.display_name
|
||||||
else if(get_total() + TG.cost <= MAX_GEAR_COST)
|
else if(get_total() + TG.cost <= MAX_GEAR_COST)
|
||||||
active_gear_list[TG.display_name] = list()
|
LAZYSET(active_gear_list, TG.display_name, list())
|
||||||
return TOPIC_REFRESH_UPDATE_PREVIEW
|
return TOPIC_REFRESH_UPDATE_PREVIEW
|
||||||
|
|
||||||
if("gear_tweak")
|
if("gear_tweak")
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
GLOB.transaction_devices -= src
|
GLOB.transaction_devices -= src
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
/obj/machinery/cash_register/examine(mob/user as mob)
|
/obj/machinery/cash_register/examine(mob/user)
|
||||||
. = ..(user)
|
. = ..(user)
|
||||||
if(transaction_amount)
|
if(transaction_amount)
|
||||||
. += "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""]."
|
. += "It has a purchase of [transaction_amount] pending[transaction_purpose ? " for [transaction_purpose]" : ""]."
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
. += "It's completely empty."
|
. += "It's completely empty."
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/cash_register/attack_hand(mob/user as mob)
|
/obj/machinery/cash_register/attack_hand(mob/user)
|
||||||
// Don't be accessible from the wrong side of the machine
|
// Don't be accessible from the wrong side of the machine
|
||||||
if(get_dir(src, user) & GLOB.reverse_dir[src.dir]) return
|
if(get_dir(src, user) & GLOB.reverse_dir[src.dir]) return
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
open_cash_box()
|
open_cash_box()
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/cash_register/interact(mob/user as mob)
|
/obj/machinery/cash_register/interact(mob/user)
|
||||||
var/dat = "<html><h2>Cash Register<hr></h2>"
|
var/dat = "<html><h2>Cash Register<hr></h2>"
|
||||||
if (locked)
|
if (locked)
|
||||||
dat += "<a href='byond://?src=\ref[src];choice=toggle_lock'>Unlock</a><br>"
|
dat += "<a href='byond://?src=\ref[src];choice=toggle_lock'>Unlock</a><br>"
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/cash_register/attackby(obj/item/O as obj, user as mob)
|
/obj/machinery/cash_register/attackby(obj/item/O, mob/user)
|
||||||
// Check for a method of paying (ID, PDA, e-wallet, cash, ect.)
|
// Check for a method of paying (ID, PDA, e-wallet, cash, ect.)
|
||||||
var/obj/item/card/id/I = O.GetID()
|
var/obj/item/card/id/I = O.GetID()
|
||||||
if(I)
|
if(I)
|
||||||
@@ -203,6 +203,8 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/cash_register/MouseDrop_T(atom/dropping, mob/user)
|
/obj/machinery/cash_register/MouseDrop_T(atom/dropping, mob/user)
|
||||||
|
if(!isobj(dropping))
|
||||||
|
return
|
||||||
if(Adjacent(dropping) && Adjacent(user) && !user.stat)
|
if(Adjacent(dropping) && Adjacent(user) && !user.stat)
|
||||||
attackby(dropping, user)
|
attackby(dropping, user)
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null
|
|||||||
|
|
||||||
/datum/ErrorViewer/proc/browseTo(var/user, var/html)
|
/datum/ErrorViewer/proc/browseTo(var/user, var/html)
|
||||||
if(user)
|
if(user)
|
||||||
var/datum/browser/popup = new(user, "error_viewer", "Runtime Viewer", 700, 500)
|
var/datum/browser/popup = new(user, "error_viewer", "Runtime Viewer", 900, 500)
|
||||||
popup.add_head_content({"<style>
|
popup.add_head_content({"<style>
|
||||||
.runtime{
|
.runtime{
|
||||||
background-color: #171717;
|
background-color: #171717;
|
||||||
@@ -42,6 +42,7 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
text-indent:-13ch;
|
text-indent:-13ch;
|
||||||
margin-left:13ch;
|
margin-left:13ch;
|
||||||
|
white-space:nowrap;
|
||||||
}
|
}
|
||||||
</style>"})
|
</style>"})
|
||||||
popup.set_content(html)
|
popup.set_content(html)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
arg = "'[arg]'"
|
arg = "'[arg]'"
|
||||||
return arg
|
return arg
|
||||||
|
|
||||||
/proc/ext_python(var/script, var/args, var/scriptsprefix = 1)
|
/proc/ext_python(var/script, var/arguments, var/scriptsprefix = 1)
|
||||||
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
return // VOREStation Edit - Can't exploit shell if we never call shell!
|
||||||
/* Unreachable with above vorestation edit
|
/* Unreachable with above vorestation edit
|
||||||
if(scriptsprefix)
|
if(scriptsprefix)
|
||||||
@@ -25,6 +25,6 @@
|
|||||||
if(world.system_type == MS_WINDOWS)
|
if(world.system_type == MS_WINDOWS)
|
||||||
script = replacetext(script, "/", "\\")
|
script = replacetext(script, "/", "\\")
|
||||||
|
|
||||||
var/command = CONFIG_GET(string/python_path) + " " + script + " " + args // CHOMPEdit
|
var/command = CONFIG_GET(string/python_path) + " " + script + " " + arguments
|
||||||
return shell(command)
|
return shell(command)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -92,7 +92,9 @@
|
|||||||
for (var/atom/movable/A in contents)
|
for (var/atom/movable/A in contents)
|
||||||
A.forceMove(get_turf(src))
|
A.forceMove(get_turf(src))
|
||||||
|
|
||||||
|
food_items = 0
|
||||||
to_chat(user, span_notice("You remove all the solid items from the [src]."))
|
to_chat(user, span_notice("You remove all the solid items from the [src]."))
|
||||||
|
update_icon()
|
||||||
|
|
||||||
/obj/item/reagent_containers/cooking_container/proc/check_contents()
|
/obj/item/reagent_containers/cooking_container/proc/check_contents()
|
||||||
if (contents.len == 0)
|
if (contents.len == 0)
|
||||||
@@ -105,8 +107,6 @@
|
|||||||
|
|
||||||
/obj/item/reagent_containers/cooking_container/AltClick(var/mob/user)
|
/obj/item/reagent_containers/cooking_container/AltClick(var/mob/user)
|
||||||
do_empty(user)
|
do_empty(user)
|
||||||
food_items = 0
|
|
||||||
update_icon()
|
|
||||||
|
|
||||||
//Deletes contents of container.
|
//Deletes contents of container.
|
||||||
//Used when food is burned, before replacing it with a burned mess
|
//Used when food is burned, before replacing it with a burned mess
|
||||||
|
|||||||
@@ -152,7 +152,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
//Drill through the flooring, if any.
|
//Drill through the flooring, if any.
|
||||||
if(istype(get_turf(src), /turf/simulated/mineral))
|
if(ismineralturf(get_turf(src)))
|
||||||
var/turf/simulated/mineral/M = get_turf(src)
|
var/turf/simulated/mineral/M = get_turf(src)
|
||||||
M.GetDrilled()
|
M.GetDrilled()
|
||||||
|
|
||||||
|
|||||||
@@ -256,7 +256,7 @@
|
|||||||
var/obj/item/stack/flag/F = locate() in get_turf(src)
|
var/obj/item/stack/flag/F = locate() in get_turf(src)
|
||||||
|
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!T || !istype(T,/turf/simulated/mineral))
|
if(!T || !ismineralturf(T))
|
||||||
to_chat(user, "The flag won't stand up in this terrain.")
|
to_chat(user, "The flag won't stand up in this terrain.")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ var/list/mining_overlay_cache = list()
|
|||||||
if(LAZYACCESS(ignore_list, T))
|
if(LAZYACCESS(ignore_list, T))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if(istype(T, /turf/simulated/mineral))
|
if(ismineralturf(T))
|
||||||
T.update_icon()
|
T.update_icon()
|
||||||
|
|
||||||
if(istype(T, /turf/simulated/wall/solidrock))
|
if(istype(T, /turf/simulated/wall/solidrock))
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
new /obj/effect/temp_visual/resonance_crush(T)
|
new /obj/effect/temp_visual/resonance_crush(T)
|
||||||
|
|
||||||
// Mineral turfs get drilled!
|
// Mineral turfs get drilled!
|
||||||
if(istype(T, /turf/simulated/mineral))
|
if(ismineralturf(T))
|
||||||
var/turf/simulated/mineral/M = T
|
var/turf/simulated/mineral/M = T
|
||||||
M.GetDrilled()
|
M.GetDrilled()
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
new /obj/effect/temp_visual/resonance_crush(T)
|
new /obj/effect/temp_visual/resonance_crush(T)
|
||||||
|
|
||||||
// Mineral turfs get drilled!
|
// Mineral turfs get drilled!
|
||||||
if(istype(T, /turf/simulated/mineral))
|
if(ismineralturf(T))
|
||||||
var/turf/simulated/mineral/M = T
|
var/turf/simulated/mineral/M = T
|
||||||
M.GetDrilled()
|
M.GetDrilled()
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -220,7 +220,7 @@
|
|||||||
target = null
|
target = null
|
||||||
busy = 0
|
busy = 0
|
||||||
update_icons()
|
update_icons()
|
||||||
else if(istype(A, /turf/space) || istype(A, /turf/simulated/mineral/floor))
|
else if(isopenturf(A) || istype(A, /turf/simulated/mineral/floor))
|
||||||
var/building = 2
|
var/building = 2
|
||||||
if(locate(/obj/structure/lattice, A))
|
if(locate(/obj/structure/lattice, A))
|
||||||
building = 1
|
building = 1
|
||||||
|
|||||||
@@ -125,11 +125,11 @@
|
|||||||
base_species = SPECIES_LLEILL
|
base_species = SPECIES_LLEILL
|
||||||
|
|
||||||
var/list/lleill_abilities = list(/datum/power/lleill/invisibility,
|
var/list/lleill_abilities = list(/datum/power/lleill/invisibility,
|
||||||
/datum/power/lleill/transmute,
|
/datum/power/lleill/transmute,
|
||||||
/datum/power/lleill/rings,
|
/datum/power/lleill/rings,
|
||||||
/datum/power/lleill/contact,
|
/datum/power/lleill/contact,
|
||||||
/datum/power/lleill/alchemy,
|
/datum/power/lleill/alchemy,
|
||||||
/datum/power/lleill/beastform)
|
/datum/power/lleill/beastform)
|
||||||
|
|
||||||
var/list/lleill_ability_datums = list()
|
var/list/lleill_ability_datums = list()
|
||||||
|
|
||||||
@@ -221,7 +221,7 @@
|
|||||||
H.lleill_display.icon_state = "lleill-4"
|
H.lleill_display.icon_state = "lleill-4"
|
||||||
|
|
||||||
/datum/species/proc/update_lleill_hud(var/mob/living/carbon/human/H)
|
/datum/species/proc/update_lleill_hud(var/mob/living/carbon/human/H)
|
||||||
var/relative_energy = ((lleill_energy/lleill_energy_max)*100)
|
var/relative_energy = lleill_energy_max ? ((lleill_energy/lleill_energy_max)*100) : 0
|
||||||
if(H.lleill_display)
|
if(H.lleill_display)
|
||||||
H.lleill_display.invisibility = INVISIBILITY_NONE
|
H.lleill_display.invisibility = INVISIBILITY_NONE
|
||||||
switch(relative_energy)
|
switch(relative_energy)
|
||||||
|
|||||||
@@ -669,7 +669,7 @@
|
|||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
// Used to find a special target for falling on, such as pouncing on someone from above.
|
// Used to find a special target for falling on, such as pouncing on someone from above.
|
||||||
/datum/species/proc/find_fall_target_special(src, landing)
|
/datum/species/proc/find_fall_target_special(source, landing)
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
// Used to override normal fall behaviour. Use only when the species does fall down a level.
|
// Used to override normal fall behaviour. Use only when the species does fall down a level.
|
||||||
|
|||||||
@@ -529,8 +529,8 @@
|
|||||||
to_chat(src, span_warning("You must remain still to blobform!"))
|
to_chat(src, span_warning("You must remain still to blobform!"))
|
||||||
|
|
||||||
//For some reason, there's no way to force drop all the mobs grabbed. This ought to fix that. And be moved elsewhere. Call with caution, doesn't handle cycles.
|
//For some reason, there's no way to force drop all the mobs grabbed. This ought to fix that. And be moved elsewhere. Call with caution, doesn't handle cycles.
|
||||||
/proc/remove_micros(var/src, var/mob/root)
|
/proc/remove_micros(var/source, var/mob/root)
|
||||||
for(var/obj/item/I in src)
|
for(var/obj/item/I in source)
|
||||||
remove_micros(I, root) //Recursion. I'm honestly depending on there being no containment loop, but at the cost of performance that can be fixed too.
|
remove_micros(I, root) //Recursion. I'm honestly depending on there being no containment loop, but at the cost of performance that can be fixed too.
|
||||||
if(istype(I, /obj/item/holder))
|
if(istype(I, /obj/item/holder))
|
||||||
root.remove_from_mob(I)
|
root.remove_from_mob(I)
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
seal_delay = 0
|
seal_delay = 0
|
||||||
var/mob/living/myprotean
|
var/mob/living/myprotean
|
||||||
initial_modules = list(/obj/item/rig_module/protean/syphon, /obj/item/rig_module/protean/armor, /obj/item/rig_module/protean/healing)
|
initial_modules = list(/obj/item/rig_module/protean/syphon, /obj/item/rig_module/protean/armor, /obj/item/rig_module/protean/healing)
|
||||||
|
item_flags = NOSTRIP
|
||||||
|
|
||||||
helm_type = /obj/item/clothing/head/helmet/space/rig/protean //These are important for sprite pointers
|
helm_type = /obj/item/clothing/head/helmet/space/rig/protean //These are important for sprite pointers
|
||||||
boot_type = /obj/item/clothing/shoes/magboots/rig/protean
|
boot_type = /obj/item/clothing/shoes/magboots/rig/protean
|
||||||
|
|||||||
@@ -44,5 +44,6 @@
|
|||||||
else
|
else
|
||||||
voice_sounds_list = DEFAULT_TALK_SOUNDS
|
voice_sounds_list = DEFAULT_TALK_SOUNDS
|
||||||
resize(size_multiplier, animate = FALSE, uncapped = has_large_resize_bounds(), ignore_prefs = TRUE, aura_animation = FALSE)
|
resize(size_multiplier, animate = FALSE, uncapped = has_large_resize_bounds(), ignore_prefs = TRUE, aura_animation = FALSE)
|
||||||
|
init_vore()
|
||||||
|
|
||||||
return .
|
return .
|
||||||
|
|||||||
@@ -1046,7 +1046,7 @@
|
|||||||
for(var/belly_class in vore_fullness_ex)
|
for(var/belly_class in vore_fullness_ex)
|
||||||
reset_belly_lights(belly_class)
|
reset_belly_lights(belly_class)
|
||||||
var/vs_fullness = vore_fullness_ex[belly_class]
|
var/vs_fullness = vore_fullness_ex[belly_class]
|
||||||
if(belly_class == "sleeper")
|
if(belly_class == "sleeper" && vore_selected)
|
||||||
if(sleeper_state == 0 && vore_selected.silicon_belly_overlay_preference == "Sleeper") continue
|
if(sleeper_state == 0 && vore_selected.silicon_belly_overlay_preference == "Sleeper") continue
|
||||||
if(sleeper_state != 0 && !(vs_fullness + 1 > vore_capacity_ex[belly_class]))
|
if(sleeper_state != 0 && !(vs_fullness + 1 > vore_capacity_ex[belly_class]))
|
||||||
if(vore_selected.silicon_belly_overlay_preference == "Sleeper")
|
if(vore_selected.silicon_belly_overlay_preference == "Sleeper")
|
||||||
|
|||||||
@@ -688,7 +688,9 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
|
|||||||
else if (not_hungy)
|
else if (not_hungy)
|
||||||
var/nutrition_cost = 500 + (nutrition / 2)
|
var/nutrition_cost = 500 + (nutrition / 2)
|
||||||
adjust_nutrition(-nutrition_cost)
|
adjust_nutrition(-nutrition_cost)
|
||||||
new /mob/living/simple_mob/vore/alienanimals/teppi(loc, src)
|
new /mob/living/simple_mob/vore/alienanimals/teppi(loc, store_teppi_data(src))
|
||||||
|
qdel(src)
|
||||||
|
return
|
||||||
else
|
else
|
||||||
visible_message("\The [src] whines pathetically...", runemessage = "whines")
|
visible_message("\The [src] whines pathetically...", runemessage = "whines")
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
@@ -767,7 +769,6 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
|
|||||||
GLOB.teppi_count ++
|
GLOB.teppi_count ++
|
||||||
if(teppi1 && !teppi2)
|
if(teppi1 && !teppi2)
|
||||||
inherit_from_baby(teppi1)
|
inherit_from_baby(teppi1)
|
||||||
qdel(teppi1)
|
|
||||||
else if (teppi1 && teppi2)
|
else if (teppi1 && teppi2)
|
||||||
inherit_from_parents(teppi1, teppi2)
|
inherit_from_parents(teppi1, teppi2)
|
||||||
. = ..()
|
. = ..()
|
||||||
@@ -921,26 +922,46 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
|
|||||||
/mob/living/simple_mob/vore/alienanimals/teppi/baby/init_vore() //shouldn't need all the vore bidness if they aren't using it as babbies. They get their tummies when they grow up.
|
/mob/living/simple_mob/vore/alienanimals/teppi/baby/init_vore() //shouldn't need all the vore bidness if they aren't using it as babbies. They get their tummies when they grow up.
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/alienanimals/teppi/proc/store_teppi_data(mob/living/simple_mob/vore/alienanimals/teppi/teppi)
|
||||||
|
var/list/teppi_data = list(
|
||||||
|
"dir" = teppi.dir,
|
||||||
|
"name" = teppi.name,
|
||||||
|
"real_name" = teppi.real_name,
|
||||||
|
"faction" = teppi.faction,
|
||||||
|
"affinity" = teppi.affinity,
|
||||||
|
"affection_factor" = teppi.affection_factor,
|
||||||
|
"nutrition" = teppi.nutrition,
|
||||||
|
"allergen_preference" = teppi.allergen_preference,
|
||||||
|
"allergen_unpreference" = teppi.allergen_unpreference,
|
||||||
|
"color" = teppi.color,
|
||||||
|
"marking_color" = teppi.marking_color,
|
||||||
|
"horn_color" = teppi.horn_color,
|
||||||
|
"eye_color" = teppi.eye_color,
|
||||||
|
"skin_color" = teppi.skin_color,
|
||||||
|
)
|
||||||
|
|
||||||
|
return teppi_data
|
||||||
|
|
||||||
//This sets all the things on adult teppi when they grow from a baby
|
//This sets all the things on adult teppi when they grow from a baby
|
||||||
/mob/living/simple_mob/vore/alienanimals/teppi/proc/inherit_from_baby(mob/living/simple_mob/vore/alienanimals/teppi/baby/baby)
|
/mob/living/simple_mob/vore/alienanimals/teppi/proc/inherit_from_baby(list/teppi_data)
|
||||||
inherit_colors = TRUE
|
inherit_colors = TRUE
|
||||||
inherit_allergen = TRUE
|
inherit_allergen = TRUE
|
||||||
dir = baby.dir
|
dir = teppi_data["dir"]
|
||||||
name = baby.name
|
name = teppi_data["name"]
|
||||||
real_name = baby.real_name
|
real_name = teppi_data["real_name"]
|
||||||
faction = baby.faction
|
faction = teppi_data["faction"]
|
||||||
affinity = baby.affinity
|
affinity = teppi_data["affinity"]
|
||||||
affection_factor = baby.affection_factor
|
affection_factor = teppi_data["affection_factor"]
|
||||||
nutrition = baby.nutrition
|
nutrition = teppi_data["nutrition"]
|
||||||
allergen_preference = baby.allergen_preference
|
allergen_preference = teppi_data["allergen_preference"]
|
||||||
allergen_unpreference = baby.allergen_unpreference
|
allergen_unpreference = teppi_data["allergen_unpreference"]
|
||||||
color = baby.color
|
color = teppi_data["color"]
|
||||||
marking_color = baby.marking_color
|
marking_color = teppi_data["marking_color"]
|
||||||
horn_color = baby.horn_color
|
horn_color = teppi_data["horn_color"]
|
||||||
eye_color = baby.eye_color
|
eye_color = teppi_data["eye_color"]
|
||||||
skin_color = baby.skin_color
|
skin_color = teppi_data["skin_color"]
|
||||||
ghostjoin = 1
|
ghostjoin = 1
|
||||||
GLOB.active_ghost_pods |= src
|
GLOB.active_ghost_pods += src
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
//This sets all the things on baby teppi when they are bred from adult teppi
|
//This sets all the things on baby teppi when they are bred from adult teppi
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
|
|||||||
var/mob/living/simple_mob/animal/passive/chicken/C = new (src.loc)
|
var/mob/living/simple_mob/animal/passive/chicken/C = new (src.loc)
|
||||||
C.ghostjoin = 1
|
C.ghostjoin = 1
|
||||||
C.ghostjoin_icon()
|
C.ghostjoin_icon()
|
||||||
GLOB.active_ghost_pods |= C
|
GLOB.active_ghost_pods += C
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
// Say Lists
|
// Say Lists
|
||||||
|
|||||||
@@ -76,7 +76,6 @@
|
|||||||
living_mob_list += src
|
living_mob_list += src
|
||||||
lastarea = get_area(src)
|
lastarea = get_area(src)
|
||||||
set_focus(src) // VOREStation Add - Key Handling
|
set_focus(src) // VOREStation Add - Key Handling
|
||||||
hook_vr("mob_new",list(src)) //VOREStation Code
|
|
||||||
update_transform() // Some mobs may start bigger or smaller than normal.
|
update_transform() // Some mobs may start bigger or smaller than normal.
|
||||||
. = ..()
|
. = ..()
|
||||||
//return QDEL_HINT_HARDDEL_NOW Just keep track of mob references. They delete SO much faster now.
|
//return QDEL_HINT_HARDDEL_NOW Just keep track of mob references. They delete SO much faster now.
|
||||||
|
|||||||
@@ -44,15 +44,15 @@
|
|||||||
if(!logo)
|
if(!logo)
|
||||||
return
|
return
|
||||||
if(logo == "SolGov")
|
if(logo == "SolGov")
|
||||||
logo = "sglogo.png"
|
logo = 'html/images/sglogo.png'
|
||||||
//VOREStation Edit/Add
|
//VOREStation Edit/Add
|
||||||
else if(logo == "NanoTrasen")
|
else if(logo == "NanoTrasen")
|
||||||
logo = "ntlogo.png"
|
logo = 'html/images/ntlogo.png'
|
||||||
else
|
else
|
||||||
logo = "trader.png"
|
logo = 'html/images/trader.png'
|
||||||
//VOREStation Edit/Add End
|
//VOREStation Edit/Add End
|
||||||
//TODO change logo based on who you're contacting.
|
//TODO change logo based on who you're contacting.
|
||||||
text = "<center><img src = [logo]></br>"
|
text = "<center><img src=\ref[logo]></br>"
|
||||||
text += span_bold("[origin] Quantum Uplink Signed Message") + "<br>"
|
text += span_bold("[origin] Quantum Uplink Signed Message") + "<br>"
|
||||||
text += span_small("Encryption key: [originhash]<br>Challenge: [timehash]") + "<br></center><hr>"
|
text += span_small("Encryption key: [originhash]<br>Challenge: [timehash]") + "<br></center><hr>"
|
||||||
|
|
||||||
|
|||||||
@@ -357,15 +357,13 @@
|
|||||||
t = replacetext(t, "\[grid\]", "<table>")
|
t = replacetext(t, "\[grid\]", "<table>")
|
||||||
t = replacetext(t, "\[/grid\]", "</td></tr></table>")
|
t = replacetext(t, "\[/grid\]", "</td></tr></table>")
|
||||||
t = replacetext(t, "\[row\]", "</td><tr>")
|
t = replacetext(t, "\[row\]", "</td><tr>")
|
||||||
t = replacetext(t, "\[/row\]", "") //CHOMPEDIT: nuking closing statements for rows.
|
t = replacetext(t, "\[/row\]", "")
|
||||||
t = replacetext(t, "\[cell\]", "<td>")
|
t = replacetext(t, "\[cell\]", "<td>")
|
||||||
t = replacetext(t, "\[/cell\]", "") //CHOMPEDIT: nuking closing statements for cells.
|
t = replacetext(t, "\[/cell\]", "")
|
||||||
//CHOMPEdit Start
|
t = replacetext(t, "\[logo\]", "<img src=\ref['html/images/ntlogo.png']>")
|
||||||
t = replacetext(t, "\[logo\]", "<img src = https://raw.githubusercontent.com/CHOMPStation2/CHOMPStation2/master/html/images/ntlogo.png>")
|
t = replacetext(t, "\[sglogo\]", "<img src=\ref['html/images/sglogo.png']>")
|
||||||
t = replacetext(t, "\[sglogo\]", "<img src = https://raw.githubusercontent.com/CHOMPStation2/CHOMPStation2/master/html/images/sglogo.png>")
|
t = replacetext(t, "\[trlogo\]", "<img src=\ref['html/images/trader.png']>")
|
||||||
t = replacetext(t, "\[trlogo\]", "<img src = https://raw.githubusercontent.com/CHOMPStation2/CHOMPStation2/master/html/images/trader.png>")
|
t = replacetext(t, "\[pclogo\]", "<img src=\ref['html/images/pclogo.png']>") // Not available on virgo // CHOMPEnable
|
||||||
t = replacetext(t, "\[pclogo\]", "<img src = https://raw.githubusercontent.com/CHOMPStation2/CHOMPStation2/master/html/images/pclogo.png>")
|
|
||||||
//CHOMPEdit End
|
|
||||||
|
|
||||||
t = "<font face=\"[deffont]\" color=[P ? P.colour : "black"]>[t]</font>"
|
t = "<font face=\"[deffont]\" color=[P ? P.colour : "black"]>[t]</font>"
|
||||||
else // If it is a crayon, and he still tries to use these, make them empty!
|
else // If it is a crayon, and he still tries to use these, make them empty!
|
||||||
@@ -379,8 +377,8 @@
|
|||||||
t = replacetext(t, "\[/table\]", "")
|
t = replacetext(t, "\[/table\]", "")
|
||||||
t = replacetext(t, "\[row\]", "")
|
t = replacetext(t, "\[row\]", "")
|
||||||
t = replacetext(t, "\[cell\]", "")
|
t = replacetext(t, "\[cell\]", "")
|
||||||
t = replacetext(t, "\[/cell\]", "") //CHOMPEDIT: nuking closing statements for cells.
|
t = replacetext(t, "\[/cell\]", "")
|
||||||
t = replacetext(t, "\[/row\]", "") //CHOMPEDIT: nuking closing statements for rows.
|
t = replacetext(t, "\[/row\]", "")
|
||||||
t = replacetext(t, "\[logo\]", "")
|
t = replacetext(t, "\[logo\]", "")
|
||||||
t = replacetext(t, "\[sglogo\]", "")
|
t = replacetext(t, "\[sglogo\]", "")
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@
|
|||||||
return damage * 3 //made for boring holes
|
return damage * 3 //made for boring holes
|
||||||
|
|
||||||
/obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0)
|
/obj/item/projectile/bullet/magnetic/bore/Bump(atom/A, forced=0)
|
||||||
if(istype(A, /turf/simulated/mineral))
|
if(ismineralturf(A))
|
||||||
var/turf/simulated/mineral/MI = A
|
var/turf/simulated/mineral/MI = A
|
||||||
loc = get_turf(A) // Careful.
|
loc = get_turf(A) // Careful.
|
||||||
permutated.Add(A)
|
permutated.Add(A)
|
||||||
|
|||||||
@@ -372,7 +372,7 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/projectile/beam/tungsten/on_impact(var/atom/A)
|
/obj/item/projectile/beam/tungsten/on_impact(var/atom/A)
|
||||||
if(istype(A,/turf/simulated/shuttle/wall) || istype(A,/turf/simulated/wall) || (istype(A,/turf/simulated/mineral) && A.density) || istype(A,/obj/mecha) || istype(A,/obj/machinery/door))
|
if(istype(A,/turf/simulated/shuttle/wall) || istype(A,/turf/simulated/wall) || (ismineralturf(A) && A.density) || istype(A,/obj/mecha) || istype(A,/obj/machinery/door))
|
||||||
var/blast_dir = src.dir
|
var/blast_dir = src.dir
|
||||||
A.visible_message(span_danger("\The [A] begins to glow!"))
|
A.visible_message(span_danger("\The [A] begins to glow!"))
|
||||||
spawn(2 SECONDS)
|
spawn(2 SECONDS)
|
||||||
|
|||||||
@@ -39,6 +39,6 @@
|
|||||||
if(value>=178)
|
if(value>=178)
|
||||||
if(istype(T,/turf/simulated/floor/asteroid))
|
if(istype(T,/turf/simulated/floor/asteroid))
|
||||||
T.ChangeTurf(/turf/simulated/floor/airless/lava)
|
T.ChangeTurf(/turf/simulated/floor/airless/lava)
|
||||||
else if(istype(T,/turf/simulated/mineral))
|
else if(ismineralturf(T))
|
||||||
var/turf/simulated/mineral/M = T
|
var/turf/simulated/mineral/M = T
|
||||||
M.mined_turf = /turf/simulated/floor/airless/lava
|
M.mined_turf = /turf/simulated/floor/airless/lava
|
||||||
|
|||||||
@@ -204,7 +204,9 @@
|
|||||||
OutputBeaker = null
|
OutputBeaker = null
|
||||||
|
|
||||||
if("adjust temp")
|
if("adjust temp")
|
||||||
target_temp = tgui_input_number(user, "Choose a target temperature.", "Temperature.", T20C, max_temp, min_temp, round_value = FALSE)
|
var/new_temp = tgui_input_number(user, "Choose a target temperature.", "Temperature.", T20C, max_temp, min_temp, round_value = FALSE)
|
||||||
|
if(isnum(new_temp))
|
||||||
|
target_temp = new_temp
|
||||||
|
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
if(prefs.muted & MUTE_ADMINHELP)
|
if(prefs.muted & MUTE_ADMINHELP)
|
||||||
to_chat(src, span_danger("Error: Mentor-PM: You cannot send adminhelps (Muted)."))
|
to_chat(src, span_danger("Error: Mentor-PM: You cannot send adminhelps (Muted)."))
|
||||||
return
|
return
|
||||||
if(handle_spam_prevention(msg,MUTE_ADMINHELP))
|
if(handle_spam_prevention(MUTE_ADMINHELP))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!msg)
|
if(!msg)
|
||||||
@@ -91,7 +91,7 @@ ADMIN_VERB(cmd_mentor_ticket_panel, (R_ADMIN|R_SERVER|R_MOD|R_MENTOR), "Mentor T
|
|||||||
if(prefs.muted & MUTE_ADMINHELP)
|
if(prefs.muted & MUTE_ADMINHELP)
|
||||||
to_chat(src, span_danger("Error: Admin-PM: You cannot send adminhelps (Muted)."))
|
to_chat(src, span_danger("Error: Admin-PM: You cannot send adminhelps (Muted)."))
|
||||||
return
|
return
|
||||||
if(handle_spam_prevention(msg,MUTE_ADMINHELP))
|
if(handle_spam_prevention(MUTE_ADMINHELP))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!msg)
|
if(!msg)
|
||||||
@@ -261,7 +261,7 @@ ADMIN_VERB(cmd_mentor_ticket_panel, (R_ADMIN|R_SERVER|R_MOD|R_MENTOR), "Mentor T
|
|||||||
to_chat(src, span_mentor_notice("Message: [msg]"))
|
to_chat(src, span_mentor_notice("Message: [msg]"))
|
||||||
return
|
return
|
||||||
|
|
||||||
if (src.handle_spam_prevention(msg,MUTE_ADMINHELP))
|
if (src.handle_spam_prevention(MUTE_ADMINHELP))
|
||||||
return
|
return
|
||||||
|
|
||||||
msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN)))
|
msg = trim(sanitize(copytext(msg,1,MAX_MESSAGE_LEN)))
|
||||||
|
|||||||
@@ -662,7 +662,10 @@
|
|||||||
var/obj/screen/fullscreen/F = L.overlay_fullscreen("belly", /obj/screen/fullscreen/belly, severity) // preserving save data
|
var/obj/screen/fullscreen/F = L.overlay_fullscreen("belly", /obj/screen/fullscreen/belly, severity) // preserving save data
|
||||||
var/datum/belly_overlays/lookup_belly_path = text2path("/datum/belly_overlays/[lowertext(belly_fullscreen)]")
|
var/datum/belly_overlays/lookup_belly_path = text2path("/datum/belly_overlays/[lowertext(belly_fullscreen)]")
|
||||||
if(!lookup_belly_path)
|
if(!lookup_belly_path)
|
||||||
CRASH("Icon datum was not defined for [belly_fullscreen]")
|
var/used_fullscreen = belly_fullscreen
|
||||||
|
to_chat(owner, span_warning("The belly overlay ([used_fullscreen]) you've selected for [src] no longer exists. Please reselect your overlay."))
|
||||||
|
belly_fullscreen = null
|
||||||
|
CRASH("Icon datum was not defined for [used_fullscreen]")
|
||||||
|
|
||||||
var/alpha = min(belly_fullscreen_alpha, L.max_voreoverlay_alpha)
|
var/alpha = min(belly_fullscreen_alpha, L.max_voreoverlay_alpha)
|
||||||
F.icon = initial(lookup_belly_path.belly_icon)
|
F.icon = initial(lookup_belly_path.belly_icon)
|
||||||
|
|||||||
@@ -220,6 +220,8 @@
|
|||||||
if((mode_flags & DM_FLAG_STRIPPING) && H.strip_pref) //Stripping pref check
|
if((mode_flags & DM_FLAG_STRIPPING) && H.strip_pref) //Stripping pref check
|
||||||
for(var/slot in slots)
|
for(var/slot in slots)
|
||||||
var/obj/item/I = H.get_equipped_item(slot = slot)
|
var/obj/item/I = H.get_equipped_item(slot = slot)
|
||||||
|
if(I.flags & NOSTRIP)
|
||||||
|
continue
|
||||||
if(I && H.unEquip(I, force = FALSE))
|
if(I && H.unEquip(I, force = FALSE))
|
||||||
handle_digesting_item(I)
|
handle_digesting_item(I)
|
||||||
digestion_noise_chance = 25
|
digestion_noise_chance = 25
|
||||||
|
|||||||
@@ -39,19 +39,6 @@
|
|||||||
/mob/living/proc/handle_special_unlocks()
|
/mob/living/proc/handle_special_unlocks()
|
||||||
return
|
return
|
||||||
|
|
||||||
//
|
|
||||||
// Hook for generic creation of stuff on new creatures
|
|
||||||
//
|
|
||||||
/hook/living_new/proc/vore_setup(mob/living/M)
|
|
||||||
|
|
||||||
//Tries to load prefs if a client is present otherwise gives freebie stomach
|
|
||||||
spawn(2 SECONDS)
|
|
||||||
if(!QDELETED(M))
|
|
||||||
M.init_vore()
|
|
||||||
|
|
||||||
//return TRUE to hook-caller
|
|
||||||
return TRUE
|
|
||||||
|
|
||||||
/mob/proc/init_vore()
|
/mob/proc/init_vore()
|
||||||
//Something else made organs, meanwhile.
|
//Something else made organs, meanwhile.
|
||||||
if(!isnewplayer(src))
|
if(!isnewplayer(src))
|
||||||
@@ -1436,7 +1423,10 @@
|
|||||||
to_chat(user, span_vwarning("This person's prefs dont allow that!"))
|
to_chat(user, span_vwarning("This person's prefs dont allow that!"))
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
var/obj/belly/RTB = tgui_input_list(user, "Choose which vore belly to transfer from", "Select Belly", vore_organs)
|
if(!LAZYLEN(TG.vore_organs))
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
var/obj/belly/RTB = tgui_input_list(user, "Choose which vore belly to transfer from", "Select Belly", TG.vore_organs)
|
||||||
if(!RTB)
|
if(!RTB)
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
|
|||||||
@@ -33,13 +33,6 @@
|
|||||||
/client
|
/client
|
||||||
var/datum/vore_preferences/prefs_vr
|
var/datum/vore_preferences/prefs_vr
|
||||||
|
|
||||||
/hook/client_new/proc/add_prefs_vr(client/C)
|
|
||||||
C.prefs_vr = new/datum/vore_preferences(C)
|
|
||||||
if(C.prefs_vr)
|
|
||||||
return TRUE
|
|
||||||
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
/datum/vore_preferences
|
/datum/vore_preferences
|
||||||
//Actual preferences
|
//Actual preferences
|
||||||
var/digestable = TRUE
|
var/digestable = TRUE
|
||||||
|
|||||||
@@ -1,40 +1,2 @@
|
|||||||
//The base hooks themselves
|
|
||||||
|
|
||||||
//New() hooks
|
|
||||||
/hook/client_new
|
|
||||||
|
|
||||||
/hook/mob_new
|
|
||||||
|
|
||||||
/hook/living_new
|
|
||||||
|
|
||||||
/hook/carbon_new
|
|
||||||
|
|
||||||
/hook/human_new
|
|
||||||
|
|
||||||
/hook/simple_mob_new
|
|
||||||
|
|
||||||
//Hooks for interactions
|
|
||||||
/hook/living_attackby
|
|
||||||
|
|
||||||
// Hook for when a mob de-spawns!
|
// Hook for when a mob de-spawns!
|
||||||
/hook/despawn
|
/hook/despawn
|
||||||
|
|
||||||
//
|
|
||||||
//Hook helpers to expand hooks to others
|
|
||||||
//
|
|
||||||
/hook/mob_new/proc/chain_hooks(mob/M)
|
|
||||||
var/result = 1
|
|
||||||
if(isliving(M))
|
|
||||||
if(!hook_vr("living_new",args))
|
|
||||||
result = 0
|
|
||||||
|
|
||||||
if(iscarbon(M))
|
|
||||||
if(!hook_vr("carbon_new",args))
|
|
||||||
result = 0
|
|
||||||
|
|
||||||
if(ishuman(M))
|
|
||||||
if(!hook_vr("human_new",args))
|
|
||||||
result = 0
|
|
||||||
|
|
||||||
//Return 1 to superhook
|
|
||||||
return result
|
|
||||||
|
|||||||
@@ -184,13 +184,6 @@
|
|||||||
L.resize(new_size/100, uncapped = has_large_resize_bounds(), ignore_prefs = TRUE)
|
L.resize(new_size/100, uncapped = has_large_resize_bounds(), ignore_prefs = TRUE)
|
||||||
//CHOMPEDIT - I don't need to be informed every time a prommie changes sizes
|
//CHOMPEDIT - I don't need to be informed every time a prommie changes sizes
|
||||||
|
|
||||||
/*
|
|
||||||
//Add the set_size() proc to usable verbs. By commenting this out, we can leave the proc and hand it to species that need it.
|
|
||||||
/hook/living_new/proc/resize_setup(mob/living/H)
|
|
||||||
add_verb(H, /mob/living/proc/set_size)
|
|
||||||
return 1
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to scoop up this mob up into M's hands, if the size difference is large enough.
|
* Attempt to scoop up this mob up into M's hands, if the size difference is large enough.
|
||||||
* @return false if normal code should continue, 1 to prevent normal code.
|
* @return false if normal code should continue, 1 to prevent normal code.
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ if(attempt_vr(object,proc to call,args)) return
|
|||||||
The proc you're attemping should return nonzero values on success.
|
The proc you're attemping should return nonzero values on success.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/proc/attempt_vr(callon, procname, list/args=null)
|
/proc/attempt_vr(callon, procname, list/arguments=null)
|
||||||
try
|
try
|
||||||
if(!callon || !procname)
|
if(!callon || !procname)
|
||||||
error("attempt_vr: Invalid obj/proc: [callon]/[procname]")
|
error("attempt_vr: Invalid obj/proc: [callon]/[procname]")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
var/result = call(callon,procname)(arglist(args))
|
var/result = call(callon,procname)(arglist(arguments))
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ if(hook_vr(proc,args)) return
|
|||||||
|
|
||||||
The hooks you're calling should return nonzero values on success.
|
The hooks you're calling should return nonzero values on success.
|
||||||
*/
|
*/
|
||||||
/proc/hook_vr(hook, list/args=null)
|
/proc/hook_vr(hook, list/arguments=null)
|
||||||
try
|
try
|
||||||
var/hook_path = text2path("/hook/[hook]")
|
var/hook_path = text2path("/hook/[hook]")
|
||||||
if(!hook_path)
|
if(!hook_path)
|
||||||
@@ -52,7 +52,7 @@ The hooks you're calling should return nonzero values on success.
|
|||||||
var/hook_instance = new hook_path
|
var/hook_instance = new hook_path
|
||||||
var/status = 1
|
var/status = 1
|
||||||
for(var/P in typesof("[hook_path]/proc"))
|
for(var/P in typesof("[hook_path]/proc"))
|
||||||
if(!call(hook_instance, P)(arglist(args)))
|
if(!call(hook_instance, P)(arglist(arguments)))
|
||||||
error("hook_vr: Hook '[P]' failed or runtimed.")
|
error("hook_vr: Hook '[P]' failed or runtimed.")
|
||||||
status = 0
|
status = 0
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
/obj/machinery/giga_drill/Bump(atom/A)
|
/obj/machinery/giga_drill/Bump(atom/A)
|
||||||
if(active && !drilling_turf)
|
if(active && !drilling_turf)
|
||||||
if(istype(A,/turf/simulated/mineral))
|
if(ismineralturf(A))
|
||||||
var/turf/simulated/mineral/M = A
|
var/turf/simulated/mineral/M = A
|
||||||
drilling_turf = get_turf(src)
|
drilling_turf = get_turf(src)
|
||||||
src.visible_message(span_bold("\The [src]") + " begins to drill into \the [M].")
|
src.visible_message(span_bold("\The [src]") + " begins to drill into \the [M].")
|
||||||
|
|||||||
@@ -117,7 +117,7 @@
|
|||||||
/obj/item/core_sampler/proc/sample_item(var/item_to_sample, var/mob/user)
|
/obj/item/core_sampler/proc/sample_item(var/item_to_sample, var/mob/user)
|
||||||
var/datum/geosample/geo_data
|
var/datum/geosample/geo_data
|
||||||
|
|
||||||
if(istype(item_to_sample, /turf/simulated/mineral))
|
if(ismineralturf(item_to_sample))
|
||||||
var/turf/simulated/mineral/T = item_to_sample
|
var/turf/simulated/mineral/T = item_to_sample
|
||||||
T.geologic_data.UpdateNearbyArtifactInfo(T)
|
T.geologic_data.UpdateNearbyArtifactInfo(T)
|
||||||
geo_data = T.geologic_data
|
geo_data = T.geologic_data
|
||||||
|
|||||||
@@ -167,7 +167,7 @@
|
|||||||
add_overlay("shield2")
|
add_overlay("shield2")
|
||||||
visible_message(span_blue("[icon2html(suspension_field,viewers(src))] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"]."))
|
visible_message(span_blue("[icon2html(suspension_field,viewers(src))] [suspension_field] gently absconds [collected > 1 ? "something" : "several things"]."))
|
||||||
else
|
else
|
||||||
if(istype(T,/turf/simulated/mineral) || istype(T,/turf/simulated/wall))
|
if(ismineralturf(T) || istype(T,/turf/simulated/wall))
|
||||||
suspension_field.icon_state = "shieldsparkles"
|
suspension_field.icon_state = "shieldsparkles"
|
||||||
else
|
else
|
||||||
suspension_field.icon_state = "shield2"
|
suspension_field.icon_state = "shield2"
|
||||||
|
|||||||
@@ -97,9 +97,7 @@ export const AtmosControlContent = (props) => {
|
|||||||
</Tabs.Tab>
|
</Tabs.Tab>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Stack.Item>
|
</Stack.Item>
|
||||||
<Stack.Item grow m={2}>
|
<Stack.Item grow>{tab[tabIndex]}</Stack.Item>
|
||||||
{tab[tabIndex]}
|
|
||||||
</Stack.Item>
|
|
||||||
</Stack>
|
</Stack>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user