mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Master into dev-freeze.
This commit is contained in:
@@ -47,9 +47,8 @@ proc/sql_report_death(var/mob/living/carbon/human/H)
|
|||||||
if(!H.key || !H.mind)
|
if(!H.key || !H.mind)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/turf/T = H.loc
|
var/area/placeofdeath = get_area(H)
|
||||||
var/area/placeofdeath = get_area(T.loc)
|
var/podname = placeofdeath ? placeofdeath.name : "Unknown area"
|
||||||
var/podname = placeofdeath.name
|
|
||||||
|
|
||||||
var/sqlname = sanitizeSQL(H.real_name)
|
var/sqlname = sanitizeSQL(H.real_name)
|
||||||
var/sqlkey = sanitizeSQL(H.key)
|
var/sqlkey = sanitizeSQL(H.key)
|
||||||
@@ -82,9 +81,8 @@ proc/sql_report_cyborg_death(var/mob/living/silicon/robot/H)
|
|||||||
if(!H.key || !H.mind)
|
if(!H.key || !H.mind)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/turf/T = H.loc
|
var/area/placeofdeath = get_area(H)
|
||||||
var/area/placeofdeath = get_area(T.loc)
|
var/podname = placeofdeath ? placeofdeath.name : "Unknown area"
|
||||||
var/podname = placeofdeath.name
|
|
||||||
|
|
||||||
var/sqlname = sanitizeSQL(H.real_name)
|
var/sqlname = sanitizeSQL(H.real_name)
|
||||||
var/sqlkey = sanitizeSQL(H.key)
|
var/sqlkey = sanitizeSQL(H.key)
|
||||||
|
|||||||
@@ -158,7 +158,7 @@
|
|||||||
for(var/mob/living/silicon/ai/O in living_mob_list)
|
for(var/mob/living/silicon/ai/O in living_mob_list)
|
||||||
if(!O.client) continue
|
if(!O.client) continue
|
||||||
if(U.name == "Unknown") O << "<b>[U]</b> holds \a [itemname] up to one of your cameras ..."
|
if(U.name == "Unknown") O << "<b>[U]</b> holds \a [itemname] up to one of your cameras ..."
|
||||||
else O << "<b><a href='byond://?src=\ref[O];track2=\ref[O];track=\ref[U]'>[U]</a></b> holds \a [itemname] up to one of your cameras ..."
|
else O << "<b><a href='byond://?src=\ref[O];track2=\ref[O];track=\ref[U];trackname=[U.name]'>[U]</a></b> holds \a [itemname] up to one of your cameras ..."
|
||||||
O << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", itemname, info), text("window=[]", itemname))
|
O << browse(text("<HTML><HEAD><TITLE>[]</TITLE></HEAD><BODY><TT>[]</TT></BODY></HTML>", itemname, info), text("window=[]", itemname))
|
||||||
for(var/mob/O in player_list)
|
for(var/mob/O in player_list)
|
||||||
if (istype(O.machine, /obj/machinery/computer/security))
|
if (istype(O.machine, /obj/machinery/computer/security))
|
||||||
|
|||||||
@@ -669,6 +669,17 @@ var/list/admin_verbs_mentor = list(
|
|||||||
log_admin("[key_name(usr)] used 'kill air'.")
|
log_admin("[key_name(usr)] used 'kill air'.")
|
||||||
message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1)
|
message_admins("\blue [key_name_admin(usr)] used 'kill air'.", 1)
|
||||||
|
|
||||||
|
/client/proc/readmin_self()
|
||||||
|
set name = "Re-Admin self"
|
||||||
|
set category = "Admin"
|
||||||
|
|
||||||
|
if(deadmin_holder)
|
||||||
|
deadmin_holder.reassociate()
|
||||||
|
log_admin("[src] re-admined themself.")
|
||||||
|
message_admins("[src] re-admined themself.", 1)
|
||||||
|
src << "<span class='interface'>You now have the keys to control the planet, or atleast a small space station</span>"
|
||||||
|
verbs -= /client/proc/readmin_self
|
||||||
|
|
||||||
/client/proc/deadmin_self()
|
/client/proc/deadmin_self()
|
||||||
set name = "De-admin self"
|
set name = "De-admin self"
|
||||||
set category = "Admin"
|
set category = "Admin"
|
||||||
@@ -679,6 +690,7 @@ var/list/admin_verbs_mentor = list(
|
|||||||
message_admins("[src] deadmined themself.", 1)
|
message_admins("[src] deadmined themself.", 1)
|
||||||
deadmin()
|
deadmin()
|
||||||
src << "<span class='interface'>You are now a normal player.</span>"
|
src << "<span class='interface'>You are now a normal player.</span>"
|
||||||
|
verbs |= /client/proc/readmin_self
|
||||||
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!
|
||||||
|
|
||||||
/client/proc/toggle_log_hrefs()
|
/client/proc/toggle_log_hrefs()
|
||||||
|
|||||||
@@ -34,8 +34,16 @@ var/list/admin_datums = list()
|
|||||||
if(owner)
|
if(owner)
|
||||||
admins -= owner
|
admins -= owner
|
||||||
owner.remove_admin_verbs()
|
owner.remove_admin_verbs()
|
||||||
|
owner.deadmin_holder = owner.holder
|
||||||
owner.holder = null
|
owner.holder = null
|
||||||
owner = null
|
|
||||||
|
/datum/admins/proc/reassociate()
|
||||||
|
if(owner)
|
||||||
|
admins += owner
|
||||||
|
owner.holder = src
|
||||||
|
owner.deadmin_holder = null
|
||||||
|
owner.add_admin_verbs()
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
checks if usr is an admin with at least ONE of the flags in rights_required. (Note, they don't need all the flags)
|
checks if usr is an admin with at least ONE of the flags in rights_required. (Note, they don't need all the flags)
|
||||||
@@ -82,8 +90,7 @@ you will have to do something like if(client.holder.rights & R_ADMIN) yourself.
|
|||||||
|
|
||||||
|
|
||||||
/client/proc/deadmin()
|
/client/proc/deadmin()
|
||||||
admin_datums -= ckey
|
|
||||||
if(holder)
|
if(holder)
|
||||||
holder.disassociate()
|
holder.disassociate()
|
||||||
del(holder)
|
//del(holder)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
//ADMIN THINGS//
|
//ADMIN THINGS//
|
||||||
////////////////
|
////////////////
|
||||||
var/datum/admins/holder = null
|
var/datum/admins/holder = null
|
||||||
|
var/datum/admins/deadmin_holder = null
|
||||||
var/buildmode = 0
|
var/buildmode = 0
|
||||||
|
|
||||||
var/last_message = "" //Contains the last message sent by this client - used to protect against copy-paste spamming.
|
var/last_message = "" //Contains the last message sent by this client - used to protect against copy-paste spamming.
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
EC.process()
|
EC.process()
|
||||||
|
|
||||||
/datum/event_manager/proc/event_complete(var/datum/event/E)
|
/datum/event_manager/proc/event_complete(var/datum/event/E)
|
||||||
if(!E.event_meta) // datum/event is used here and there for random reasons, maintaining "backwards compatibility"
|
if(!E.event_meta || !E.severity) // datum/event is used here and there for random reasons, maintaining "backwards compatibility"
|
||||||
log_debug("Event of '[E.type]' with missing meta-data has completed.")
|
log_debug("Event of '[E.type]' with missing meta-data has completed.")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -858,9 +858,11 @@ note dizziness decrements automatically in the mob's Life() proc.
|
|||||||
canmove = 1
|
canmove = 1
|
||||||
pixel_y = V.mob_offset_y
|
pixel_y = V.mob_offset_y
|
||||||
else if(buckled)
|
else if(buckled)
|
||||||
if(buckled.buckle_lying != -1) lying = buckled.buckle_lying
|
if(buckled.buckle_lying != -1)
|
||||||
if (!buckled.buckle_movable)
|
lying = buckled.buckle_lying
|
||||||
anchored = 1
|
// var/movable is defined at /obj/structure/stool/bed level
|
||||||
|
// If we're buckled to something else, such as vines, assume it's stationary.
|
||||||
|
if (!istype(buckled) || !buckled.movable) anchored = 1
|
||||||
canmove = 0
|
canmove = 0
|
||||||
else
|
else
|
||||||
anchored = 0
|
anchored = 0
|
||||||
|
|||||||
@@ -392,6 +392,9 @@ nanoui is used to open and update nano browser uis
|
|||||||
* @return nothing
|
* @return nothing
|
||||||
*/
|
*/
|
||||||
/datum/nanoui/proc/open()
|
/datum/nanoui/proc/open()
|
||||||
|
if(!user.client)
|
||||||
|
return
|
||||||
|
|
||||||
var/window_size = ""
|
var/window_size = ""
|
||||||
if (width && height)
|
if (width && height)
|
||||||
window_size = "size=[width]x[height];"
|
window_size = "size=[width]x[height];"
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
|||||||
if(!pale)
|
if(!pale)
|
||||||
pale = 1
|
pale = 1
|
||||||
update_body()
|
update_body()
|
||||||
eye_blurry += 6
|
eye_blurry = max(eye_blurry,6)
|
||||||
if(oxyloss < 50)
|
if(oxyloss < 50)
|
||||||
oxyloss += 10
|
oxyloss += 10
|
||||||
oxyloss += 1
|
oxyloss += 1
|
||||||
@@ -329,4 +329,4 @@ proc/blood_splatter(var/target,var/datum/reagent/blood/source,var/large)
|
|||||||
if(source.data["virus2"])
|
if(source.data["virus2"])
|
||||||
B.virus2 = virus_copylist(source.data["virus2"])
|
B.virus2 = virus_copylist(source.data["virus2"])
|
||||||
|
|
||||||
return B
|
return B
|
||||||
|
|||||||
@@ -11,16 +11,17 @@ proc/infection_check(var/mob/living/carbon/M, var/vector = "Airborne")
|
|||||||
if(M.internal)
|
if(M.internal)
|
||||||
score = 6 //not breathing infected air helps greatly
|
score = 6 //not breathing infected air helps greatly
|
||||||
var/obj/item/I = M.wear_mask
|
var/obj/item/I = M.wear_mask
|
||||||
|
|
||||||
//masks provide a small bonus and can replace overall bio protection
|
//masks provide a small bonus and can replace overall bio protection
|
||||||
score = max(score, round(0.06*I.armor["bio"]))
|
if(I)
|
||||||
if (istype(I, /obj/item/clothing/mask))
|
score = max(score, round(0.06*I.armor["bio"]))
|
||||||
score += 1 //this should be added after
|
if (istype(I, /obj/item/clothing/mask))
|
||||||
|
score += 1 //this should be added after
|
||||||
|
|
||||||
if("Contact")
|
if("Contact")
|
||||||
if(istype(M, /mob/living/carbon/human))
|
if(istype(M, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = M
|
var/mob/living/carbon/human/H = M
|
||||||
|
|
||||||
//gloves provide a larger bonus
|
//gloves provide a larger bonus
|
||||||
if (istype(H.gloves, /obj/item/clothing/gloves))
|
if (istype(H.gloves, /obj/item/clothing/gloves))
|
||||||
score += 2
|
score += 2
|
||||||
@@ -45,12 +46,12 @@ proc/infection_check(var/mob/living/carbon/M, var/vector = "Airborne")
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
var/protection = M.getarmor(null, "bio") //gets the full body bio armour value, weighted by body part coverage.
|
var/protection = M.getarmor(null, "bio") //gets the full body bio armour value, weighted by body part coverage.
|
||||||
|
|
||||||
if (vector == "Airborne")
|
if (vector == "Airborne")
|
||||||
var/obj/item/I = M.wear_mask
|
var/obj/item/I = M.wear_mask
|
||||||
if (istype(I))
|
if (istype(I))
|
||||||
protection = max(protection, round(0.06*I.armor["bio"]))
|
protection = max(protection, round(0.06*I.armor["bio"]))
|
||||||
|
|
||||||
return prob(protection)
|
return prob(protection)
|
||||||
|
|
||||||
//Checks if table-passing table can reach target (5 tile radius)
|
//Checks if table-passing table can reach target (5 tile radius)
|
||||||
@@ -134,7 +135,7 @@ proc/airborne_can_reach(turf/source, turf/target)
|
|||||||
// log_debug("Attempting virus [ID]")
|
// log_debug("Attempting virus [ID]")
|
||||||
var/datum/disease2/disease/V = virus2[ID]
|
var/datum/disease2/disease/V = virus2[ID]
|
||||||
if(V.spreadtype != vector) continue
|
if(V.spreadtype != vector) continue
|
||||||
|
|
||||||
//It's hard to get other people sick if you're in an airtight suit.
|
//It's hard to get other people sick if you're in an airtight suit.
|
||||||
if(!infection_spreading_check(src, V.spreadtype)) continue
|
if(!infection_spreading_check(src, V.spreadtype)) continue
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user