Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into ventcrawling-refactor-fix2

This commit is contained in:
raspy-on-osu
2021-02-04 16:46:37 -05:00
55 changed files with 366 additions and 117 deletions
+2 -2
View File
@@ -263,7 +263,7 @@ Turf and target are separate in case you want to teleport some distance from a t
return .
//Returns a list of all items of interest with their name
/proc/getpois(mobs_only=0,skip_mindless=0)
/proc/getpois(mobs_only = FALSE, skip_mindless = FALSE, specify_dead_role = TRUE)
var/list/mobs = sortmobs()
var/list/namecounts = list()
var/list/pois = list()
@@ -277,7 +277,7 @@ Turf and target are separate in case you want to teleport some distance from a t
if(M.real_name && M.real_name != M.name)
name += " \[[M.real_name]\]"
if(M.stat == DEAD)
if(M.stat == DEAD && specify_dead_role)
if(isobserver(M))
name += " \[ghost\]"
else
+1 -1
View File
@@ -274,7 +274,7 @@ GLOBAL_LIST_INIT(redacted_strings, list("\[REDACTED\]", "\[CLASSIFIED\]", "\[ARC
GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt"))
//LANGUAGE CHARACTER CUSTOMIZATION
GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitters", "chimpers", "declares", "bellows", "buzzes" ,"beeps", "chirps", "clicks", "hisses" ,"poofs" , "puffs", "rattles", "mewls" ,"barks", "blorbles", "squeaks", "squawks", "flutters", "warbles"))
GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitters", "chimpers", "declares", "bellows", "buzzes" ,"beeps", "chirps", "clicks", "hisses" ,"poofs" , "puffs", "rattles", "mewls" ,"barks", "blorbles", "squeaks", "squawks", "flutters", "warbles", "caws", "gekkers", "clucks"))
GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc, "xeno tongue" = /obj/item/organ/tongue/alien))
//SPECIES BODYPART LISTS
+2
View File
@@ -146,9 +146,11 @@
if(!istype(A) || !get_turf(A) || A == src)
return
orbit_target = A
return A.AddComponent(/datum/component/orbiter, src, radius, clockwise, rotation_speed, rotation_segments, pre_rotation)
/atom/movable/proc/stop_orbit(datum/component/orbiter/orbits)
orbit_target = null
return // We're just a simple hook
/atom/proc/transfer_observers_to(atom/target)
+1 -1
View File
@@ -37,7 +37,7 @@
qdel(src)
/datum/component/riding/proc/vehicle_mob_buckle(datum/source, mob/living/M, force)
handle_vehicle_offsets()
handle_vehicle_offsets(M.buckled?.dir)
/datum/component/riding/proc/handle_vehicle_layer(dir)
var/atom/movable/AM = parent
+6 -1
View File
@@ -11,6 +11,8 @@
var/antag_removal_text // Text will be given to the quirk holder if they get an antag that has it blacklisted.
var/mood_quirk = FALSE //if true, this quirk affects mood and is unavailable if moodlets are disabled
var/mob_trait //if applicable, apply and remove this mob trait
/// should we immediately call on_spawn or add a timer to trigger
var/on_spawn_immediate = TRUE
var/mob/living/quirk_holder
/datum/quirk/New(mob/living/quirk_mob, spawn_effects)
@@ -26,7 +28,10 @@
START_PROCESSING(SSquirks, src)
add()
if(spawn_effects)
on_spawn()
if(on_spawn_immediate)
on_spawn()
else
addtimer(CALLBACK(src, .proc/on_spawn), 0)
addtimer(CALLBACK(src, .proc/post_add), 30)
/datum/quirk/Destroy()
+1
View File
@@ -184,6 +184,7 @@ GLOBAL_LIST_EMPTY(family_heirlooms)
gain_text = null // Handled by trauma.
lose_text = null
medical_record_text = "Patient has an untreatable impairment in motor function in the lower extremities."
on_spawn_immediate = FALSE
/datum/quirk/paraplegic/add()
var/datum/brain_trauma/severe/paralysis/paraplegic/T = new()
+3
View File
@@ -99,6 +99,9 @@
///Mobs that are currently do_after'ing this atom, to be cleared from on Destroy()
var/list/targeted_by
///Reference to atom being orbited
var/atom/orbit_target
/**
* Called when an atom is created in byond (built in engine proc)
*
+11 -9
View File
@@ -10,7 +10,7 @@
circuit = /obj/item/circuitboard/machine/cell_charger
pass_flags = PASSTABLE
var/obj/item/stock_parts/cell/charging = null
var/charge_rate = 500
var/recharge_coeff = 1
/obj/machinery/cell_charger/update_overlays()
. += ..()
@@ -28,9 +28,10 @@
. = ..()
. += "There's [charging ? "a" : "no"] cell in the charger."
if(charging)
. += "Current charge: [round(charging.percent(), 1)]%."
var/obj/item/stock_parts/cell/C = charging.get_cell()
. += "Current charge: [C.percent()]%."
if(in_range(user, src) || isobserver(user))
. += "<span class='notice'>The status display reads: Charge rate at <b>[charge_rate]J</b> per cycle.</span>"
. += "<span class='notice'>The status display reads: Charge rate at <b>[recharge_coeff*10]J</b> per cycle.</span>"
/obj/machinery/cell_charger/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/stock_parts/cell) && !panel_open)
@@ -122,17 +123,18 @@
charging.emp_act(severity)
/obj/machinery/cell_charger/RefreshParts()
charge_rate = 500
for(var/obj/item/stock_parts/capacitor/C in component_parts)
charge_rate *= C.rating
recharge_coeff = C.rating
/obj/machinery/cell_charger/process()
if(!charging || !anchored || (stat & (BROKEN|NOPOWER)))
return
if(charging.percent() >= 100)
return
use_power(charge_rate)
charging.give(charge_rate) //this is 2558, efficient batteries exist
if(charging)
var/obj/item/stock_parts/cell/C = charging.get_cell()
if(C)
if(C.charge < C.maxcharge)
C.give(C.chargerate * recharge_coeff)
use_power(250 * recharge_coeff)
update_icon()
@@ -393,6 +393,27 @@
spark_system.start() //creates some sparks because they look cool
qdel(cover) //deletes the cover - no need on keeping it there!
//turret healing
/obj/machinery/porta_turret/examine(mob/user)
. = ..()
if(obj_integrity < max_integrity)
. += "<span class='notice'>[src] is damaged, use a lit welder to fix it.</span>"
/obj/machinery/porta_turret/welder_act(mob/living/user, obj/item/I)
. = TRUE
if(cover && obj_integrity < max_integrity)
if(!I.tool_start_check(user, amount=0))
return
user.visible_message("[user] is welding the turret.", \
"<span class='notice'>You begin repairing the turret...</span>", \
"<span class='italics'>You hear welding.</span>")
if(I.use_tool(src, user, 40, volume=50))
obj_integrity = max_integrity
user.visible_message("[user.name] has repaired [src].", \
"<span class='notice'>You finish repairing the turret.</span>")
else
to_chat(user, "<span class='notice'>The turret doesn't need repairing.</span>")
/obj/machinery/porta_turret/process()
//the main machinery process
if(cover == null && anchored) //if it has no cover and is anchored
+1 -1
View File
@@ -63,7 +63,7 @@
name = "advanced fire extinguisher"
desc = "Used to stop thermonuclear fires from spreading inside your engine."
icon_state = "foam_extinguisher0"
//item_state = "foam_extinguisher" needs sprite
item_state = "foam_extinguisher"
dog_fashion = null
chem = /datum/reagent/firefighting_foam
tanktype = /obj/structure/reagent_dispensers/foamtank
+12 -7
View File
@@ -113,12 +113,6 @@
to_chat(src, "<span class='danger'>Error: Use the admin IRC/Discord channel, nerd.</span>", confidential = TRUE)
return
//clean the message if it's not sent by a high-rank admin
if(!check_rights(R_SERVER|R_DEBUG,0)||external)//no sending html to the poor bots
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg)
return
else
//get message text, limit it's length.and clean/escape html
if(!msg)
@@ -133,11 +127,16 @@
else
if(holder)
to_chat(src, "<span class='danger'>Error: Admin-PM: Client not found.</span>", confidential = TRUE)
to_chat(src, "<span class='danger'><b>Message not sent:</b></span><br>[msg]", confidential = TRUE)
to_chat(src, "<span class='danger'><b>Message not sent:</b></span><br>[sanitize(msg)]", confidential = TRUE)
if(recipient_ticket)
recipient_ticket.AddInteraction("<b>No client found, message not sent:</b><br>[msg]")
return
else
//clean the message if it's not sent by a high-rank admin
if(!check_rights(R_SERVER|R_DEBUG,0)||external)//no sending html to the poor bots
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg)
return
current_ticket.MessageNoRecipient(msg)
return
@@ -149,6 +148,12 @@
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
//clean the message if it's not sent by a high-rank admin
if(!check_rights(R_SERVER|R_DEBUG,0)||external)//no sending html to the poor bots
msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
if(!msg)
return
var/rawmsg = msg
if(holder)
+7 -7
View File
@@ -166,15 +166,10 @@
icon_state = "sweater_uglyxmas"
item_state = "sweater_uglyxmas"
/obj/item/clothing/accessory/sweater/uglyxmas
name = "ugly xmas sweater"
icon_state = "sweater_uglyxmas"
item_state = "sweater_uglyxmas"
/obj/item/clothing/accessory/sweater/flower
name = "flower sweater"
icon_state = "sweater_uglyxmas"
item_state = "sweater_uglyxmas"
icon_state = "sweater_flower"
item_state = "sweater_flower"
////////////////
//Suit Jackets//
@@ -223,6 +218,11 @@
icon_state = "turtleneck_red"
item_state = "turtleneck_red"
/obj/item/clothing/accessory/turtleneck/comfy
name = "comfy turtleneck"
icon_state = "turtleneck_comfy"
item_state = "turtleneck_comfy"
/obj/item/clothing/accessory/turtleneck/tactifool
name = "black sweaterneck"
desc = "Extra fool. Extra cool."
@@ -137,6 +137,10 @@
//Shooting Code:
A.preparePixelProjectile(target, src)
A.fire()
if(ismob(loc.loc))
installed_gun.shoot_live_shot(loc.loc)
else
installed_gun.shoot_live_shot() //Shitcode, but we don't have much of a choice
log_attack("[assembly] [REF(assembly)] has fired [installed_gun].")
return A
@@ -522,7 +522,7 @@
max_charges = 1
item_flags = NEEDS_PERMIT | NOBLUDGEON
w_class = WEIGHT_CLASS_BULKY
force = 18
force = 15
/obj/item/ammo_casing/magic/hook
name = "hook"
@@ -536,11 +536,11 @@
icon_state = "hook"
icon = 'icons/obj/lavaland/artefacts.dmi'
pass_flags = PASSTABLE
damage = 25
armour_penetration = 100
damage = 15
armour_penetration = 10
knockdown = 5
damage_type = BRUTE
hitsound = 'sound/effects/splat.ogg'
knockdown = 30
var/chain
/obj/item/projectile/hook/fire(setAngle)
@@ -73,6 +73,14 @@
name = "Beehive 2"
icon_state = "hair_beehive2"
/datum/sprite_accessory/hair/belenko
name = "Beleneko"
icon_state = "hair_belenko"
/datum/sprite_accessory/hair/belenkotied
name = "Belenko (Tied)"
icon_state = "hair_belenkotied"
/datum/sprite_accessory/hair/belle
name = "Belle"
icon_state = "hair_belle"
@@ -325,6 +333,10 @@
name = "Flow Hair"
icon_state = "hair_f"
/datum/sprite_accessory/hair/fluffy
name = "Fluffy"
icon_state = "hair_fluffy"
/datum/sprite_accessory/hair/fringetail
name = "Fringe Tail"
icon_state = "hair_fringetail"
@@ -607,6 +619,10 @@
name = "Ponytail (Side) 4"
icon_state = "hair_sidetail4"
/datum/sprite_accessory/hair/sharptail
name = "Ponytail (Sharp)"
icon_state = "hair_sharptail"
/datum/sprite_accessory/hair/spikytail
name = "Ponytail (Spiky)"
icon_state = "hair_spikyponytail"
@@ -711,6 +727,26 @@
name = "Skinhead"
icon_state = "hair_skinhead"
/datum/sprite_accessory/hair/simple
name = "Simple"
icon_state = "hair_simple"
/datum/sprite_accessory/hair/skrellvshort
name = "Skrell Replicant (Very Short)"
icon_state = "hair_skrellvshort"
/datum/sprite_accessory/hair/skrellshort
name = "Skrell Replicant (Short)"
icon_state = "hair_skrellshort"
/datum/sprite_accessory/hair/skrell
name = "Skrell Replicant (Average)"
icon_state = "hair_skrell"
/datum/sprite_accessory/hair/skrelllong
name = "Skrell Replicant (Long)"
icon_state = "hair_skrelllong"
/datum/sprite_accessory/hair/sleaze
name = "Sleaze"
icon_state = "hair_sleaze"
+4 -2
View File
@@ -556,7 +556,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
var/list/dest = list() //List of possible destinations (mobs)
var/target = null //Chosen target.
dest += getpois(mobs_only=1) //Fill list, prompt user with list
dest += getpois(mobs_only = TRUE) //Fill list, prompt user with list
target = input("Please, select a player!", "Jump to Mob", null, null) as null|anything in dest
if (!target)//Make sure we actually have a target
@@ -893,7 +893,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if (!eye_name)
return
var/mob/mob_eye = creatures[eye_name]
do_observe(creatures[eye_name])
/mob/dead/observer/proc/do_observe(mob/mob_eye)
//Istype so we filter out points of interest that are not mobs
if(client && mob_eye && istype(mob_eye))
client.eye = mob_eye
+28 -6
View File
@@ -1,5 +1,6 @@
/datum/orbit_menu
var/mob/dead/observer/owner
var/auto_observe = FALSE
/datum/orbit_menu/New(mob/dead/observer/new_owner)
if(!istype(new_owner))
@@ -10,6 +11,7 @@
return GLOB.observer_state
/datum/orbit_menu/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if (!ui)
ui = new(user, src, "Orbit")
ui.open()
@@ -18,15 +20,35 @@
if (..())
return
if (action == "orbit")
var/ref = params["ref"]
var/atom/movable/poi = (locate(ref) in GLOB.mob_list) || (locate(ref) in GLOB.poi_list)
if (poi != null)
switch(action)
if ("orbit")
var/ref = params["ref"]
var/atom/movable/poi = (locate(ref) in GLOB.mob_list) || (locate(ref) in GLOB.poi_list)
if (poi == null)
. = TRUE
return
owner.ManualFollow(poi)
owner.reset_perspective(null)
if (auto_observe)
owner.do_observe(poi)
. = TRUE
if ("refresh")
update_static_data(owner, ui)
. = TRUE
if ("toggle_observe")
auto_observe = !auto_observe
if (auto_observe && owner.orbit_target)
owner.do_observe(owner.orbit_target)
else
owner.reset_perspective(null)
/datum/orbit_menu/ui_data(mob/user)
var/list/data = list()
data["auto_observe"] = auto_observe
return data
/datum/orbit_menu/ui_static_data(mob/user)
var/list/data = list()
var/list/alive = list()
var/list/antagonists = list()
var/list/dead = list()
@@ -34,7 +56,7 @@
var/list/misc = list()
var/list/npcs = list()
var/list/pois = getpois(skip_mindless = 1)
var/list/pois = getpois(skip_mindless = TRUE, specify_dead_role = FALSE)
for (var/name in pois)
var/list/serialized = list()
serialized["name"] = name
@@ -80,7 +102,7 @@
data["npcs"] = npcs
return data
/datum/orbit_menu/ui_assets()
. = ..() || list()
. += get_asset_datum(/datum/asset/simple/orbit)
+15 -12
View File
@@ -938,43 +938,43 @@
admin_ticket_log(src, msg)
/mob/living/carbon/human/MouseDrop_T(mob/living/target, mob/living/user)
if(pulling == target && grab_state >= GRAB_AGGRESSIVE && stat == CONSCIOUS)
var/GS_needed = istype(target, /mob/living/silicon/pai)? GRAB_PASSIVE : GRAB_AGGRESSIVE
if(pulling == target && grab_state >= GS_needed && stat == CONSCIOUS)
//If they dragged themselves and we're currently aggressively grabbing them try to piggyback
if(user == target && can_piggyback(target))
piggyback(target)
return
//If you dragged them to you and you're aggressively grabbing try to fireman carry them
else if(user != target)
else if(user == src)
if(user.a_intent == INTENT_GRAB)
fireman_carry(target)
return
. = ..()
//src is the user that will be carrying, target is the mob to be carried
/mob/living/carbon/human/proc/can_piggyback(mob/living/carbon/target)
return (istype(target) && target.stat == CONSCIOUS)
/mob/living/carbon/human/proc/can_piggyback(mob/living/target)
return (iscarbon(target) || ispAI(target)) && target.stat == CONSCIOUS
/mob/living/carbon/human/proc/can_be_firemanned(mob/living/carbon/target)
return (ishuman(target) && !CHECK_MOBILITY(target, MOBILITY_STAND))
return (ishuman(target) && !CHECK_MOBILITY(target, MOBILITY_STAND)) || ispAI(target)
/mob/living/carbon/human/proc/fireman_carry(mob/living/carbon/target)
var/carrydelay = 50 //if you have latex you are faster at grabbing
var/skills_space = "" //cobby told me to do this
if(HAS_TRAIT(src, TRAIT_QUICKER_CARRY))
carrydelay = 30
skills_space = "expertly"
skills_space = "expertly "
else if(HAS_TRAIT(src, TRAIT_QUICK_CARRY))
carrydelay = 40
skills_space = "quickly"
skills_space = "quickly "
if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE))
visible_message("<span class='notice'>[src] starts [skills_space] lifting [target] onto their back..</span>",
visible_message("<span class='notice'>[src] starts [skills_space]lifting [target] onto their back..</span>",
//Joe Medic starts quickly/expertly lifting Grey Tider onto their back..
"<span class='notice'>[carrydelay < 35 ? "Using your gloves' nanochips, you" : "You"] [skills_space] start to lift [target] onto your back[carrydelay == 40 ? ", while assisted by the nanochips in your gloves.." : "..."]</span>")
"<span class='notice'>[carrydelay < 35 ? "Using your gloves' nanochips, you" : "You"] [skills_space]start to lift [target] onto your back[carrydelay == 40 ? ", while assisted by the nanochips in your gloves.." : "..."]</span>")
//(Using your gloves' nanochips, you/You) ( /quickly/expertly) start to lift Grey Tider onto your back(, while assisted by the nanochips in your gloves../...)
if(do_after(src, carrydelay, TRUE, target))
//Second check to make sure they're still valid to be carried
if(can_be_firemanned(target) && !incapacitated(FALSE, TRUE))
target.set_resting(FALSE, TRUE)
buckle_mob(target, TRUE, TRUE, 90, 1, 0, TRUE)
return
visible_message("<span class='warning'>[src] fails to fireman carry [target]!")
@@ -992,13 +992,13 @@
if(target.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE))
target.visible_message("<span class='warning'>[target] can't hang onto [src]!</span>")
return
buckle_mob(target, TRUE, TRUE, FALSE, 1, 2, FALSE)
buckle_mob(target, TRUE, TRUE, 0, 1, 2, FALSE)
else
visible_message("<span class='warning'>[target] fails to climb onto [src]!</span>")
else
to_chat(target, "<span class='warning'>You can't piggyback ride [src] right now!</span>")
/mob/living/carbon/human/buckle_mob(mob/living/target, force = FALSE, check_loc = TRUE, lying_buckle = FALSE, hands_needed = 0, target_hands_needed = 0, fireman = FALSE)
/mob/living/carbon/human/buckle_mob(mob/living/target, force = FALSE, check_loc = TRUE, lying_buckle = 0, hands_needed = 0, target_hands_needed = 0, fireman = FALSE)
if(!force)//humans are only meant to be ridden through piggybacking and special cases
return
if(!is_type_in_typecache(target, can_ride_typecache))
@@ -1010,6 +1010,9 @@
riding_datum.ride_check_rider_restrained = TRUE
if(buckled_mobs && ((target in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled)
return
if(istype(target, /mob/living/silicon/pai))
hands_needed = 1
target_hands_needed = 0
var/equipped_hands_self
var/equipped_hands_target
if(hands_needed)
@@ -71,7 +71,7 @@
var/list/datum/bioware = list()
var/creamed = FALSE //to use with creampie overlays
var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot))
var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot, /mob/living/silicon/pai))
var/lastpuke = 0
var/account_id
var/last_fire_update
@@ -30,10 +30,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
/datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species)
. = ..()
var/dwarf_hair = pick("Beard (Dwarf)", "Beard (Very Long)", "Beard (Long)") //beard roullette
var/mob/living/carbon/human/H = C
H.facial_hair_style = dwarf_hair
H.update_hair()
H.AddElement(/datum/element/dwarfism, COMSIG_SPECIES_LOSS, src)
RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech) //We register handle_speech is being used.
@@ -143,6 +143,10 @@
custom_holoform.Grant(src)
emitter_next_use = world.time + 10 SECONDS
/mob/living/silicon/pai/deployed/Initialize()
. = ..()
fold_out(TRUE)
/mob/living/silicon/pai/ComponentInitialize()
. = ..()
if(possible_chassis[chassis])
@@ -175,7 +175,7 @@
if("PRG_edit")
if(!computer || !authenticated || !target_id_card)
return
var/new_name = params["name"]
var/new_name = reject_bad_name(params["name"])
if(!new_name)
return
target_id_card.registered_name = new_name
@@ -190,7 +190,7 @@
return
if(target == "Custom")
var/custom_name = params["custom_name"]
var/custom_name = reject_bad_name(params["custom_name"])
if(custom_name)
target_id_card.assignment = custom_name
target_id_card.update_label()
@@ -12,3 +12,7 @@
/datum/movespeed_modifier/reagent/nitryl
multiplicative_slowdown = -1
/datum/movespeed_modifier/reagent/meth
multiplicative_slowdown = -0.5
absolute_max_tiles_per_second = 11
@@ -504,6 +504,14 @@
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
value = REAGENT_VALUE_COMMON
/datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/carbon/M)
M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
return ..()
/datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/carbon/M)
M.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
return ..()
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M)
M.Jitter(20)
M.set_drugginess(30)
@@ -174,11 +174,13 @@
ADD_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
L.update_movespeed()
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
L.add_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
/datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
L.update_movespeed()
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/meth)
..()
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M)
+1
View File
@@ -404,6 +404,7 @@
on_mob.set_light(1, 1, current_color_string)
/obj/effect/abstract/eye_lighting
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
var/obj/item/organ/eyes/robotic/glow/parent
/obj/effect/abstract/eye_lighting/Initialize()
@@ -102,6 +102,7 @@
along with slurred speech, aggression, and the ability to infect others with this agent."
item = /obj/item/storage/box/syndie_kit/romerol
cost = 25
player_minimum = 25
cant_discount = TRUE
exclude_modes = list(/datum/game_mode/nuclear)
+2 -1
View File
@@ -34,7 +34,6 @@
/obj/item/clothing/under/costume/kilt = 3,
/obj/item/clothing/under/misc/overalls = 3,
/obj/item/clothing/under/suit/sl = 3,
/obj/item/clothing/under/sweater = 3,
/obj/item/clothing/accessory/sweater = 3,
/obj/item/clothing/accessory/sweater/pink = 3,
/obj/item/clothing/accessory/sweater/heart = 3,
@@ -45,9 +44,11 @@
/obj/item/clothing/accessory/sweater/flower = 3,
/obj/item/clothing/accessory/turtleneck = 2,
/obj/item/clothing/accessory/turtleneck/red = 2,
/obj/item/clothing/accessory/turtleneck/comfy = 2,
/obj/item/clothing/accessory/turtleneck/tactifool = 2,
/obj/item/clothing/accessory/turtleneck/tactifool/green = 2,
/obj/item/clothing/accessory/turtleneck/tactifool/blue = 2,
/obj/item/clothing/under/sweater = 3,
/obj/item/clothing/under/sweater/black = 3,
/obj/item/clothing/under/sweater/purple = 3,
/obj/item/clothing/under/sweater/green = 3,
+3
View File
@@ -675,3 +675,6 @@ TURF_DIRT_THRESHOLD 100
## Default alpha of dirt on spawn
DIRT_ALPHA_STARTING 127
## Allows pAI custom holoforms
PAI_CUSTOM_HOLOFORMS
+62
View File
@@ -50,6 +50,68 @@
-->
<div class="commit sansserif">
<h2 class="date">03 February 2021</h2>
<h3 class="author">Hatterhat updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">The green energy sabre's sprite now respects proper handedness.</li>
</ul>
<h2 class="date">02 February 2021</h2>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">pais can now be carried around piggybacking/fireman</li>
<li class="balance">Meth and Nuka Cola once again, speed you up.</li>
</ul>
<h2 class="date">31 January 2021</h2>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="balance">fermichem explosion EMPs don't cover the entire station</li>
</ul>
<h2 class="date">30 January 2021</h2>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">adds 'clucks', 'caws' and 'gekkers' to the speech verb list</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">some more FUCKING hairs</li>
<li class="imageadd">uncodersprites the advanced extinguisher</li>
</ul>
<h2 class="date">29 January 2021</h2>
<h3 class="author">MrJWhit updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Ported the QM, Captain, CMO, and HoS cloaks from beestation.</li>
<li class="rscdel">Removes excess air alarms from boxstation</li>
</ul>
<h3 class="author">TripleShades updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">fixes engineering secure storage being the wrong area because I fucked that up previously my bad</li>
<li class="bugfix">removes funny extra light switch under right surgery table in surgery oops</li>
<li class="rscadd">Added chairs to the corpse launch viewing area</li>
<li class="rscadd">Small garden plot for flowers for parity with other station Chapels</li>
<li class="rscadd">Plain Bible to glass tables in Chapel</li>
<li class="rscadd">Candles and Matchbox to glass tables in Chapel</li>
<li class="rscadd">More glass tables, with a chaplain figure and another spare bible.</li>
<li class="rscadd">Bookcase to Box Chapel for parity with other station Chapels</li>
<li class="rscadd">Minimoog to Box Chapel as substitute for a church organ</li>
<li class="rscadd">Holy department sign just below Chapel change: Expanded the corpse launching area to feel less congested change: Added windows to the corpse launch so you can look inside I guess? change: Moved flowers and burial garments to the corner next to the corpse launcher change: Box Chaplain's office door is moved over one change: Confessional is now connected to Chaplain's office for parity with other station Chapels change: Moved coffins over to old confessional location change: Box Chapel now has pews instead of stools change: Box Chapel Confessional is now lit instead of being nearly pitch black remove: Two coffins from Chapel</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">the miner bedsheet will now increment its progress when you redeem points from the ORM</li>
<li class="rscadd">you can add custom names and descriptions to item's on the loadout now</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">roundstart aesthetic sterile masks and roundstart paper masks</li>
<li class="rscadd">more accessory slot items</li>
<li class="rscadd">cowbell necklace happy 2021</li>
<li class="rscadd">shibari ropes & torn pantyhose</li>
</ul>
<h2 class="date">28 January 2021</h2>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
+49
View File
@@ -28319,3 +28319,52 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
silicons:
- rscadd: colormates can now paint some mobs.
- bugfix: 1 dev explosions shouldn't delete brains anymore
2021-01-29:
MrJWhit:
- tweak: Ported the QM, Captain, CMO, and HoS cloaks from beestation.
- rscdel: Removes excess air alarms from boxstation
TripleShades:
- bugfix: fixes engineering secure storage being the wrong area because I fucked
that up previously my bad
- bugfix: removes funny extra light switch under right surgery table in surgery
oops
- rscadd: Added chairs to the corpse launch viewing area
- rscadd: Small garden plot for flowers for parity with other station Chapels
- rscadd: Plain Bible to glass tables in Chapel
- rscadd: Candles and Matchbox to glass tables in Chapel
- rscadd: More glass tables, with a chaplain figure and another spare bible.
- rscadd: Bookcase to Box Chapel for parity with other station Chapels
- rscadd: Minimoog to Box Chapel as substitute for a church organ
- rscadd: 'Holy department sign just below Chapel change: Expanded the corpse launching
area to feel less congested change: Added windows to the corpse launch so you
can look inside I guess? change: Moved flowers and burial garments to the corner
next to the corpse launcher change: Box Chaplain''s office door is moved over
one change: Confessional is now connected to Chaplain''s office for parity with
other station Chapels change: Moved coffins over to old confessional location
change: Box Chapel now has pews instead of stools change: Box Chapel Confessional
is now lit instead of being nearly pitch black remove: Two coffins from Chapel'
timothyteakettle:
- bugfix: the miner bedsheet will now increment its progress when you redeem points
from the ORM
- rscadd: you can add custom names and descriptions to item's on the loadout now
zeroisthebiggay:
- rscadd: roundstart aesthetic sterile masks and roundstart paper masks
- rscadd: more accessory slot items
- rscadd: cowbell necklace happy 2021
- rscadd: shibari ropes & torn pantyhose
2021-01-30:
timothyteakettle:
- rscadd: adds 'clucks', 'caws' and 'gekkers' to the speech verb list
zeroisthebiggay:
- rscadd: some more FUCKING hairs
- imageadd: uncodersprites the advanced extinguisher
2021-01-31:
Putnam3145:
- balance: fermichem explosion EMPs don't cover the entire station
2021-02-02:
silicons:
- rscadd: pais can now be carried around piggybacking/fireman
- balance: Meth and Nuka Cola once again, speed you up.
2021-02-03:
Hatterhat:
- bugfix: The green energy sabre's sprite now respects proper handedness.
@@ -1,22 +0,0 @@
author: "TripleShades"
delete-after: True
changes:
- bugfix: "fixes engineering secure storage being the wrong area because I fucked that up previously my bad"
- bugfix: "removes funny extra light switch under right surgery table in surgery oops"
- rscadd: "Added chairs to the corpse launch viewing area"
- rscadd: "Small garden plot for flowers for parity with other station Chapels"
- rscadd: "Plain Bible to glass tables in Chapel"
- rscadd: "Candles and Matchbox to glass tables in Chapel"
- rscadd: "More glass tables, with a chaplain figure and another spare bible."
- rscadd: "Bookcase to Box Chapel for parity with other station Chapels"
- rscadd: "Minimoog to Box Chapel as substitute for a church organ"
- rscadd: "Holy department sign just below Chapel
change: Expanded the corpse launching area to feel less congested
change: Added windows to the corpse launch so you can look inside I guess?
change: Moved flowers and burial garments to the corner next to the corpse launcher
change: Box Chaplain's office door is moved over one
change: Confessional is now connected to Chaplain's office for parity with other station Chapels
change: Moved coffins over to old confessional location
change: Box Chapel now has pews instead of stools
change: Box Chapel Confessional is now lit instead of being nearly pitch black
remove: Two coffins from Chapel"
@@ -1,4 +0,0 @@
author: "timothyteakettle"
delete-after: True
changes:
- rscadd: "you can add custom names and descriptions to item's on the loadout now"
@@ -0,0 +1,4 @@
author: "shellspeed1"
delete-after: True
changes:
- balance: "There actually needs to be people for zombies to happen now."
@@ -1,4 +0,0 @@
author: "zeroisthebiggay"
delete-after: True
changes:
- rscadd: "roundstart aesthetic sterile masks and roundstart paper masks"
@@ -1,6 +0,0 @@
author: "zeroisthebiggay"
delete-after: True
changes:
- rscadd: "more accessory slot items"
- rscadd: "cowbell necklace happy 2021"
- rscadd: "shibari ropes & torn pantyhose"
@@ -1,4 +0,0 @@
author: "timothyteakettle"
delete-after: True
changes:
- bugfix: "the miner bedsheet will now increment its progress when you redeem points from the ORM"
@@ -1,4 +0,0 @@
author: "MrJWhit"
delete-after: True
changes:
- tweak: "Ported the QM, Captain, CMO, and HoS cloaks from beestation."
@@ -0,0 +1,4 @@
author: "SmArtKar"
delete-after: True
changes:
- rscadd: "The orbit menu now has an Auto-Observe button! No more sifting through the lame observe menu to snoop in people's backpacks! Also, orbit menu now refreshes."
@@ -1,4 +0,0 @@
author: "MrJWhit"
delete-after: True
changes:
- rscdel: "Removes excess air alarms from boxstation"
@@ -0,0 +1,4 @@
author: "SmArtKar"
delete-after: True
changes:
- bugfix: "KAs are no longer getting broken when fired by a circuit"
@@ -0,0 +1,4 @@
author: "keronshb"
delete-after: True
changes:
- balance: "Makes cell chargers, charge faster."
@@ -0,0 +1,6 @@
author: "keronshb"
delete-after: True
changes:
- balance: "Force and damage > 15 from 18/25"
- balance: "Knockdown put down to 5 from 30"
- balance: "Armor pen down to 10 from 100."
@@ -0,0 +1,4 @@
author: "timothyteakettle"
delete-after: True
changes:
- rscadd: "dwarf facial hair is no longer randomised"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

After

Width:  |  Height:  |  Size: 125 KiB

@@ -15,6 +15,18 @@
name = "Black beret"
path = /obj/item/clothing/head/beret/black
/datum/gear/head/redberet
name = "Red beret"
path = /obj/item/clothing/head/beret
/datum/gear/head/purpleberet
name = "Purple beret"
path = /obj/item/clothing/head/beret/purple
/datum/gear/head/blueberet
name = "Blue beret"
path = /obj/item/clothing/head/beret/blue
/datum/gear/head/flatcap
name = "Flat cap"
path = /obj/item/clothing/head/flatcap
@@ -93,9 +93,8 @@
e.set_up(round((volume/28)*(pH-9)), T, 0, 0)
e.start()
if(!ImpureTot == 0) //If impure, v.small emp (0.6 or less)
ImpureTot *= volume
empulse(T, volume, 1)
if(ImpureTot) //If impure, v.small emp (0.6 or less)
empulse(T, ImpureTot, 1)
my_atom.reagents.clear_reagents() //just in case
return
+27 -5
View File
@@ -1,10 +1,10 @@
import { createSearch } from 'common/string';
import { multiline } from 'common/string';
import { resolveAsset } from '../assets';
import { useBackend, useLocalState } from '../backend';
import { Box, Button, Flex, Icon, Input, Section } from '../components';
import { Box, Button, Divider, Flex, Icon, Input, Section } from '../components';
import { Window } from '../layouts';
const PATTERN_DESCRIPTOR = / \[(?:ghost|dead)\]$/;
const PATTERN_NUMBER = / \(([0-9]+)\)$/;
const searchFor = searchText => createSearch(searchText, thing => thing.name);
@@ -43,7 +43,7 @@ const BasicSection = (props, context) => {
{things.map(thing => (
<Button
key={thing.name}
content={thing.name.replace(PATTERN_DESCRIPTOR, "")}
content={thing.name}
onClick={() => act("orbit", {
ref: thing.ref,
})} />
@@ -82,6 +82,7 @@ export const Orbit = (props, context) => {
const {
alive,
antagonists,
auto_observe,
dead,
ghosts,
misc,
@@ -140,6 +141,27 @@ export const Orbit = (props, context) => {
onInput={(_, value) => setSearchText(value)}
onEnter={(_, value) => orbitMostRelevant(value)} />
</Flex.Item>
<Flex.Item>
<Divider vertical />
</Flex.Item>
<Flex.Item>
<Button
inline
color="transparent"
tooltip={multiline`Toggle Auto-Observe. When active, you'll
see the UI / full inventory of whoever you're orbiting. Neat!`}
tooltipPosition="bottom-left"
selected={auto_observe}
icon={auto_observe ? "toggle-on" : "toggle-off"}
onClick={() => act("toggle_observe")} />
<Button
inline
color="transparent"
tooltip="Refresh"
tooltipPosition="bottom-left"
icon="sync-alt"
onClick={() => act("refresh")} />
</Flex.Item>
</Flex>
</Section>
{antagonists.length > 0 && (
@@ -161,7 +183,7 @@ export const Orbit = (props, context) => {
</Section>
)}
<Section title="Alive">
<Section title={`Alive - (${alive.length})`}>
{alive
.filter(searchFor(searchText))
.sort(compareNumberedText)
@@ -174,7 +196,7 @@ export const Orbit = (props, context) => {
</Section>
<BasicSection
title="Ghosts"
title={`Ghosts - (${ghosts.length})`}
source={ghosts}
searchText={searchText}
/>
File diff suppressed because one or more lines are too long