mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 09:54:52 +00:00
Merge branch 'master' into mapsyncs43293845982
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
/datum/component/forensics
|
/datum/component/forensics
|
||||||
|
dupe_mode = COMPONENT_DUPE_UNIQUE
|
||||||
var/list/fingerprints //assoc print = print
|
var/list/fingerprints //assoc print = print
|
||||||
var/list/hiddenprints //assoc ckey = realname/gloves/ckey
|
var/list/hiddenprints //assoc ckey = realname/gloves/ckey
|
||||||
var/list/blood_DNA //assoc dna = bloodtype
|
var/list/blood_DNA //assoc dna = bloodtype
|
||||||
|
|||||||
@@ -58,13 +58,22 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
|||||||
|
|
||||||
/mob/camera/blob/proc/validate_location()
|
/mob/camera/blob/proc/validate_location()
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
var/area/A = get_area(T)
|
if(!is_valid_turf(T) && LAZYLEN(GLOB.blobstart))
|
||||||
if(((A && !A.blob_allowed) || !T || !is_station_level(T.z)) && LAZYLEN(GLOB.blobstart))
|
var/list/blobstarts = shuffle(GLOB.blobstart)
|
||||||
T = get_turf(pick(GLOB.blobstart))
|
for(var/_T in blobstarts)
|
||||||
|
if(is_valid_turf(_T))
|
||||||
|
T = _T
|
||||||
|
break
|
||||||
if(!T)
|
if(!T)
|
||||||
CRASH("No blobspawnpoints and blob spawned in nullspace.")
|
CRASH("No blobspawnpoints and blob spawned in nullspace.")
|
||||||
forceMove(T)
|
forceMove(T)
|
||||||
|
|
||||||
|
/mob/camera/blob/proc/is_valid_turf(turf/T)
|
||||||
|
var/area/A = get_area(T)
|
||||||
|
if((A && !A.blob_allowed) || !T || !is_station_level(T.z) || isspaceturf(T))
|
||||||
|
return FALSE
|
||||||
|
return TRUE
|
||||||
|
|
||||||
/mob/camera/blob/Life()
|
/mob/camera/blob/Life()
|
||||||
if(!blob_core)
|
if(!blob_core)
|
||||||
if(!placed)
|
if(!placed)
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
#define ARK_GRACE_PERIOD 300 //In seconds, how long the crew has before the Ark truly "begins"
|
#define ARK_GRACE_PERIOD 300 //In seconds, how long the crew has before the Ark truly "begins"
|
||||||
|
|
||||||
|
/proc/clockwork_ark_active() //A helper proc so the Ark doesn't have to be typecast every time it's checked; returns null if there is no Ark and its active var otherwise
|
||||||
|
var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar
|
||||||
|
if(!G)
|
||||||
|
return
|
||||||
|
return G.active
|
||||||
|
|
||||||
//The gateway to Reebe, from which Ratvar emerges.
|
//The gateway to Reebe, from which Ratvar emerges.
|
||||||
/obj/structure/destructible/clockwork/massive/celestial_gateway
|
/obj/structure/destructible/clockwork/massive/celestial_gateway
|
||||||
name = "\improper Ark of the Clockwork Justicar"
|
name = "\improper Ark of the Clockwork Justicar"
|
||||||
@@ -63,7 +69,7 @@
|
|||||||
|
|
||||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/cry_havoc()
|
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/cry_havoc()
|
||||||
visible_message("<span class='boldwarning'>[src] shudders and roars to life, its parts beginning to whirr and screech!</span>")
|
visible_message("<span class='boldwarning'>[src] shudders and roars to life, its parts beginning to whirr and screech!</span>")
|
||||||
hierophant_message("<span class='bold large_brass'>The Ark is activating! Get back to the base!</span>")
|
hierophant_message("<span class='bold large_brass'>The Ark is activating! You will be transported there soon!</span>")
|
||||||
for(var/mob/M in GLOB.player_list)
|
for(var/mob/M in GLOB.player_list)
|
||||||
if(is_servant_of_ratvar(M) || isobserver(M) || M.z == z)
|
if(is_servant_of_ratvar(M) || isobserver(M) || M.z == z)
|
||||||
M.playsound_local(M, 'sound/magic/clockwork/ark_activation_sequence.ogg', 30, FALSE, pressure_affected = FALSE)
|
M.playsound_local(M, 'sound/magic/clockwork/ark_activation_sequence.ogg', 30, FALSE, pressure_affected = FALSE)
|
||||||
@@ -86,6 +92,8 @@
|
|||||||
var/datum/stack_recipe/R = V
|
var/datum/stack_recipe/R = V
|
||||||
if(R.title == "wall gear")
|
if(R.title == "wall gear")
|
||||||
R.time *= 2 //Building walls becomes slower when the Ark activates
|
R.time *= 2 //Building walls becomes slower when the Ark activates
|
||||||
|
mass_recall()
|
||||||
|
recalls_remaining++ //So it doesn't use up a charge
|
||||||
|
|
||||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/open_portal(turf/T)
|
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/open_portal(turf/T)
|
||||||
new/obj/effect/clockwork/city_of_cogs_rift(T)
|
new/obj/effect/clockwork/city_of_cogs_rift(T)
|
||||||
@@ -261,6 +269,12 @@
|
|||||||
if(!step_away(O, src, 2) || get_dist(O, src) < 2)
|
if(!step_away(O, src, 2) || get_dist(O, src) < 2)
|
||||||
O.take_damage(50, BURN, "bomb")
|
O.take_damage(50, BURN, "bomb")
|
||||||
O.update_icon()
|
O.update_icon()
|
||||||
|
for(var/V in GLOB.player_list)
|
||||||
|
var/mob/M = V
|
||||||
|
if(is_servant_of_ratvar(M) && M.z != z)
|
||||||
|
M.forceMove(get_step(src, SOUTH))
|
||||||
|
M.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
|
||||||
|
M.clear_fullscreen("flash", 5)
|
||||||
if(grace_period)
|
if(grace_period)
|
||||||
grace_period--
|
grace_period--
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -11,11 +11,11 @@
|
|||||||
slot_flags = SLOT_BELT
|
slot_flags = SLOT_BELT
|
||||||
var/usability = 0
|
var/usability = 0
|
||||||
|
|
||||||
var/reusable = TRUE
|
var/old_shard = FALSE
|
||||||
var/spent = FALSE
|
var/spent = FALSE
|
||||||
|
|
||||||
/obj/item/device/soulstone/proc/was_used()
|
/obj/item/device/soulstone/proc/was_used()
|
||||||
if(!reusable)
|
if(old_shard)
|
||||||
spent = TRUE
|
spent = TRUE
|
||||||
name = "dull [name]"
|
name = "dull [name]"
|
||||||
desc = "A fragment of the legendary treasure known simply as \
|
desc = "A fragment of the legendary treasure known simply as \
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
/obj/item/device/soulstone/anybody/chaplain
|
/obj/item/device/soulstone/anybody/chaplain
|
||||||
name = "mysterious old shard"
|
name = "mysterious old shard"
|
||||||
reusable = FALSE
|
old_shard = TRUE
|
||||||
|
|
||||||
/obj/item/device/soulstone/pickup(mob/living/user)
|
/obj/item/device/soulstone/pickup(mob/living/user)
|
||||||
..()
|
..()
|
||||||
@@ -38,6 +38,9 @@
|
|||||||
/obj/item/device/soulstone/examine(mob/user)
|
/obj/item/device/soulstone/examine(mob/user)
|
||||||
..()
|
..()
|
||||||
if(usability || iscultist(user) || iswizard(user) || isobserver(user))
|
if(usability || iscultist(user) || iswizard(user) || isobserver(user))
|
||||||
|
if (old_shard)
|
||||||
|
to_chat(user, "<span class='cult'>A soulstone, used to capture a soul, either from dead humans or from freed shades.</span>")
|
||||||
|
else
|
||||||
to_chat(user, "<span class='cult'>A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.</span>")
|
to_chat(user, "<span class='cult'>A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades.</span>")
|
||||||
to_chat(user, "<span class='cult'>The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade.</span>")
|
to_chat(user, "<span class='cult'>The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade.</span>")
|
||||||
if(spent)
|
if(spent)
|
||||||
@@ -151,7 +154,7 @@
|
|||||||
if(contents.len)
|
if(contents.len)
|
||||||
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soulstone is full! Free an existing soul to make room.")
|
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soulstone is full! Free an existing soul to make room.")
|
||||||
else
|
else
|
||||||
if(T.stat != CONSCIOUS)
|
if((!old_shard && T.stat != CONSCIOUS) || (old_shard && T.stat == DEAD))
|
||||||
if(T.client == null)
|
if(T.client == null)
|
||||||
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soul has already fled its mortal frame. You attempt to bring it back...")
|
to_chat(user, "<span class='userdanger'>Capture failed!</span>: The soul has already fled its mortal frame. You attempt to bring it back...")
|
||||||
getCultGhost(T,user)
|
getCultGhost(T,user)
|
||||||
|
|||||||
@@ -283,6 +283,9 @@
|
|||||||
if(!is_servant_of_ratvar(user))
|
if(!is_servant_of_ratvar(user))
|
||||||
to_chat(user, "<span class='warning'>[src]'s keys are in a language foreign to you, and you don't understand anything on its screen.</span>")
|
to_chat(user, "<span class='warning'>[src]'s keys are in a language foreign to you, and you don't understand anything on its screen.</span>")
|
||||||
return
|
return
|
||||||
|
if(clockwork_ark_active())
|
||||||
|
to_chat(user, "<span class='warning'>The Ark is active, and [src] has shut down.</span>")
|
||||||
|
return
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
/datum/action/innate/servant_warp
|
/datum/action/innate/servant_warp
|
||||||
|
|||||||
@@ -130,7 +130,6 @@
|
|||||||
if(authenticated==2)
|
if(authenticated==2)
|
||||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||||
make_announcement(usr)
|
make_announcement(usr)
|
||||||
deadchat_broadcast("<span class='deadsay bold'>[usr.name] made an priority announcement.</span>", usr)
|
|
||||||
|
|
||||||
if("crossserver")
|
if("crossserver")
|
||||||
if(authenticated==2)
|
if(authenticated==2)
|
||||||
@@ -702,6 +701,7 @@
|
|||||||
if(!input || !user.canUseTopic(src))
|
if(!input || !user.canUseTopic(src))
|
||||||
return
|
return
|
||||||
SScommunications.make_announcement(user, is_silicon, input)
|
SScommunications.make_announcement(user, is_silicon, input)
|
||||||
|
deadchat_broadcast("<span class='deadsay bold'>[user.name] made an priority announcement.</span>", user)
|
||||||
|
|
||||||
/obj/machinery/computer/communications/proc/post_status(command, data1, data2)
|
/obj/machinery/computer/communications/proc/post_status(command, data1, data2)
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
anchored = TRUE
|
anchored = TRUE
|
||||||
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||||
|
|
||||||
|
/obj/effect/decal/Initialize()
|
||||||
|
. = ..()
|
||||||
|
if(!isturf(loc) || NeverShouldHaveComeHere(loc))
|
||||||
|
return INITIALIZE_HINT_QDEL
|
||||||
|
|
||||||
|
/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T)
|
||||||
|
return isspaceturf(T) || isclosedturf(T) || islava(T) || istype(T, /turf/open/water) || ischasm(T)
|
||||||
|
|
||||||
/obj/effect/decal/ex_act(severity, target)
|
/obj/effect/decal/ex_act(severity, target)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
@@ -12,7 +20,7 @@
|
|||||||
|
|
||||||
/obj/effect/decal/HandleTurfChange(turf/T)
|
/obj/effect/decal/HandleTurfChange(turf/T)
|
||||||
..()
|
..()
|
||||||
if(T == loc && (isspaceturf(T) || isclosedturf(T) || islava(T) || istype(T, /turf/open/water) || ischasm(T)))
|
if(T == loc && NeverShouldHaveComeHere(T))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
points = 50
|
points = 50
|
||||||
var/blink_range = 8 // The teleport range when crushed/thrown at someone.
|
var/blink_range = 8 // The teleport range when crushed/thrown at someone.
|
||||||
refined_type = /obj/item/stack/sheet/bluespace_crystal
|
refined_type = /obj/item/stack/sheet/bluespace_crystal
|
||||||
grind_results = list("bluespace" = 2)
|
grind_results = list("bluespace" = 20)
|
||||||
|
|
||||||
/obj/item/ore/bluespace_crystal/refined
|
/obj/item/ore/bluespace_crystal/refined
|
||||||
name = "refined bluespace crystal"
|
name = "refined bluespace crystal"
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
blink_range = 4 // Not as good as the organic stuff!
|
blink_range = 4 // Not as good as the organic stuff!
|
||||||
points = 0 //nice try
|
points = 0 //nice try
|
||||||
refined_type = null
|
refined_type = null
|
||||||
grind_results = list("bluespace" = 1, "silicon" = 2)
|
grind_results = list("bluespace" = 10, "silicon" = 20)
|
||||||
|
|
||||||
//Polycrystals, aka stacks
|
//Polycrystals, aka stacks
|
||||||
/obj/item/stack/sheet/bluespace_crystal
|
/obj/item/stack/sheet/bluespace_crystal
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT)
|
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT)
|
||||||
attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed")
|
attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed")
|
||||||
novariants = TRUE
|
novariants = TRUE
|
||||||
grind_results = list("bluespace" = 2)
|
grind_results = list("bluespace" = 20)
|
||||||
var/crystal_type = /obj/item/ore/bluespace_crystal/refined
|
var/crystal_type = /obj/item/ore/bluespace_crystal/refined
|
||||||
|
|
||||||
/obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user)// to prevent the construction menu from ever happening
|
/obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user)// to prevent the construction menu from ever happening
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||||
heal_brute = 40
|
heal_brute = 40
|
||||||
self_delay = 20
|
self_delay = 20
|
||||||
grind_results = list("styptic_powder" = 1)
|
grind_results = list("styptic_powder" = 10)
|
||||||
|
|
||||||
/obj/item/stack/medical/bruise_pack/suicide_act(mob/user)
|
/obj/item/stack/medical/bruise_pack/suicide_act(mob/user)
|
||||||
user.visible_message("<span class='suicide'>[user] is bludgeoning [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
user.visible_message("<span class='suicide'>[user] is bludgeoning [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||||
@@ -148,4 +148,4 @@
|
|||||||
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
||||||
heal_burn = 40
|
heal_burn = 40
|
||||||
self_delay = 20
|
self_delay = 20
|
||||||
grind_results = list("silver_sulfadiazine" = 1)
|
grind_results = list("silver_sulfadiazine" = 10)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
|||||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 100)
|
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 100)
|
||||||
resistance_flags = ACID_PROOF
|
resistance_flags = ACID_PROOF
|
||||||
merge_type = /obj/item/stack/sheet/glass
|
merge_type = /obj/item/stack/sheet/glass
|
||||||
grind_results = list("silicon" = 1)
|
grind_results = list("silicon" = 20)
|
||||||
|
|
||||||
/obj/item/stack/sheet/glass/cyborg
|
/obj/item/stack/sheet/glass/cyborg
|
||||||
materials = list()
|
materials = list()
|
||||||
@@ -80,7 +80,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
|||||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100)
|
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100)
|
||||||
resistance_flags = ACID_PROOF
|
resistance_flags = ACID_PROOF
|
||||||
merge_type = /obj/item/stack/sheet/plasmaglass
|
merge_type = /obj/item/stack/sheet/plasmaglass
|
||||||
grind_results = list("silicon" = 1, "plasma" = 1)
|
grind_results = list("silicon" = 20, "plasma" = 10)
|
||||||
|
|
||||||
/obj/item/stack/sheet/plasmaglass/fifty
|
/obj/item/stack/sheet/plasmaglass/fifty
|
||||||
amount = 50
|
amount = 50
|
||||||
@@ -130,7 +130,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
|||||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 100)
|
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 100)
|
||||||
resistance_flags = ACID_PROOF
|
resistance_flags = ACID_PROOF
|
||||||
merge_type = /obj/item/stack/sheet/rglass
|
merge_type = /obj/item/stack/sheet/rglass
|
||||||
grind_results = list("silicon" = 1, "iron" = 1)
|
grind_results = list("silicon" = 20, "iron" = 10)
|
||||||
|
|
||||||
/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params)
|
/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params)
|
||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
@@ -171,7 +171,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
|||||||
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||||
resistance_flags = ACID_PROOF
|
resistance_flags = ACID_PROOF
|
||||||
merge_type = /obj/item/stack/sheet/plasmarglass
|
merge_type = /obj/item/stack/sheet/plasmarglass
|
||||||
grind_results = list("silicon" = 1, "plasma" = 1, "iron" = 1)
|
grind_results = list("silicon" = 20, "plasma" = 10, "iron" = 10)
|
||||||
|
|
||||||
/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE)
|
/obj/item/stack/sheet/plasmarglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||||
recipes = GLOB.prglass_recipes
|
recipes = GLOB.prglass_recipes
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
throw_range = 7
|
throw_range = 7
|
||||||
flags_1 = CONDUCT_1
|
flags_1 = CONDUCT_1
|
||||||
max_amount = 60
|
max_amount = 60
|
||||||
grind_results = list("silicon" = 1, "copper" = 1)
|
grind_results = list("silicon" = 20, "copper" = 5)
|
||||||
|
|
||||||
/obj/item/stack/light_w/attackby(obj/item/O, mob/user, params)
|
/obj/item/stack/light_w/attackby(obj/item/O, mob/user, params)
|
||||||
|
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \
|
|||||||
sheettype = "runed"
|
sheettype = "runed"
|
||||||
merge_type = /obj/item/stack/sheet/runed_metal
|
merge_type = /obj/item/stack/sheet/runed_metal
|
||||||
novariants = TRUE
|
novariants = TRUE
|
||||||
grind_results = list("iron" = 0.5, "blood" = 1.5)
|
grind_results = list("iron" = 5, "blood" = 15)
|
||||||
|
|
||||||
/obj/item/stack/sheet/runed_metal/ratvar_act()
|
/obj/item/stack/sheet/runed_metal/ratvar_act()
|
||||||
new /obj/item/stack/tile/brass(loc, amount)
|
new /obj/item/stack/tile/brass(loc, amount)
|
||||||
@@ -394,7 +394,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
|
|||||||
throw_range = 3
|
throw_range = 3
|
||||||
turf_type = /turf/open/floor/clockwork
|
turf_type = /turf/open/floor/clockwork
|
||||||
novariants = FALSE
|
novariants = FALSE
|
||||||
grind_results = list("iron" = 0.5, "teslium" = 1.5)
|
grind_results = list("iron" = 5, "teslium" = 15)
|
||||||
|
|
||||||
/obj/item/stack/tile/brass/narsie_act()
|
/obj/item/stack/tile/brass/narsie_act()
|
||||||
new /obj/item/stack/sheet/runed_metal(loc, amount)
|
new /obj/item/stack/sheet/runed_metal(loc, amount)
|
||||||
@@ -445,7 +445,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
|
|||||||
w_class = WEIGHT_CLASS_NORMAL
|
w_class = WEIGHT_CLASS_NORMAL
|
||||||
throw_speed = 1
|
throw_speed = 1
|
||||||
throw_range = 3
|
throw_range = 3
|
||||||
grind_results = list("carbon" = 1)
|
grind_results = list("carbon" = 10)
|
||||||
|
|
||||||
GLOBAL_LIST_INIT(plastic_recipes, list(
|
GLOBAL_LIST_INIT(plastic_recipes, list(
|
||||||
new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \
|
new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ FLOOR SAFES
|
|||||||
if(tumbler_1_pos == tumbler_1_open && tumbler_2_pos == tumbler_2_open)
|
if(tumbler_1_pos == tumbler_1_open && tumbler_2_pos == tumbler_2_open)
|
||||||
if(user)
|
if(user)
|
||||||
visible_message("<i><b>[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!</b></i>")
|
visible_message("<i><b>[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!</b></i>")
|
||||||
return 1
|
return TRUE
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/safe/proc/decrement(num)
|
/obj/structure/safe/proc/decrement(num)
|
||||||
@@ -83,7 +83,7 @@ FLOOR SAFES
|
|||||||
/obj/structure/safe/attack_hand(mob/user)
|
/obj/structure/safe/attack_hand(mob/user)
|
||||||
user.set_machine(src)
|
user.set_machine(src)
|
||||||
var/dat = "<center>"
|
var/dat = "<center>"
|
||||||
dat += "<a href='?src=[REF(src)];open=1'>[open ? "Close" : "Open"] [src]</a> | <a href='?src=[REF(src)];decrement=1'>-</a> [dial * 5] <a href='?src=[REF(src)];increment=1'>+</a>"
|
dat += "<a href='?src=[REF(src)];open=1'>[open ? "Close" : "Open"] [src]</a> | <a href='?src=[REF(src)];decrement=1'>-</a> [dial] <a href='?src=[REF(src)];increment=1'>+</a>"
|
||||||
if(open)
|
if(open)
|
||||||
dat += "<table>"
|
dat += "<table>"
|
||||||
for(var/i = contents.len, i>=1, i--)
|
for(var/i = contents.len, i>=1, i--)
|
||||||
@@ -101,9 +101,9 @@ FLOOR SAFES
|
|||||||
if(!user.canUseTopic(src))
|
if(!user.canUseTopic(src))
|
||||||
return
|
return
|
||||||
|
|
||||||
var/canhear = 0
|
var/canhear = FALSE
|
||||||
if(user.is_holding_item_of_type(/obj/item/clothing/neck/stethoscope))
|
if(user.is_holding_item_of_type(/obj/item/clothing/neck/stethoscope))
|
||||||
canhear = 1
|
canhear = TRUE
|
||||||
|
|
||||||
if(href_list["open"])
|
if(href_list["open"])
|
||||||
if(check_unlocked())
|
if(check_unlocked())
|
||||||
|
|||||||
@@ -22,18 +22,16 @@ GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache())
|
|||||||
|
|
||||||
/datum/gas_mixture
|
/datum/gas_mixture
|
||||||
var/list/gases
|
var/list/gases
|
||||||
var/temperature //kelvins
|
var/temperature = 0 //kelvins
|
||||||
var/tmp/temperature_archived
|
var/tmp/temperature_archived = 0
|
||||||
var/volume //liters
|
var/volume = CELL_VOLUME //liters
|
||||||
var/last_share
|
var/last_share = 0
|
||||||
var/list/reaction_results
|
var/list/reaction_results
|
||||||
|
|
||||||
/datum/gas_mixture/New(volume = CELL_VOLUME)
|
/datum/gas_mixture/New(volume)
|
||||||
gases = new
|
gases = new
|
||||||
temperature = 0
|
if (!isnull(volume))
|
||||||
temperature_archived = 0
|
|
||||||
src.volume = volume
|
src.volume = volume
|
||||||
last_share = 0
|
|
||||||
reaction_results = new
|
reaction_results = new
|
||||||
|
|
||||||
//listmos procs
|
//listmos procs
|
||||||
|
|||||||
@@ -301,7 +301,8 @@ Pipelines + Other Objects -> Pipe network
|
|||||||
#define VENT_SOUND_DELAY 30
|
#define VENT_SOUND_DELAY 30
|
||||||
|
|
||||||
/obj/machinery/atmospherics/relaymove(mob/living/user, direction)
|
/obj/machinery/atmospherics/relaymove(mob/living/user, direction)
|
||||||
if(!(direction & initialize_directions)) //cant go this way.
|
direction &= initialize_directions
|
||||||
|
if(!direction || !(direction in GLOB.cardinals)) //cant go this way.
|
||||||
return
|
return
|
||||||
|
|
||||||
if(user in buckled_mobs)// fixes buckle ventcrawl edgecase fuck bug
|
if(user in buckled_mobs)// fixes buckle ventcrawl edgecase fuck bug
|
||||||
@@ -322,13 +323,12 @@ Pipelines + Other Objects -> Pipe network
|
|||||||
if(world.time - user.last_played_vent > VENT_SOUND_DELAY)
|
if(world.time - user.last_played_vent > VENT_SOUND_DELAY)
|
||||||
user.last_played_vent = world.time
|
user.last_played_vent = world.time
|
||||||
playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3)
|
playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3)
|
||||||
else
|
else if(is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent
|
||||||
if((direction & initialize_directions) || is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent
|
|
||||||
user.forceMove(loc)
|
user.forceMove(loc)
|
||||||
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>","<span class='notice'>You climb out the ventilation system.")
|
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>","<span class='notice'>You climb out the ventilation system.")
|
||||||
user.canmove = 0
|
|
||||||
spawn(1)
|
user.canmove = FALSE
|
||||||
user.canmove = 1
|
addtimer(VARSET_CALLBACK(user, canmove, TRUE), 1)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/atmospherics/AltClick(mob/living/L)
|
/obj/machinery/atmospherics/AltClick(mob/living/L)
|
||||||
|
|||||||
@@ -205,8 +205,26 @@
|
|||||||
/mob/proc/put_in_hands(obj/item/I, del_on_fail = FALSE)
|
/mob/proc/put_in_hands(obj/item/I, del_on_fail = FALSE)
|
||||||
if(!I)
|
if(!I)
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
|
// If the item is a stack and we're already holding a stack then merge
|
||||||
|
if (istype(I, /obj/item/stack))
|
||||||
|
var/obj/item/stack/I_stack = I
|
||||||
|
var/obj/item/stack/active_stack = get_active_held_item()
|
||||||
|
|
||||||
|
if (istype(active_stack) && istype(I_stack, active_stack.merge_type))
|
||||||
|
if (I_stack.merge(active_stack))
|
||||||
|
to_chat(usr, "<span class='notice'>Your [active_stack.name] stack now contains [active_stack.get_amount()] [active_stack.singular_name]\s.</span>")
|
||||||
|
return TRUE
|
||||||
|
else
|
||||||
|
var/obj/item/stack/inactive_stack = get_inactive_held_item()
|
||||||
|
if (istype(inactive_stack) && istype(I_stack, inactive_stack.merge_type))
|
||||||
|
if (I_stack.merge(inactive_stack))
|
||||||
|
to_chat(usr, "<span class='notice'>Your [inactive_stack.name] stack now contains [inactive_stack.get_amount()] [inactive_stack.singular_name]\s.</span>")
|
||||||
|
return TRUE
|
||||||
|
|
||||||
if(put_in_active_hand(I))
|
if(put_in_active_hand(I))
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
var/hand = get_empty_held_index_for_side("l")
|
var/hand = get_empty_held_index_for_side("l")
|
||||||
if(!hand)
|
if(!hand)
|
||||||
hand = get_empty_held_index_for_side("r")
|
hand = get_empty_held_index_for_side("r")
|
||||||
|
|||||||
@@ -386,12 +386,22 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
|||||||
81-90: Extremely high alcohol content - light brain damage, passing out
|
81-90: Extremely high alcohol content - light brain damage, passing out
|
||||||
91-100: Dangerously toxic - swift death
|
91-100: Dangerously toxic - swift death
|
||||||
*/
|
*/
|
||||||
|
#define BALLMER_POINTS 5
|
||||||
|
GLOBAL_LIST_INIT(ballmer_good_msg, list("Hey guys, what if we rolled out a bluespace wiring system so mice can't destroy the powergrid anymore?",
|
||||||
|
"Hear me out here. What if, and this is just a theory, we made R&D controllable from our PDAs?",
|
||||||
|
"I'm thinking we should roll out a git repository for our research under the AGPLv3 license so that we can share it among the other stations freely.",
|
||||||
|
"I dunno about you guys, but IDs and PDAs being separate is clunky as fuck. Maybe we should merge them into a chip in our arms? That way they can't be stolen easily.",
|
||||||
|
"Why the fuck aren't we just making every pair of shoes into galoshes? We have the technology."))
|
||||||
|
GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put a webserver that's automatically turned on with default admin passwords into every PDA?",
|
||||||
|
"So like, you know how we separate our codebase from the master copy that runs on our consumer boxes? What if we merged the two and undid the separation between codebase and server?",
|
||||||
|
"Dude, radical idea: H.O.N.K mechs but with no bananium required.",
|
||||||
|
"Best idea ever: Disposal pipes instead of hallways."))
|
||||||
/mob/living/carbon/human/handle_status_effects()
|
/mob/living/carbon/human/handle_status_effects()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|
||||||
if(drunkenness)
|
if(drunkenness)
|
||||||
drunkenness = max(drunkenness - (drunkenness * 0.04), 0)
|
drunkenness = max(drunkenness - (drunkenness * 0.04), 0)
|
||||||
|
|
||||||
if(drunkenness >= 6)
|
if(drunkenness >= 6)
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
slurring += 2
|
slurring += 2
|
||||||
@@ -399,7 +409,22 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
|||||||
|
|
||||||
if(drunkenness >= 11 && slurring < 5)
|
if(drunkenness >= 11 && slurring < 5)
|
||||||
slurring += 1.2
|
slurring += 1.2
|
||||||
|
if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director"))
|
||||||
|
if(SSresearch.science_tech)
|
||||||
|
if(drunkenness >= 12.9 && drunkenness <= 13.8)
|
||||||
|
drunkenness = round(drunkenness, 0.01)
|
||||||
|
var/ballmer_percent = 0
|
||||||
|
if(drunkenness == 13.35) // why run math if I dont have to
|
||||||
|
ballmer_percent = 1
|
||||||
|
else
|
||||||
|
ballmer_percent = (-abs(drunkenness - 13.35) / 0.9) + 1
|
||||||
|
if(prob(5))
|
||||||
|
say(pick(GLOB.ballmer_good_msg))
|
||||||
|
SSresearch.science_tech.research_points += (BALLMER_POINTS * ballmer_percent)
|
||||||
|
if(drunkenness > 26) // by this point you're into windows ME territory
|
||||||
|
if(prob(5))
|
||||||
|
SSresearch.science_tech.research_points -= BALLMER_POINTS
|
||||||
|
say(pick(GLOB.ballmer_windows_me_msg))
|
||||||
if(drunkenness >= 41)
|
if(drunkenness >= 41)
|
||||||
if(prob(25))
|
if(prob(25))
|
||||||
confused += 2
|
confused += 2
|
||||||
|
|||||||
@@ -807,6 +807,15 @@
|
|||||||
build_path = /obj/item/stock_parts/cell/emergency_light
|
build_path = /obj/item/stock_parts/cell/emergency_light
|
||||||
category = list("initial", "Electronics")
|
category = list("initial", "Electronics")
|
||||||
|
|
||||||
|
/datum/design/packageWrap
|
||||||
|
name = "Package Wrapping"
|
||||||
|
id = "packagewrap"
|
||||||
|
build_type = AUTOLATHE
|
||||||
|
materials = list(MAT_METAL = 200, MAT_GLASS = 200)
|
||||||
|
build_path = /obj/item/stack/packageWrap
|
||||||
|
category = list("initial", "Misc")
|
||||||
|
maxstack = 30
|
||||||
|
|
||||||
/datum/design/holodisk
|
/datum/design/holodisk
|
||||||
name = "Holodisk"
|
name = "Holodisk"
|
||||||
id = "holodisk"
|
id = "holodisk"
|
||||||
|
|||||||
@@ -24,9 +24,7 @@
|
|||||||
stoplag(1)
|
stoplag(1)
|
||||||
|
|
||||||
/obj/effect/proc_holder/spell/targeted/touch/can_cast(mob/user = usr)
|
/obj/effect/proc_holder/spell/targeted/touch/can_cast(mob/user = usr)
|
||||||
if(attached_hand)
|
return ..() && attached_hand
|
||||||
return TRUE
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/obj/effect/proc_holder/spell/targeted/touch/proc/ChargeHand(mob/living/carbon/user)
|
/obj/effect/proc_holder/spell/targeted/touch/proc/ChargeHand(mob/living/carbon/user)
|
||||||
attached_hand = new hand_path(src)
|
attached_hand = new hand_path(src)
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ GLOBAL_LIST(uplink_purchase_logs_by_key) //assoc key = /datum/uplink_purchase_lo
|
|||||||
/datum/uplink_purchase_log/Destroy()
|
/datum/uplink_purchase_log/Destroy()
|
||||||
purchase_log = null
|
purchase_log = null
|
||||||
parent = null
|
parent = null
|
||||||
|
if(GLOB.uplink_purchase_logs_by_key[owner] == src)
|
||||||
|
GLOB.uplink_purchase_logs_by_key -= owner
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/datum/uplink_purchase_log/proc/MergeWithAndDel(datum/uplink_purchase_log/other)
|
/datum/uplink_purchase_log/proc/MergeWithAndDel(datum/uplink_purchase_log/other)
|
||||||
|
|||||||
@@ -61,14 +61,9 @@
|
|||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/vehicle/ridden/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE)
|
/obj/vehicle/ridden/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE)
|
||||||
if(user.incapacitated())
|
if(!in_range(user, src) || !in_range(M, src))
|
||||||
return
|
return FALSE
|
||||||
for(var/atom/movable/A in get_turf(src))
|
. = ..(M, user, FALSE)
|
||||||
if(A.density)
|
|
||||||
if(A != src && A != M)
|
|
||||||
return
|
|
||||||
M.forceMove(get_turf(src))
|
|
||||||
. = ..()
|
|
||||||
|
|
||||||
/obj/vehicle/ridden/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE)
|
/obj/vehicle/ridden/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE)
|
||||||
if(!force && occupant_amount() >= max_occupants)
|
if(!force && occupant_amount() >= max_occupants)
|
||||||
|
|||||||
@@ -51,7 +51,8 @@ BAN_LEGACY_SYSTEM
|
|||||||
## Unhash this to enable playtime requirements for head jobs.
|
## Unhash this to enable playtime requirements for head jobs.
|
||||||
#USE_EXP_RESTRICTIONS_HEADS
|
#USE_EXP_RESTRICTIONS_HEADS
|
||||||
## Unhash this to override head jobs' playtime requirements with this number of hours.
|
## Unhash this to override head jobs' playtime requirements with this number of hours.
|
||||||
#USE_EXP_RESTRICTIONS_HEADS_HOURS 15
|
## Leave this commented out to use the values defined in the job datums. Values in the datums are stored as minutes.
|
||||||
|
#USE_EXP_RESTRICTIONS_HEADS_HOURS 3
|
||||||
## Unhash this to change head jobs' playtime requirements so that they're based on department playtime, rather than crew playtime.
|
## Unhash this to change head jobs' playtime requirements so that they're based on department playtime, rather than crew playtime.
|
||||||
#USE_EXP_RESTRICTIONS_HEADS_DEPARTMENT
|
#USE_EXP_RESTRICTIONS_HEADS_DEPARTMENT
|
||||||
## Unhash this to enable playtime requirements for certain non-head jobs, like Engineer and Scientist.
|
## Unhash this to enable playtime requirements for certain non-head jobs, like Engineer and Scientist.
|
||||||
|
|||||||
4
html/changelogs/AutoChangeLog-pr-4695.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4695.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "CitadelStationBot"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- config: "The default config for head of staff exp override is closer to the actual default with no override."
|
||||||
4
html/changelogs/AutoChangeLog-pr-4696.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4696.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "CitadelStationBot"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Lavaboats no longer set you on fire."
|
||||||
4
html/changelogs/AutoChangeLog-pr-4698.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4698.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "CitadelStationBot"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Decals will no longer spawn where they don't belong"
|
||||||
4
html/changelogs/AutoChangeLog-pr-4699.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4699.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "CitadelStationBot"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "comms consoles no longer announce in deadchat announcements if they were cooling down and unsuccessful."
|
||||||
4
html/changelogs/AutoChangeLog-pr-4703.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4703.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "MrDoomBringer"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- rscadd: "Advances in NanoTrasen's wrapping department have resulted in the easy creation of package wrap from all station autolathes!"
|
||||||
4
html/changelogs/AutoChangeLog-pr-4705.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4705.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Xhuis"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- balance: "Servants are now teleported to the Ark when it activates, and cannot leave Reebe afterwards."
|
||||||
4
html/changelogs/AutoChangeLog-pr-4706.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4706.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "JohnGinnane"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- rscadd: "Newly crafted stacks are merged with held stacks of the same type."
|
||||||
4
html/changelogs/AutoChangeLog-pr-4707.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4707.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "Iamgoofball"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Booze now properly reflects programming speed."
|
||||||
4
html/changelogs/AutoChangeLog-pr-4709.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4709.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "ninjanomnom"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Moving diagonally in pipes should no longer eject you from the pipe."
|
||||||
4
html/changelogs/AutoChangeLog-pr-4712.yml
Normal file
4
html/changelogs/AutoChangeLog-pr-4712.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: "More Robust Than You"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- bugfix: "Blob Overminds should no longer to be able to spawn on ANY space tile"
|
||||||
5
html/changelogs/AutoChangeLog-pr-4714.yml
Normal file
5
html/changelogs/AutoChangeLog-pr-4714.yml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
author: "Dax Dupont"
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- balance: "The chaplain's soul stone now requires death instead of (soft) crit."
|
||||||
|
- bugfix: "The examine text now properly states that it can only capture a single soul."
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
Added the <b>Eminence</b>, a leader role that servants can become by interacting with the new eminence spire structure in Reebe.
|
When revived by a vitality matrix, servants will gain a 1-minute debuff that prevents revival again.
|
||||||
Scripture has been re-colored in the slab interface to show its niche at a glance.
|
Vitality matrices must now be placed at least one tile apart.
|
||||||
Added traps, including the brass skewer and steam vent.
|
Servants are now teleported to and locked on Reebe once the Ark starts.
|
||||||
Added trap triggers, including the pressure sensor, lever, and repeater.
|
Cyborgs are now damaged by brass skewers.
|
||||||
Traps and trap triggers can be linked by using your clockwork slab on them. Traps chained to each other will cause those traps to activate as well.
|
Vitality matrices no longer work on buckled mobs (including skewered ones.)
|
||||||
You can instantly remove traps you misplace by using a wrench on them.
|
Pressure sensors have much less health.
|
||||||
<b><i>Mending Mantra has been removed.</i></b>
|
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
@echo off
|
@echo off
|
||||||
REM Get the documents folder from the registry.
|
REM Get the documents folder from the registry.
|
||||||
for /f "tokens=3* delims= " %%a in (
|
@echo off
|
||||||
'reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal"'
|
for /f "tokens=3*" %%p in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal') do (
|
||||||
) do (
|
set DocumentsFolder=%%p
|
||||||
set documents=%%a %%b
|
|
||||||
)
|
)
|
||||||
REM Copy assets to the BYOND cache
|
REM Copy assets to the BYOND cache
|
||||||
cmd /c copy assets\* "%documents%\BYOND\cache" /y
|
cmd /c copy assets\* "%DocumentsFolder%\BYOND\cache" /y
|
||||||
|
|||||||
Reference in New Issue
Block a user