Merge remote-tracking branch 'origin/master' into semi-sync
This commit is contained in:
@@ -98,7 +98,7 @@
|
||||
var/pck = pick("assasinate","protect")
|
||||
switch(pck)
|
||||
if("assasinate")
|
||||
var/datum/objective/assassinate/A = new
|
||||
var/datum/objective/assassinate/once/A = new
|
||||
A.owner = owner
|
||||
var/list/owners = A.get_owners()
|
||||
A.find_target(owners,protection)
|
||||
|
||||
@@ -873,9 +873,9 @@
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight
|
||||
name = "cydonian helmet"
|
||||
desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
|
||||
icon_state = "knight_cydonia"
|
||||
icon_state = "hardsuit0-knight_cydonia"
|
||||
item_state = "knight_yellow"
|
||||
hardsuit_type = null
|
||||
hardsuit_type = "knight_cydonia"
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
heat_protection = HEAD
|
||||
|
||||
@@ -256,7 +256,7 @@ Contains:
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert
|
||||
armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 50)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC
|
||||
|
||||
//ERT Security
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec
|
||||
|
||||
@@ -133,12 +133,12 @@
|
||||
return TRUE
|
||||
|
||||
/datum/job/proc/GetAntagRep()
|
||||
. = CONFIG_GET(keyed_list/antag_rep)[lowertext(title)]
|
||||
. = CONFIG_GET(keyed_list/antag_rep)[ckey(title)]
|
||||
if(. == null)
|
||||
return antag_rep
|
||||
|
||||
/datum/job/proc/GetThreat()
|
||||
. = CONFIG_GET(keyed_list/job_threat)[lowertext(title)]
|
||||
. = CONFIG_GET(keyed_list/job_threat)[ckey(title)]
|
||||
if(. == null)
|
||||
return threat
|
||||
|
||||
|
||||
@@ -155,16 +155,18 @@
|
||||
penalize = client.prefs.respawn_restrictions_active
|
||||
client.prefs.respawn_restrictions_active = penalize
|
||||
|
||||
to_chat(src, "<span class='userdanger'>You have been respawned to the lobby. \
|
||||
message_admins("[key_name_admin(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
log_game("[key_name(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
var/mob/dead/new_player/N = transfer_to_lobby()
|
||||
|
||||
to_chat(N, "<span class='userdanger'>You have been respawned to the lobby. \
|
||||
Remember to take heed of rules regarding round knowledge - notably, that ALL past lives are forgotten. \
|
||||
Any character you join as has NO knowledge of round events unless specified otherwise by an admin.</span>")
|
||||
|
||||
message_admins("[key_name_admin(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
log_game("[key_name(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
transfer_to_lobby()
|
||||
|
||||
/**
|
||||
* Actual proc that removes us and puts us back on lobby
|
||||
*
|
||||
* Returns the new mob.
|
||||
*/
|
||||
/mob/dead/observer/proc/transfer_to_lobby()
|
||||
if(!client) // if no one's in us we can just be deleted
|
||||
@@ -179,3 +181,4 @@
|
||||
|
||||
var/mob/dead/new_player/M = new /mob/dead/new_player
|
||||
M.ckey = ckey
|
||||
return M
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
silent = FALSE
|
||||
losebreath = 0
|
||||
|
||||
if(!gibbed)
|
||||
if(!gibbed && !HAS_TRAIT(src, TRAIT_DEATHCOMA))
|
||||
emote("deathgasp")
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
AddComponent(/datum/component/mood)
|
||||
AddComponent(/datum/component/combat_mode)
|
||||
AddElement(/datum/element/flavor_text/carbon, _name = "Flavor Text", _save_key = "flavor_text")
|
||||
AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!")
|
||||
AddElement(/datum/element/flavor_text/carbon/temporary, "", "Set Pose (Temporary Flavor Text)", "This should be used only for things pertaining to the current round!", _save_key = null)
|
||||
AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE)
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
|
||||
|
||||
block_parry_data = /datum/block_parry_data/unarmed/human
|
||||
default_block_parry_data = /datum/block_parry_data/unarmed/pugilist
|
||||
default_block_parry_data = /datum/block_parry_data/unarmed/human
|
||||
|
||||
//Hair colour and style
|
||||
var/hair_color = "000"
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
|
||||
H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle)
|
||||
|
||||
H.layer -= 1 //go one layer down so people go over you
|
||||
ENABLE_BITFIELD(H.pass_flags, PASSMOB) //this actually lets people pass over you
|
||||
squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) //blorble noise when people step on you
|
||||
|
||||
@@ -103,7 +102,6 @@
|
||||
REMOVE_TRAIT(H, TRAIT_HUMAN_NO_RENDER, SLIMEPUDDLE_TRAIT)
|
||||
H.update_disabled_bodyparts(silent = TRUE)
|
||||
H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle)
|
||||
H.layer += 1 //go one layer back above!
|
||||
DISABLE_BITFIELD(H.pass_flags, PASSMOB)
|
||||
is_puddle = FALSE
|
||||
if(squeak)
|
||||
|
||||
@@ -86,15 +86,6 @@ proc/get_top_level_mob(var/mob/S)
|
||||
else if(!params)
|
||||
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
|
||||
if(subtle_emote && !check_invalid(user, subtle_emote))
|
||||
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
|
||||
switch(type)
|
||||
if("Visible")
|
||||
emote_type = EMOTE_VISIBLE
|
||||
if("Hearable")
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
else
|
||||
alert("Unable to use this emote, must be either hearable or visible.")
|
||||
return
|
||||
message = subtle_emote
|
||||
else
|
||||
return FALSE
|
||||
@@ -111,6 +102,80 @@ proc/get_top_level_mob(var/mob/S)
|
||||
|
||||
user.visible_message(message = message, self_message = message, vision_distance = 1, ignored_mobs = GLOB.dead_mob_list, omni = TRUE)
|
||||
|
||||
///////////////// SUBTLE 3: DARE DICE
|
||||
|
||||
/datum/emote/living/subtler_table
|
||||
key = "subtler_table"
|
||||
key_third_person = "subtler_table"
|
||||
message = null
|
||||
mob_type_blacklist_typecache = list(/mob/living/brain)
|
||||
|
||||
/datum/emote/living/subtler_table/proc/check_invalid(mob/user, input)
|
||||
if(stop_bad_mime.Find(input, 1, 1))
|
||||
to_chat(user, "<span class='danger'>Invalid emote.</span>")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/emote/living/subtler_table/run_emote(mob/user, params, type_override = null)
|
||||
if(!locate(/obj/structure/table) in range(user, 1))
|
||||
to_chat(user, "There are no tables around you.")
|
||||
return FALSE
|
||||
if(jobban_isbanned(user, "emote"))
|
||||
to_chat(user, "You cannot send subtle emotes (banned).")
|
||||
return FALSE
|
||||
else if(user.client && user.client.prefs.muted & MUTE_IC)
|
||||
to_chat(user, "You cannot send IC messages (muted).")
|
||||
return FALSE
|
||||
else if(!params)
|
||||
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
|
||||
if(subtle_emote && !check_invalid(user, subtle_emote))
|
||||
message = subtle_emote
|
||||
else
|
||||
return FALSE
|
||||
else
|
||||
message = params
|
||||
if(type_override)
|
||||
emote_type = type_override
|
||||
. = TRUE
|
||||
if(!can_run_emote(user))
|
||||
return FALSE
|
||||
|
||||
user.log_message("[message] (TABLE-WRAPPING)", LOG_SUBTLER)
|
||||
message = "<span class='emote'><b>[user]</b> <i>[user.say_emphasis(message)]</i></span>"
|
||||
|
||||
var/list/show_to = list()
|
||||
var/list/processing = list()
|
||||
var/safety = 25
|
||||
for(var/obj/structure/table/T in range(user, 1))
|
||||
processing |= T
|
||||
for(var/i in processing)
|
||||
var/obj/structure/table/T = i
|
||||
if(safety-- <= 0)
|
||||
to_chat(user, "Table scan aborted early, some people might have not received the message (max 25)")
|
||||
break
|
||||
if(get_dist(T, user) > 7)
|
||||
continue // nah
|
||||
processing |= T
|
||||
for(var/mob/living/M in range(T, 1)) // no ghosts/cameramobs
|
||||
show_to |= M
|
||||
var/obj/structure/table/other
|
||||
other = locate() in get_step(T, NORTH)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, SOUTH)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, WEST)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, EAST)
|
||||
if(other)
|
||||
processing |= other
|
||||
|
||||
for(var/i in show_to)
|
||||
var/mob/M = i
|
||||
M.show_message(message)
|
||||
|
||||
///////////////// VERB CODE
|
||||
/mob/living/verb/subtle()
|
||||
set name = "Subtle"
|
||||
@@ -128,3 +193,12 @@ proc/get_top_level_mob(var/mob/S)
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
return
|
||||
usr.emote("subtler")
|
||||
|
||||
///////////////// VERB CODE 3
|
||||
/mob/living/verb/subtler_table()
|
||||
set name = "Subtler Around Table"
|
||||
set category = "IC"
|
||||
if(GLOB.say_disabled) //This is dumb but it's here because heehoo copypaste, who the FUCK uses this to identify lag?
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
return
|
||||
usr.emote("subtler_table")
|
||||
|
||||
@@ -171,11 +171,13 @@
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
L.ignore_slowdown(type)
|
||||
ADD_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
|
||||
L.update_movespeed()
|
||||
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L)
|
||||
L.unignore_slowdown(type)
|
||||
REMOVE_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
|
||||
L.update_movespeed()
|
||||
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
..()
|
||||
|
||||
|
||||
@@ -81,6 +81,12 @@
|
||||
var/obj/machinery/portable_atmospherics/P = item_to_retrieve.loc
|
||||
P.disconnect()
|
||||
P.update_icon()
|
||||
else if(istype(item_to_retrieve.loc, /obj/machinery/disposal) || istype(item_to_retrieve.loc, /obj/structure/disposalpipe)) //If it's in disposals, only recall the item.
|
||||
break
|
||||
else if(istype(item_to_retrieve.loc, /obj/machinery/nuclearbomb)) //I feel like yandev
|
||||
break //Just to be sure.
|
||||
|
||||
|
||||
|
||||
item_to_retrieve = item_to_retrieve.loc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user