Merge branch 'master' of https://github.com/PolarisSS13/Polaris into PulseBasedReagentProcessing

This commit is contained in:
Mechoid
2019-04-13 23:53:11 -07:00
27 changed files with 201 additions and 55 deletions
+1
View File
@@ -6,6 +6,7 @@
#define MAP_LEVEL_SEALED 0x010 // Z-levels that don't allow random transit at edge
#define MAP_LEVEL_EMPTY 0x020 // Empty Z-levels that may be used for various things (currently used by bluespace jump)
#define MAP_LEVEL_CONSOLES 0x040 // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset.
#define MAP_LEVEL_XENOARCH_EXEMPT 0x080 // Z-levels exempt from xenoarch digsite generation.
// Misc map defines.
#define SUBMAP_MAP_EDGE_PAD 15 // Automatically created submaps are forbidden from being this close to the main map's edge.
+4
View File
@@ -100,6 +100,7 @@ var/datum/controller/supply/supply_controller = new()
EC.name = "\proper[MA.name]"
EC.value = 0
EC.contents = list()
var/base_value = 0
// Must be in a crate!
if(istype(MA,/obj/structure/closet/crate))
@@ -107,6 +108,8 @@ var/datum/controller/supply/supply_controller = new()
callHook("sell_crate", list(CR, area_shuttle))
points += CR.points_per_crate
if(CR.points_per_crate)
base_value = CR.points_per_crate
var/find_slip = 1
for(var/atom/A in CR)
@@ -151,6 +154,7 @@ var/datum/controller/supply/supply_controller = new()
exported_crates += EC
points += EC.value
EC.value += base_value
// Duplicate the receipt for the admin-side log
var/datum/exported_crate/adm = new()
+1 -1
View File
@@ -31,7 +31,7 @@ SUBSYSTEM_DEF(xenoarch)
/datum/controller/subsystem/xenoarch/proc/SetupXenoarch()
for(var/turf/simulated/mineral/M in turfs)
if(!M.density)
if(!M.density || M.z in using_map.xenoarch_exempt_levels)
continue
if(isnull(M.geologic_data))
+2 -1
View File
@@ -10,5 +10,6 @@
name = "Destroyed"
/datum/Destroy()
GLOB.destroyed_event.raise_event(src)
if(GLOB.destroyed_event)
GLOB.destroyed_event.raise_event(src)
. = ..()
-4
View File
@@ -10,10 +10,6 @@
/datum/wires/seedstorage/CanUse(var/mob/living/L)
var/obj/machinery/seed_storage/V = holder
if(!istype(L, /mob/living/silicon))
if(V.seconds_electrified)
if(V.shock(L, 100))
return 0
if(V.panel_open)
return 1
return 0
-4
View File
@@ -12,10 +12,6 @@ var/const/SMARTFRIDGE_WIRE_IDSCAN = 4
/datum/wires/smartfridge/CanUse(var/mob/living/L)
var/obj/machinery/smartfridge/S = holder
if(!istype(L, /mob/living/silicon))
if(S.seconds_electrified)
if(S.shock(L, 100))
return 0
if(S.panel_open)
return 1
return 0
+1 -5
View File
@@ -9,10 +9,6 @@ var/const/VENDING_WIRE_IDSCAN = 8
/datum/wires/vending/CanUse(var/mob/living/L)
var/obj/machinery/vending/V = holder
if(!istype(L, /mob/living/silicon))
if(V.seconds_electrified)
if(V.shock(L, 100))
return 0
if(V.panel_open)
return 1
return 0
@@ -43,7 +39,7 @@ var/const/VENDING_WIRE_IDSCAN = 8
if(VENDING_WIRE_THROW)
V.shoot_inventory = !mended
if(VENDING_WIRE_CONTRABAND)
V.categories &= ~CAT_HIDDEN
V.categories &= ~CAT_HIDDEN
if(VENDING_WIRE_ELECTRIFY)
if(mended)
V.seconds_electrified = 0
+16 -17
View File
@@ -205,24 +205,23 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(computer_deconstruction_screwdriver(user, O))
return
if(istype(O, /obj/item/device/multitool))
if(panel_open)
var/input = sanitize(input(usr, "What Department ID would you like to give this request console?", "Multitool-Request Console Interface", department))
if(!input)
to_chat(usr, "No input found. Please hang up and try your call again.")
return
department = input
announcement.title = "[department] announcement"
announcement.newscast = 1
name = "[department] Requests Console"
allConsoles += src
if(departmentType & RC_ASSIST)
req_console_assistance |= department
if(departmentType & RC_SUPPLY)
req_console_supplies |= department
if(departmentType & RC_INFO)
req_console_information |= department
var/input = sanitize(input(usr, "What Department ID would you like to give this request console?", "Multitool-Request Console Interface", department))
if(!input)
to_chat(usr, "No input found. Please hang up and try your call again.")
return
department = input
announcement.title = "[department] announcement"
announcement.newscast = 1
name = "[department] Requests Console"
allConsoles += src
if(departmentType & RC_ASSIST)
req_console_assistance |= department
if(departmentType & RC_SUPPLY)
req_console_supplies |= department
if(departmentType & RC_INFO)
req_console_information |= department
return
if(istype(O, /obj/item/weapon/card/id))
if(inoperable(MAINT)) return
@@ -51,6 +51,24 @@
toolspeed = 0.1
origin_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 4)
/obj/item/weapon/tool/crowbar/hybrid
name = "strange crowbar"
desc = "A crowbar whose head seems to phase in and out of view."
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_crowbar)
icon_state = "hybcrowbar"
usesound = 'sound/weapons/sonic_jackhammer.ogg'
toolspeed = 0.4
origin_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 3)
reach = 2
/obj/item/weapon/tool/crowbar/hybrid/is_crowbar()
if(prob(10))
var/turf/T = get_turf(src)
radiation_repository.radiate(get_turf(src), 5)
T.visible_message("<span class='alien'>\The [src] shudders!</span>")
return FALSE
return TRUE
/obj/item/weapon/tool/crowbar/cyborg
name = "hydraulic crowbar"
desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbars in industrial synthetics."
@@ -92,6 +92,27 @@
toolspeed = 0.1
random_color = FALSE
/obj/item/weapon/tool/screwdriver/hybrid
name = "strange screwdriver"
desc = "A strange conglomerate of a screwdriver."
icon_state = "hybscrewdriver"
item_state = "screwdriver_black"
origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
slowdown = 0.1
w_class = ITEMSIZE_NORMAL
usesound = 'sound/effects/uncloak.ogg'
toolspeed = 0.4
random_color = FALSE
reach = 2
/obj/item/weapon/tool/screwdriver/hybrid/is_screwdriver()
if(prob(10))
var/turf/T = get_turf(src)
radiation_repository.radiate(get_turf(src), 5)
T.visible_message("<span class='alien'>\The [src] shudders!</span>")
return FALSE
return TRUE
/obj/item/weapon/tool/screwdriver/cyborg
name = "powered screwdriver"
desc = "An electrical screwdriver, designed to be both precise and quick."
@@ -436,6 +436,19 @@
nextrefueltick = world.time + 10
reagents.add_reagent("fuel", 1)
/obj/item/weapon/weldingtool/experimental/hybrid
name = "strange welding tool"
desc = "An experimental welder capable of synthesizing its own fuel from spatial waveforms. It's like welding with a star!"
icon_state = "hybwelder"
max_fuel = 20
eye_safety_modifier = -2 // Brighter than the sun. Literally, you can look at the sun with a welding mask of proper grade, this will burn through that.
slowdown = 0.1
toolspeed = 0.25
w_class = ITEMSIZE_LARGE
flame_intensity = 5
origin_tech = list(TECH_ENGINEERING = 5, TECH_PHORON = 4, TECH_PRECURSOR = 1)
reach = 2
/*
* Backpack Welder.
*/
@@ -73,6 +73,26 @@
usesound = 'sound/items/jaws_cut.ogg'
toolspeed = 0.5
/obj/item/weapon/tool/wirecutters/hybrid
name = "strange wirecutters"
desc = "This cuts wires. With <span class='alien'>Science!</span>"
icon_state = "hybcutters"
w_class = ITEMSIZE_NORMAL
slowdown = 0.1
origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_PHORON = 2)
attack_verb = list("pinched", "nipped", "warped", "blasted")
usesound = 'sound/effects/stealthoff.ogg'
toolspeed = 0.4
reach = 2
/obj/item/weapon/tool/wirecutters/hybrid/is_wirecutter()
if(prob(10))
var/turf/T = get_turf(src)
radiation_repository.radiate(get_turf(src), 5)
T.visible_message("<span class='alien'>\The [src] shudders!</span>")
return FALSE
return TRUE
/obj/item/weapon/tool/wirecutters/power
name = "jaws of life"
desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head."
@@ -25,6 +25,29 @@
usesound = 'sound/items/drill_use.ogg'
toolspeed = 0.5
/obj/item/weapon/tool/wrench/hybrid // Slower and bulkier than normal power tools, but it has the power of reach.
name = "strange wrench"
desc = "A wrench with many common uses. Can be usually found in your hand."
icon = 'icons/obj/tools.dmi'
icon_state = "hybwrench"
slot_flags = SLOT_BELT
force = 8
throwforce = 10
w_class = ITEMSIZE_NORMAL
slowdown = 0.1
origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_PHORON = 2)
attack_verb = list("bashed", "battered", "bludgeoned", "whacked", "warped", "blasted")
usesound = 'sound/effects/stealthoff.ogg'
toolspeed = 0.5
reach = 2
/obj/item/weapon/tool/wrench/hybrid/is_wrench()
if(prob(10))
var/turf/T = get_turf(src)
radiation_repository.radiate(get_turf(src), 5)
T.visible_message("<span class='alien'>\The [src] shudders!</span>")
return FALSE
return TRUE
/datum/category_item/catalogue/anomalous/precursor_a/alien_wrench
name = "Precursor Alpha Object - Fastener Torque Tool"
@@ -65,7 +65,7 @@
return 1
return 0
/obj/item/weapon/reagent_containers/food/drinks/glass2/New()
/obj/item/weapon/reagent_containers/food/drinks/glass2/Initialize()
..()
icon_state = base_icon
+2 -2
View File
@@ -11,7 +11,7 @@
rim_pos = null // no fruit slices
var/lid_color = "black"
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/New()
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/Initialize()
..()
lid_color = pick("black", "red", "blue")
update_icon()
@@ -23,7 +23,7 @@
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake
name = "protein shake"
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/New()
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/Initialize()
..()
reagents.add_reagent("nutriment", 30)
reagents.add_reagent("iron", 10)
@@ -171,9 +171,11 @@
"phoron" = 15,
"silver" = 16,
"gold" = 18,
"marble" = 20,
"uranium" = 30,
"diamond" = 50,
"platinum" = 40,
"lead" = 40,
"mhydrogen" = 40,
"verdantium" = 60)
+5 -5
View File
@@ -158,8 +158,8 @@ var/global/list/ore_data = list()
/ore/lead
name = MAT_LEAD
display_name = "lead glance"
compresses_to = "marble"
result_amount = 1
spread_chance = 10
ore = /obj/item/weapon/ore/marble
scan_icon = "mineral_rare"
smelts_to = "lead"
result_amount = 3
spread_chance = 20
ore = /obj/item/weapon/ore/lead
scan_icon = "mineral_rare"
+1 -1
View File
@@ -1387,7 +1387,7 @@
/mob/living/carbon/human/proc/process_glasses(var/obj/item/clothing/glasses/G)
if(G && G.active)
see_in_dark += G.darkness_view
if(G.overlay)
if(G.overlay && client)
client.screen |= G.overlay
if(G.vision_flags)
sight |= G.vision_flags
+5 -1
View File
@@ -904,7 +904,11 @@ default behaviour is:
/mob/living/proc/escape_buckle()
if(buckled)
buckled.user_unbuckle_mob(src, src)
if(istype(buckled, /obj/vehicle))
var/obj/vehicle/vehicle = buckled
vehicle.unload()
else
buckled.user_unbuckle_mob(src, src)
/mob/living/proc/resist_grab()
var/resisting = 0
+4 -1
View File
@@ -299,7 +299,10 @@ var/list/ai_verbs_default = list(
/obj/machinery/ai_powersupply/New(var/mob/living/silicon/ai/ai=null)
powered_ai = ai
powered_ai.psupply = src
forceMove(powered_ai.loc)
if(istype(powered_ai,/mob/living/silicon/ai/announcer)) //Don't try to get a loc for a nullspace announcer mob, just put it into it
forceMove(powered_ai)
else
forceMove(powered_ai.loc)
..()
use_power(1) // Just incase we need to wake up the power system.
-5
View File
@@ -144,11 +144,6 @@
charge -= output_used*SMESRATE // reduce the storage (may be recovered in /restore() if excessive)
add_avail(output_used) // add output to powernet (smes side)
if(output_used < 0.0001) // either from no charge or set to 0
outputting(0)
investigate_log("lost power and turned <font color='red'>off</font>","singulo")
log_game("SMES([x],[y],[z]) Power depleted.")
else if(output_attempt && output_level > 0)
outputting = 1
else
+1 -1
View File
@@ -247,7 +247,7 @@
closest_atom = A
closest_dist = dist
else if(closest_mob)
else if(closest_machine)
continue
else if(istype(A, /obj/structure/blob))
+13 -6
View File
@@ -32,12 +32,7 @@
if(newdir)
set_dir(newdir)
if(dir & (dir-1)) // Diagonal. Forwards is *away* from dir, curving to the right.
forwards = turn(dir, 135)
backwards = turn(dir, 45)
else
forwards = dir
backwards = turn(dir, 180)
update_dir()
if(on)
operating = FORWARDS
@@ -60,6 +55,18 @@
operating = OFF
update()
/obj/machinery/conveyor/set_dir()
.=..()
update_dir()
/obj/machinery/conveyor/proc/update_dir()
if(!(dir in cardinal)) // Diagonal. Forwards is *away* from dir, curving to the right.
forwards = turn(dir, 135)
backwards = turn(dir, 45)
else
forwards = dir
backwards = turn(dir, 180)
/obj/machinery/conveyor/proc/update()
if(stat & BROKEN)
icon_state = "conveyor-broken"
@@ -13,6 +13,51 @@
desc = initial(I.desc)
..()
/datum/design/item/precursor/crowbar
name = "Hybrid Crowbar"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridcrowbar"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_GOLD = 250, MAT_URANIUM = 2500)
build_path = /obj/item/weapon/tool/crowbar/hybrid
sort_string = "PATAC"
/datum/design/item/precursor/wrench
name = "Hybrid Wrench"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwrench"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_SILVER = 300, MAT_URANIUM = 2000)
build_path = /obj/item/weapon/tool/wrench/hybrid
sort_string = "PATAW"
/datum/design/item/precursor/screwdriver
name = "Hybrid Screwdriver"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridscrewdriver"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_DIAMOND = 2000)
build_path = /obj/item/weapon/tool/screwdriver/hybrid
sort_string = "PATAS"
/datum/design/item/precursor/wirecutters
name = "Hybrid Wirecutters"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwirecutters"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_PHORON = 2, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_PHORON = 2750, MAT_DIAMOND = 2000)
build_path = /obj/item/weapon/tool/wirecutters/hybrid
sort_string = "PATBW"
/datum/design/item/precursor/welder
name = "Hybrid Welding Tool"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwelder"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PHORON = 3, TECH_MAGNET = 5, TECH_PRECURSOR = 1)
materials = list(MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_METALHYDROGEN = 4750, MAT_URANIUM = 6000)
build_path = /obj/item/weapon/weldingtool/experimental/hybrid
sort_string = "PATCW"
/datum/design/item/anomaly/AssembleDesignName()
..()
name = "Anomalous prototype ([item_name])"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+2
View File
@@ -30,6 +30,7 @@ var/list/all_maps = list()
var/list/contact_levels = list() // Z-levels that can be contacted from the station, for eg announcements
var/list/player_levels = list() // Z-levels a character can typically reach
var/list/sealed_levels = list() // Z-levels that don't allow random transit at edge
var/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning.
var/list/empty_levels = null // Empty Z-levels that may be used for various things (currently used by bluespace jump)
var/list/map_levels // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset.
@@ -178,6 +179,7 @@ var/list/all_maps = list()
if(flags & MAP_LEVEL_CONTACT) map.contact_levels += z
if(flags & MAP_LEVEL_PLAYER) map.player_levels += z
if(flags & MAP_LEVEL_SEALED) map.sealed_levels += z
if(flags & MAP_LEVEL_XENOARCH_EXEMPT) map.xenoarch_exempt_levels += z
if(flags & MAP_LEVEL_EMPTY)
if(!map.empty_levels) map.empty_levels = list()
map.empty_levels += z