Merge branch 'master' into var/const-to-define

This commit is contained in:
AffectedArc07
2020-03-09 10:33:59 +00:00
committed by GitHub
50 changed files with 182 additions and 96 deletions
-1
View File
@@ -35447,7 +35447,6 @@
/area/library)
"bmF" = (
/obj/structure/cult/archives,
/obj/item/videocam,
/obj/machinery/light_switch{
pixel_y = -25
},
+1 -1
View File
@@ -486,7 +486,7 @@ turf/simulated/proc/consider_superconductivity(starting)
turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space
if(temperature > T0C) //Considering 0 degC as te break even point for radiation in and out
var/delta_temperature = (temperature_archived - 2.7) //hardcoded space temperature
var/delta_temperature = (temperature_archived - TCMB) //hardcoded space temperature
if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER))
var/heat = thermal_conductivity*delta_temperature* \
+1
View File
@@ -107,6 +107,7 @@
#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir)
#define COMSIG_MOVABLE_CROSS "movable_cross" //from base of atom/movable/Cross(): (/atom/movable)
#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable)
#define COMSIG_CROSSED_MOVABLE "crossed_movable" //when we cross over something (calling Crossed() on that atom)
#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable)
#define COMSIG_MOVABLE_UNCROSS "movable_uncross" //from base of atom/movable/Uncross(): (/atom/movable)
#define COMPONENT_MOVABLE_BLOCK_UNCROSS 1
+7 -1
View File
@@ -362,7 +362,7 @@
object_overlays += item_overlay
add_overlay(object_overlays)
/obj/screen/inventory/Click()
/obj/screen/inventory/Click(location, control, params)
// At this point in client Click() code we have passed the 1/10 sec check and little else
// We don't even know if it's a middle click
if(world.time <= usr.next_move)
@@ -371,6 +371,12 @@
return 1
if(istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech
return 1
if(hud?.mymob && slot_id)
var/obj/item/inv_item = hud.mymob.get_item_by_slot(slot_id)
if(inv_item)
return inv_item.Click(location, control, params)
if(usr.attack_ui(slot_id))
usr.update_inv_l_hand(0)
usr.update_inv_r_hand(0)
+2 -1
View File
@@ -11,7 +11,8 @@ SUBSYSTEM_DEF(chat)
/datum/controller/subsystem/chat/fire()
for(var/i in payload)
var/client/C = i
C << output(payload[C], "browseroutput:output")
if(C)
C << output(payload[C], "browseroutput:output")
payload -= C
if(MC_TICK_CHECK)
+1
View File
@@ -220,6 +220,7 @@
// This is automatically called when something enters your square
/atom/movable/Crossed(atom/movable/AM, oldloc)
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM)
SEND_SIGNAL(AM, COMSIG_CROSSED_MOVABLE, src)
/atom/movable/Bump(atom/A, yes) //the "yes" arg is to differentiate our Bump proc from byond's, without it every Bump() call would become a double Bump().
if(A && yes)
+1 -1
View File
@@ -226,7 +226,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
if(istype(T, /turf/simulated/floor))
T.ChangeTurf(/turf/simulated/floor/engine/cult)
if(istype(T, /turf/simulated/wall))
T.ChangeTurf(/turf/simulated/wall/cult)
T.ChangeTurf(/turf/simulated/wall/cult/artificer)
else
var/turf/simulated/floor/engine/cult/F = safepick(cultturfs)
if(F)
@@ -208,12 +208,14 @@
text += "<br><span class='big'><b>The abductors were:</b></span><br>"
for(var/datum/mind/abductor_mind in abductors)
text += printplayer(abductor_mind)
text += "<br>"
text += printobjectives(abductor_mind)
text += "<br>"
if(abductees.len)
text += "<br><span class='big'><b>The abductees were:</b></span><br>"
for(var/datum/mind/abductee_mind in abductees)
text += printplayer(abductee_mind)
text += "<br>"
text += printobjectives(abductee_mind)
text += "<br>"
to_chat(world, text)
+1 -1
View File
@@ -68,7 +68,7 @@
jobtype = /datum/job/ntspecops
uniform = /obj/item/clothing/under/rank/centcom/captain
suit = /obj/item/clothing/suit/space/deathsquad/officer
back = /obj/item/storage/backpack/security
back = /obj/item/storage/backpack/ert/security
belt = /obj/item/storage/belt/military/assault
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/combat
+3 -3
View File
@@ -182,9 +182,9 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
/obj/item/gun/energy/gun/blueshield = 1
)
implants = list(/obj/item/implant/mindshield)
backpack = /obj/item/storage/backpack/security
satchel = /obj/item/storage/backpack/satchel_sec
dufflebag = /obj/item/storage/backpack/duffel/security
backpack = /obj/item/storage/backpack/blueshield
satchel = /obj/item/storage/backpack/satchel_blueshield
dufflebag = /obj/item/storage/backpack/duffel/blueshield
/datum/job/judge
+3
View File
@@ -294,6 +294,7 @@
genemutcheck(H, COMICBLOCK, null, MUTCHK_FORCED)
H.dna.default_blocks.Add(COMICBLOCK)
H.check_mutations = TRUE
H.add_language("Clownish")
//action given to antag clowns
/datum/action/innate/toggle_clumsy
@@ -420,6 +421,8 @@
r_pocket = /obj/item/barcodescanner
l_hand = /obj/item/storage/bag/books
pda = /obj/item/pda/librarian
backpack_contents = list(
/obj/item/videocam = 1)
/datum/job/barber
title = "Barber"
+1 -1
View File
@@ -197,7 +197,7 @@
name = "Chameleon flag"
desc = "A poor recreation of the official NT flag. It seems to shimmer a little."
icon_state = "ntflag"
origin_tech = "syndicate=4;magnets=4"
origin_tech = "syndicate=1;magnets=4"
var/updated_icon_state = null
var/used = FALSE
var/obj/item/grenade/boobytrap = null
@@ -193,6 +193,12 @@
icon_state = "viropack"
item_state = "viropack"
/obj/item/storage/backpack/blueshield
name = "blueshield backpack"
desc = "A robust backpack issued to Nanotrasen's finest."
icon_state = "blueshieldpack"
item_state = "blueshieldpack"
/*
* Satchel Types
*/
@@ -287,6 +293,11 @@
icon_state = "satchel-cap"
resistance_flags = FIRE_PROOF
/obj/item/storage/backpack/satchel_blueshield
name = "blueshield satchel"
desc = "A robust satchel issued to Nanotrasen's finest."
icon_state = "satchel-blueshield"
/obj/item/storage/backpack/satchel_flat
name = "smuggler's satchel"
desc = "A very slim satchel that can easily fit into tight spaces."
@@ -531,12 +542,19 @@
icon_state = "duffel-clown"
item_state = "duffel-clown"
obj/item/storage/backpack/duffel/blueshield
name = "blueshield duffelbag"
desc = "A robust duffelbag issued to Nanotrasen's finest."
icon_state = "duffel-blueshield"
item_state = "duffel-blueshield"
//ERT backpacks.
/obj/item/storage/backpack/ert
name = "emergency response team backpack"
desc = "A spacious backpack with lots of pockets, used by members of the Nanotrasen Emergency Response Team."
icon_state = "ert_commander"
item_state = "backpack"
max_combined_w_class = 30
resistance_flags = FIRE_PROOF
//Commander
@@ -270,7 +270,7 @@
desc = "A prescription packet containing six marijuana cigarettes."
icon_state = "medpacket"
item_state = "cigpacket"
default_reagents = list("thc" = 15)
default_reagents = list("thc" = 15, "cbd" = 15)
/obj/item/storage/fancy/cigarettes/cigpack_uplift
name = "\improper Uplift Smooth packet"
+1 -6
View File
@@ -78,10 +78,5 @@
if(href_list["read"])
var/obj/item/paper/P = locate(href_list["read"])
if((P && P.loc == src))
if(!( istype(usr, /mob/living/carbon/human) ))
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY><TT>[stars(P.info)]</TT></BODY></HTML>", "window=[P.name]")
onclose(usr, "[P.name]")
else
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY><TT>[P.info]</TT></BODY></HTML>", "window=[P.name]")
onclose(usr, "[P.name]")
P.show_content(usr)
return
-1
View File
@@ -8,7 +8,6 @@
smooth = SMOOTH_MORE | SMOOTH_BORDER
canSmoothWith = null
baseturf = /turf/simulated/floor/plating/asteroid/airless
temperature = 2.7
opacity = 1
density = TRUE
blocks_air = TRUE
+8
View File
@@ -4,6 +4,7 @@ var/global/list/map_transition_config = MAP_TRANSITION_CONFIG
/world/New()
SetupLogs()
enable_debugger() // Enable the extools debugger
log_world("World loaded at [time_stamp()]")
log_world("[GLOB.vars.len - GLOB.gvars_datum_in_built_vars.len] global variables")
@@ -468,3 +469,10 @@ proc/establish_db_connection()
return 1
#undef FAILED_DB_CONNECTION_CUTOFF
// Proc to enable the extools debugger, which allows breakpoints, live var checking, and many other useful tools
// The DLL is injected into the env by visual studio code. If not running VSCode, the proc will not call the initialization
/world/proc/enable_debugger()
var/dll = world.GetConfig("env", "EXTOOLS_DLL")
if (dll)
call(dll, "debug_initialize")()
+1 -1
View File
@@ -2164,7 +2164,7 @@
var/obj/pageobj = B.contents[page]
data += "<A href='?src=[UID()];AdminFaxViewPage=[page];paper_bundle=\ref[B]'>Page [page] - [pageobj.name]</A><BR>"
usr << browse(data, "window=[B.name]")
usr << browse(data, "window=PaperBundle[B.UID()]")
else
to_chat(usr, "<span class='warning'>The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]</span>")
+1 -1
View File
@@ -116,7 +116,7 @@
if(!msg)
return
msg = pencode_to_html(msg)
msg = admin_pencode_to_html(msg)
to_chat(world, "[msg]")
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
message_admins("<span class='boldnotice'>GlobalNarrate: [key_name_admin(usr)]: [msg]<BR></span>", 1)
+1 -1
View File
@@ -439,7 +439,7 @@
/datum/lore/organization/gov/synth
name = "Synthetic Union"
short_name = "Synthtica"
short_name = "Synthetica"
acronym = "SYN"
desc = "A defensive coalition of synthetics based out of New Canaan,\
the Synthetic Union is an organization which aims to establish and consolidate synthetic rights across the galaxy.\
+4
View File
@@ -15,6 +15,10 @@
var/list/vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in GLOB.all_vent_pumps)
if(is_station_level(temp_vent.loc.z) && !temp_vent.welded)
if(!temp_vent.parent)
// Issue happening more often with vents. Log and continue. Delete once solved
log_debug("spider_terror/start(), vent has no parent: [temp_vent], qdeled: [QDELETED(temp_vent)], loc: [temp_vent.loc]")
continue
if(temp_vent.parent.other_atmosmch.len > 50)
vents += temp_vent
var/spider_type
+3
View File
@@ -18,6 +18,9 @@ var/global/list/unused_trade_stations = list("sol")
return
if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED)
event_announcement.Announce("A trading shuttle from Jupiter Station has been denied docking permission due to the heightened security alert aboard [station_name()].", "Trader Shuttle Docking Request Refused")
// if the docking request was refused, fire another major event in 60 seconds
var/list/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MAJOR]
EC.next_event_time = world.time + (60 * 10)
return
var/list/spawnlocs = list()
+5 -4
View File
@@ -17,7 +17,7 @@
/obj/item/seeds/cannabis/death,
/obj/item/seeds/cannabis/white,
/obj/item/seeds/cannabis/ultimate)
reagents_add = list("thc" = 0.15)
reagents_add = list("thc" = 0.15, "cbd" = 0.15)
/obj/item/seeds/cannabis/rainbow
@@ -28,7 +28,7 @@
plantname = "Rainbow Weed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow
mutatelist = list()
reagents_add = list("lsd" = 0.15, "thc" = 0.15)
reagents_add = list("lsd" = 0.15, "thc" = 0.15, "cbd" = 0.15)
rarity = 40
/obj/item/seeds/cannabis/death
@@ -39,7 +39,7 @@
plantname = "Deathweed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/death
mutatelist = list()
reagents_add = list("cyanide" = 0.35, "thc" = 0.15)
reagents_add = list("cyanide" = 0.35, "thc" = 0.15, "cbd" = 0.15)
rarity = 40
/obj/item/seeds/cannabis/white
@@ -50,7 +50,7 @@
plantname = "Lifeweed"
product = /obj/item/reagent_containers/food/snacks/grown/cannabis/white
mutatelist = list()
reagents_add = list("omnizine" = 0.35, "thc" = 0.15)
reagents_add = list("omnizine" = 0.35, "thc" = 0.15, "cbd" = 0.15)
rarity = 40
@@ -72,6 +72,7 @@
"haloperidol" = 0.15,
"methamphetamine" = 0.15,
"thc" = 0.15,
"cbd" = 0.15,
"psilocybin" = 0.15,
"hairgrownium" = 0.15,
"ectoplasm" = 0.15,
+4 -1
View File
@@ -141,7 +141,8 @@
spawn(30)
if(!QDELETED(src))
var/mob/living/simple_animal/hostile/killertomato/K = new /mob/living/simple_animal/hostile/killertomato(get_turf(loc))
var/turf/T = get_turf(user)
var/mob/living/simple_animal/hostile/killertomato/K = new /mob/living/simple_animal/hostile/killertomato(T)
K.maxHealth += round(seed.endurance / 3)
K.melee_damage_lower += round(seed.potency / 10)
K.melee_damage_upper += round(seed.potency / 10)
@@ -150,4 +151,6 @@
K.visible_message("<span class='notice'>The Killer Tomato growls as it suddenly awakens.</span>")
if(user)
user.unEquip(src)
message_admins("[key_name_admin(user)] released a killer tomato at [ADMIN_COORDJMP(T)]")
log_game("[key_name(user)] released a killer tomato at [COORD(T)]")
qdel(src)
@@ -79,5 +79,5 @@ In all, this is a lot like the monkey code. /N
if(M.is_adult)
damage = rand(10, 40)
adjustBruteLoss(damage)
add_attack_logs(src, M, "Slime'd for [damage] damage")
add_attack_logs(M, src, "Slime'd for [damage] damage")
updatehealth("slime attack")
@@ -585,6 +585,14 @@
message = "<B>[src]</B> makes a weak noise"
m_type = 2
if("hsigh", "hsighs")
if(!muzzled)
message = "<B>[src]</B> sighs contentedly."
m_type = 2
else
message = "<B>[src]</B> makes a [pick("chill", "relaxed")] noise"
m_type = 2
if("laugh", "laughs")
var/M = handle_emote_param(param)
if(miming)
@@ -454,12 +454,6 @@
popup.set_content(dat)
popup.open()
/mob/living/carbon/human/Crossed(atom/movable/AM, oldloc)
var/mob/living/simple_animal/bot/mulebot/MB = AM
if(istype(MB))
MB.RunOver(src)
// Get rank from ID, ID inside PDA, PDA, ID in wallet, etc.
/mob/living/carbon/human/proc/get_authentification_rank(var/if_no_id = "No id", var/if_no_job = "No job")
var/obj/item/pda/pda = wear_id
+1 -1
View File
@@ -542,7 +542,7 @@
if(COLDRES in mutations)
return 1 //Fully protected from the cold.
temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K.
temperature = max(temperature, TCMB) //There is an occasional bug where the temperature is miscalculated in areas with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K.
var/thermal_protection_flags = get_cold_protection_flags(temperature)
var/thermal_protection = 0.0
@@ -165,7 +165,7 @@
..()
/datum/species/plasmaman/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
if(R.id == "plasma")
if(R.id == "plasma" || R.id == "plasma_dust")
H.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
H.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
H.adjustPlasma(20)
+1 -1
View File
@@ -296,7 +296,7 @@
return FALSE
if(stat != DEAD)
add_attack_logs(src, M, "Slime'd")
add_attack_logs(M, src, "Slime'd")
M.do_attack_animation(src)
visible_message("<span class='danger'>\The [M.name] glomps [src]!</span>", "<span class='userdanger'>\The [M.name] glomps you!</span>")
return TRUE
@@ -63,6 +63,7 @@
mulebot_count++
set_suffix(suffix ? suffix : "#[mulebot_count]")
RegisterSignal(src, COMSIG_CROSSED_MOVABLE, .proc/human_squish_check)
/mob/living/simple_animal/bot/mulebot/Destroy()
unload(0)
@@ -866,6 +867,11 @@
else
..()
/mob/living/simple_animal/bot/mulebot/proc/human_squish_check(src, atom/movable/AM)
if(!ishuman(AM))
return
RunOver(AM)
#undef SIGH
#undef ANNOYED
#undef DELIGHT
+1 -1
View File
@@ -80,7 +80,7 @@
else
data = "<div id='markdown'>[infolinks ? info_links : info]</div>[stamps]"
if(view)
var/datum/browser/popup = new(user, name, , paper_width, paper_height)
var/datum/browser/popup = new(user, "Paper[UID()]", , paper_width, paper_height)
popup.stylesheets = list()
popup.set_content(data)
if(!stars)
+4 -4
View File
@@ -63,13 +63,13 @@
qdel(W)
else
if(istype(W, /obj/item/pen) || istype(W, /obj/item/toy/crayon))
usr << browse("", "window=[name]") //Closes the dialog
usr << browse("", "window=PaperBundle[UID()]") //Closes the dialog
P = src[page]
P.attackby(W, user, params)
update_icon()
if(winget(usr, "[name]", "is-visible") == "true") // NOT MY FAULT IT IS A BUILT IN PROC PLEASE DO NOT HIT ME
if(winget(usr, "PaperBundle[UID()]", "is-visible") == "true") // NOT MY FAULT IT IS A BUILT IN PROC PLEASE DO NOT HIT ME
attack_self(usr) //Update the browsed page.
add_fingerprint(usr)
return
@@ -125,7 +125,7 @@
if(istype(src[page], /obj/item/paper))
var/obj/item/paper/P = W
dat += P.show_content(usr, view = 0)
usr << browse(dat, "window=[name]")
usr << browse(dat, "window=PaperBundle[UID()]")
else if(istype(src[page], /obj/item/photo))
var/obj/item/photo/P = W
usr << browse_rsc(P.img, "tmp_photo.png")
@@ -133,7 +133,7 @@
+ "<body style='overflow:hidden'>" \
+ "<div> <img src='tmp_photo.png' width = '180'" \
+ "[P.scribble ? "<div><br> Written on the back:<br><i>[P.scribble]</i>" : ""]"\
+ "</body></html>", "window=[name]")
+ "</body></html>", "window=PaperBundle[UID()]")
/obj/item/paper_bundle/attack_self(mob/user as mob)
src.show_content(user)
+12 -3
View File
@@ -81,13 +81,22 @@
. += "<span class='notice'>It is too far away.</span>"
/obj/item/photo/proc/show(mob/user as mob)
usr << browse_rsc(img, "tmp_photo.png")
var/icon/img_shown = new/icon(img)
var/colormatrix = user.get_screen_colour()
// Apply colorblindness effects, if any.
if(islist(colormatrix))
img_shown.MapColors(
colormatrix[1], colormatrix[2], colormatrix[3],
colormatrix[4], colormatrix[5], colormatrix[6],
colormatrix[7], colormatrix[8], colormatrix[9],
)
usr << browse_rsc(img_shown, "tmp_photo.png")
usr << browse("<html><head><title>[name]</title></head>" \
+ "<body style='overflow:hidden;margin:0;text-align:center'>" \
+ "<img src='tmp_photo.png' width='[64*photo_size]' style='-ms-interpolation-mode:nearest-neighbor' />" \
+ "[scribble ? "<br>Written on the back:<br><i>[scribble]</i>" : ""]"\
+ "</body></html>", "window=book;size=[64*photo_size]x[scribble ? 400 : 64*photo_size]")
onclose(usr, "[name]")
+ "</body></html>", "window=Photo[UID()];size=[64*photo_size]x[scribble ? 400 : 64*photo_size]")
onclose(usr, "Photo[UID()]")
return
/obj/item/photo/verb/rename()
@@ -22,30 +22,29 @@
energy = 50
/obj/effect/accelerated_particle/New(loc)
..()
/obj/effect/accelerated_particle/Initialize(loc)
. = ..()
addtimer(CALLBACK(src, .proc/propagate), 1)
RegisterSignal(src, COMSIG_CROSSED_MOVABLE, .proc/try_irradiate)
RegisterSignal(src, COMSIG_MOVABLE_CROSSED, .proc/try_irradiate)
QDEL_IN(src, movement_range)
addtimer(CALLBACK(src, .proc/move), 1)
/obj/effect/accelerated_particle/Bump(atom/A)
if(A)
if(isliving(A))
toxmob(A)
else if(istype(A, /obj/machinery/the_singularitygen))
var/obj/machinery/the_singularitygen/S = A
S.energy += energy
else if(istype(A, /obj/singularity))
var/obj/singularity/S = A
S.energy += energy
else if(istype(A, /obj/structure/blob))
var/obj/structure/blob/B = A
B.take_damage(energy * 0.6)
movement_range = 0
/obj/effect/accelerated_particle/Crossed(atom/A, oldloc)
/obj/effect/accelerated_particle/proc/try_irradiate(src, atom/A)
if(isliving(A))
toxmob(A)
var/mob/living/L = A
L.apply_effect((energy * 6), IRRADIATE, 0)
else if(istype(A, /obj/machinery/the_singularitygen))
var/obj/machinery/the_singularitygen/S = A
S.energy += energy
else if(istype(A, /obj/structure/blob))
var/obj/structure/blob/B = A
B.take_damage(energy * 0.6)
movement_range = 0
/obj/effect/accelerated_particle/Bump(obj/singularity/S)
if(!istype(S))
return ..()
S.energy += energy
/obj/effect/accelerated_particle/ex_act(severity)
@@ -54,17 +53,7 @@
/obj/effect/accelerated_particle/singularity_pull()
return
/obj/effect/accelerated_particle/proc/toxmob(mob/living/M)
M.apply_effect((energy * 6), IRRADIATE, 0)
/obj/effect/accelerated_particle/proc/move()
/obj/effect/accelerated_particle/proc/propagate()
addtimer(CALLBACK(src, .proc/propagate), 1)
if(!step(src,dir))
forceMove(get_step(src, dir))
movement_range--
if(movement_range == 0)
qdel(src)
else
sleep(speed)
move()
+9 -1
View File
@@ -98,7 +98,7 @@
return
if(!chambered)
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
if(cell.charge >= shot.e_cost) //if there's enough power in the cell cell...
if(cell.charge >= shot.e_cost) //if there's enough power in the WEAPON'S cell...
chambered = shot //...prepare a new shot based on the current ammo type selected
if(!chambered.BB)
chambered.newshot()
@@ -111,6 +111,11 @@
chambered = null //either way, released the prepared shot
newshot()
/obj/item/gun/energy/process_fire(atom/target, mob/living/user, message = 1, params, zone_override, bonus_spread = 0)
if(!chambered && can_shoot())
process_chamber()
return ..()
/obj/item/gun/energy/proc/select_fire(mob/living/user)
select++
if(select > ammo_type.len)
@@ -193,6 +198,9 @@
. = ..()
/obj/item/gun/energy/proc/robocharge()
if(cell.charge == cell.maxcharge)
// No point in recharging a weapon's cell that is already at 100%. That would just waste borg cell power for no reason.
return
if(isrobot(loc))
var/mob/living/silicon/robot/R = loc
if(R && R.cell)
@@ -23,6 +23,7 @@
I.receive_damage(-5, FALSE)
for(var/obj/item/organ/external/E in H.bodyparts)
E.mend_fracture()
E.internal_bleeding = FALSE
M.SetEyeBlind(0, FALSE)
M.CureNearsighted(FALSE)
M.CureBlind(FALSE)
@@ -1192,15 +1192,16 @@
taste_description = "motor oil"
/datum/reagent/consumable/ethanol/synthanol/on_mob_life(mob/living/M)
if(!M.isSynthetic())
if(!(M.dna.species.reagent_tag & PROCESS_SYN))
holder.remove_reagent(id, 3.6) //gets removed from organics very fast
if(prob(25))
holder.remove_reagent(id, 15)
M.fakevomit()
return ..()
/datum/reagent/consumable/ethanol/synthanol/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
if(M.isSynthetic())
if(M.dna.species.reagent_tag & PROCESS_SYN)
return
if(method == REAGENT_INGEST)
to_chat(M, pick("<span class = 'danger'>That was awful!</span>", "<span class = 'danger'>Yuck!</span>"))
@@ -525,6 +525,32 @@
M.Drowsy(10)
return ..()
/datum/reagent/cbd
name = "Cannabidiol"
id = "cbd"
description = "A non-psychoactive phytocannabinoid extracted from the cannabis plant."
reagent_state = LIQUID
color = "#00e100"
taste_description = "relaxation"
/datum/reagent/cbd/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if(prob(5))
M.emote(pick("hsigh", "yawn"))
if(prob(5))
to_chat(M, "<span class='notice'>[pick("You feel peaceful.", "You breathe softly.", "You feel chill.", "You vibe.")]</span>")
if(prob(10))
M.AdjustConfused(-5)
update_flags |= M.SetWeakened(0, FALSE)
if(volume >= 70 && prob(25))
if(M.reagents.has_reagent("thc") <= 20)
M.Drowsy(10)
if(prob(25))
update_flags |= M.adjustBruteLoss(-2, FALSE)
update_flags |= M.adjustFireLoss(-2, FALSE)
return ..() | update_flags
/datum/reagent/fliptonium
name = "Fliptonium"
id = "fliptonium"
@@ -872,14 +872,6 @@
build_path = /obj/item/assembly/mousetrap
category = list("initial", "Miscellaneous")
/datum/design/videocam
name = "Video Camera"
id = "videocam"
build_type = AUTOLATHE
materials = list(MAT_METAL = 120, MAT_GLASS = 60)
build_path = /obj/item/videocam
category = list("initial", "Miscellaneous")
/datum/design/logic_board
name = "Logic Circuit"
id = "logic_board"
+2
View File
@@ -4,6 +4,7 @@
shuttleId = "specops"
possible_destinations = "specops_home;specops_away;specops_custom"
resistance_flags = INDESTRUCTIBLE
flags = NODECONSTRUCT
/obj/machinery/computer/camera_advanced/shuttle_docker/ert
name = "specops navigation computer"
@@ -16,6 +17,7 @@
x_offset = 0
y_offset = 0
resistance_flags = INDESTRUCTIBLE
flags = NODECONSTRUCT
access_tcomms = FALSE
access_construction = FALSE
access_mining = FALSE
+1
View File
@@ -9,6 +9,7 @@
shuttleId = "syndicate"
possible_destinations = "syndicate_away;syndicate_z5;syndicate_z3;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s;syndicate_custom"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
flags = NODECONSTRUCT
var/challenge = FALSE
var/moved = FALSE
+2
View File
@@ -4,6 +4,7 @@
shuttleId = "skipjack"
possible_destinations = "skipjack_away;skipjack_ne;skipjack_nw;skipjack_se;skipjack_sw;skipjack_z5;skipjack_custom"
resistance_flags = INDESTRUCTIBLE
flags = NODECONSTRUCT
/obj/machinery/computer/camera_advanced/shuttle_docker/vox
name = "skipjack navigation computer"
@@ -16,4 +17,5 @@
x_offset = -10
y_offset = -10
resistance_flags = INDESTRUCTIBLE
flags = NODECONSTRUCT
access_derelict = TRUE
@@ -39,9 +39,9 @@
/obj/item/organ/internal/cyberimp/brain/anti_drop
name = "Anti-drop implant"
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
var/active = 0
var/l_hand_ignore = 0
var/r_hand_ignore = 0
var/active = FALSE
var/l_hand_ignore = FALSE
var/r_hand_ignore = FALSE
var/obj/item/l_hand_obj = null
var/obj/item/r_hand_obj = null
implant_color = "#DE7E00"
@@ -56,17 +56,17 @@
r_hand_obj = owner.r_hand
if(l_hand_obj)
if(owner.l_hand.flags & NODROP)
l_hand_ignore = 1
l_hand_ignore = TRUE
else
owner.l_hand.flags |= NODROP
l_hand_ignore = 0
l_hand_ignore = FALSE
if(r_hand_obj)
if(owner.r_hand.flags & NODROP)
r_hand_ignore = 1
r_hand_ignore = TRUE
else
owner.r_hand.flags |= NODROP
r_hand_ignore = 0
r_hand_ignore = FALSE
if(!l_hand_obj && !r_hand_obj)
to_chat(owner, "<span class='notice'>You are not holding any items, your hands relax...</span>")
@@ -102,12 +102,15 @@
A = pick(oview(range))
L_item.throw_at(A, range, 2)
to_chat(owner, "<span class='notice'>Your left arm spasms and throws the [L_item.name]!</span>")
l_hand_obj = null
if(R_item)
A = pick(oview(range))
R_item.throw_at(A, range, 2)
to_chat(owner, "<span class='notice'>Your right arm spasms and throws the [R_item.name]!</span>")
r_hand_obj = null
/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/release_items()
active = FALSE
if(!l_hand_ignore && l_hand_obj in owner.contents)
l_hand_obj.flags ^= NODROP
if(!r_hand_ignore && r_hand_obj in owner.contents)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 74 KiB

BIN
View File
Binary file not shown.