diff --git a/code/WorkInProgress/Cael_Aislinn/energy_field.dm b/code/WorkInProgress/Cael_Aislinn/energy_field.dm
index 4488fc3af03..2f79a820cdb 100644
--- a/code/WorkInProgress/Cael_Aislinn/energy_field.dm
+++ b/code/WorkInProgress/Cael_Aislinn/energy_field.dm
@@ -8,7 +8,7 @@
icon_state = "shieldsparkles"
anchored = 1
layer = 2.1
- density = 0
+ density = 1
invisibility = 2
var/strength = 0
var/obj/machinery/shield_gen/parent
@@ -31,7 +31,7 @@
//if we take too much damage, drop out - the generator will bring us back up if we have enough power
if(strength < 1)
- invisibility = 2
+ invisibility = 101
density = 0
/obj/effect/energy_field/proc/Strengthen(var/severity)
@@ -41,7 +41,7 @@
if(strength > 1)
invisibility = 0
density = 1
-
+/*
/obj/effect/energy_field/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
//Purpose: Determines if the object (or airflow) can pass this atom.
//Called by: Movement, airflow.
@@ -49,4 +49,5 @@
//Outputs: Boolean if can pass.
//return (!density || !height || air_group)
- return density
+ return !density
+*/
\ No newline at end of file
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index 7dec73e335c..bbf765544fc 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -85,6 +85,8 @@
M << "You have joined the ranks of the Syndicate and become a traitor to the station!"
+ message_admins("[N]/([N.ckey]) has accepted a traitor objective from a syndicate beacon.")
+
var/obj_count = 1
for(var/datum/objective/OBJ in M.mind.objectives)
M << "Objective #[obj_count]: [OBJ.explanation_text]"
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 27222b680e4..742fe3d5d9d 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -2,6 +2,7 @@
#define XENOARCH_SPAWN_CHANCE 0.5
#define XENOARCH_SPREAD_CHANCE 15
+#define ARTIFACT_SPAWN_CHANCE 20
/turf/simulated/mineral //wall piece
name = "Rock"
@@ -28,7 +29,7 @@
var/archaeo_overlay = ""
var/excav_overlay = ""
var/obj/item/weapon/last_find
- var/datum/find/artifact_find
+ var/datum/artifact_find/artifact_find
/turf/simulated/mineral/Del()
return
@@ -82,61 +83,68 @@
//---- Xenoarchaeology BEGIN
- if(mineralAmt > 0 && !excavation_minerals.len)
- for(var/i=0, i 0 && !excavation_minerals.len)
+ for(var/i=0, i 0)
- if(excavation_level < 25)
- src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv1_[rand(1,3)]")
- else if(excavation_level < 50)
- src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv2_[rand(1,3)]")
- else if(excavation_level < 75)
- src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv3_[rand(1,3)]")
- else
- src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv4_[rand(1,3)]")
- desc = "It appears to be partially excavated."*/
+ if(!src.geological_data)
+ src.geological_data = new/datum/geosample(src)
+ src.geological_data.UpdateTurf(src)
+
+ //for excavated turfs placeable in the map editor
+ /*if(excavation_level > 0)
+ if(excavation_level < 25)
+ src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv1_[rand(1,3)]")
+ else if(excavation_level < 50)
+ src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv2_[rand(1,3)]")
+ else if(excavation_level < 75)
+ src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv3_[rand(1,3)]")
+ else
+ src.overlays += image('icons/obj/xenoarchaeology.dmi', "overlay_excv4_[rand(1,3)]")
+ desc = "It appears to be partially excavated."*/
return
@@ -172,6 +180,14 @@
src = M
M.levelupdate()
+ //preserve archaeo data
+ M.geological_data = src.geological_data
+ M.excavation_minerals = src.excavation_minerals
+ M.overlays = src.overlays
+ M.artifact_find = src.artifact_find
+ M.archaeo_overlay = src.archaeo_overlay
+ M.excav_overlay = src.excav_overlay
+
/*else if (prob(artifactChance))
new/obj/machinery/artifact(src)*/
return
@@ -290,14 +306,14 @@ commented out in r5061, I left it because of the shroom thingies
if (istype(W, /obj/item/device/depth_scanner))
var/obj/item/device/depth_scanner/C = W
- C.scan_turf(user, src)
+ C.scan_atom(user, src)
return
if (istype(W, /obj/item/device/measuring_tape))
var/obj/item/device/measuring_tape/P = W
user.visible_message("\blue[user] extends [P] towards [src].","\blue You extend [P] towards [src].")
if(do_after(user,40))
- user << "\blue \icon[P] [src] has been excavated to a depth of [src.excavation_level]cm."
+ user << "\blue \icon[P] [src] has been excavated to a depth of [2*src.excavation_level]cm."
return
if (istype(W, /obj/item/weapon/pickaxe))
@@ -354,6 +370,23 @@ commented out in r5061, I left it because of the shroom thingies
excavate_find(5, F)
if(src.excavation_level + P.excavation_amount >= 100)
+ //if players have been excavating this turf, have a chance to leave some rocky debris behind
+ var/boulder_prob = 0
+ if(src.excavation_level > 15)
+ boulder_prob = 50
+ if(artifact_find)
+ boulder_prob += 10
+ if(src.excavation_level == 100)
+ boulder_prob += 40
+ else if(src.excavation_level > 95)
+ boulder_prob += 25
+ else if(src.excavation_level > 90)
+ boulder_prob += 10
+ if(prob(boulder_prob))
+ var/obj/structure/boulder/B = new(src)
+ if(artifact_find)
+ B.artifact_find = artifact_find
+
gets_drilled()
return
else
@@ -473,17 +506,19 @@ commented out in r5061, I left it because of the shroom thingies
//some find types delete the /obj/item/weapon/archaeological_find and replace it with something else, this handles when that happens
//yuck
+ var/display_name = "something"
if(!X)
X = last_find
- if(!X)
- X = "something"
+ if(X)
+ display_name = X.name
//many finds are ancient and thus very delicate - luckily there is a specialised energy suspension field which protects them when they're being extracted
if(prob(F.prob_delicate))
var/obj/effect/suspension_field/S = locate() in src
if(!S || S.field_type != get_responsive_reagent(F.find_type))
- src.visible_message("\red[pick("[X] crumbles away into dust","[X] breaks apart","[X] collapses onto itself")].")
- del(X)
+ if(X)
+ src.visible_message("\red[pick("[display_name] crumbles away into dust","[display_name] breaks apart","[display_name] collapses onto itself")].")
+ del(X)
src.finds.Remove(F)
diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm
index 1ecc347f6da..cd02736b3fd 100644
--- a/code/modules/research/xenoarchaeology/geosample.dm
+++ b/code/modules/research/xenoarchaeology/geosample.dm
@@ -64,7 +64,7 @@ var/list/artifact_spawning_turfs = list()
var/age_million = 0
var/age_billion = 0
var/artifact_id = "" //id of a nearby artifact, if there is one
- var/artifact_distance = -1 //proportional to distance
+ var/artifact_distance = 9999 //proportional to distance
var/source_mineral = "calcium"
var/total_spread = 0
//
@@ -134,14 +134,14 @@ var/list/artifact_spawning_turfs = list()
if("Clown")
age = rand(-1,-999) //thats_the_joke.mp4
age_thousand = rand(-1,-999)
- find_presence["beryllium"] = rand(1,1000) / 100
- source_mineral = "beryllium"
+ find_presence["plasma"] = rand(1,1000) / 100
+ source_mineral = "plasma"
//find_presence[FIND_IGNEOUS] = comp_remaining * (rand(25, 75) / 100)
//comp_remaining -= find_presence[FIND_IGNEOUS]
find_presence["neon"] = rand(1,500) / 100
- if(prob(20))
- find_presence["carbon"] = rand(1,10) / 100
+ /*if(prob(20))
+ find_presence["carbon"] = rand(1,10) / 100*/
//find_presence[FIND_METAMORPHIC] = comp_remaining
//allocate the rest to ordinary rock
@@ -160,11 +160,19 @@ var/list/artifact_spawning_turfs = list()
if(!container || !istype(container))
return
- for(var/turf/simulated/mineral/holder in artifact_spawning_turfs)
- var/dist = get_dist(container, holder)
- if(dist < artifact_distance)
- artifact_distance = dist
- //artifact_id = A.display_id
+ if(container.artifact_find)
+ artifact_distance = rand(-100,100) / 100
+ artifact_id = container.artifact_find.artifact_id
+ else
+ for(var/turf/simulated/mineral/holder in artifact_spawning_turfs)
+ if(holder.artifact_find)
+ var/dist = get_dist(container, holder)
+ if(dist < holder.artifact_find.artifact_detect_range && dist < src.artifact_distance)
+ src.artifact_distance = dist
+ src.artifact_id = holder.artifact_find
+ else
+ artifact_spawning_turfs.Remove(holder)
+
/*
#undef FIND_PLANT
#undef FIND_BIO
@@ -176,4 +184,4 @@ var/list/artifact_spawning_turfs = list()
#undef FIND_METAMORPHIC
#undef FIND_SEDIMENTARY
#undef FIND_NOTHING
-*/
\ No newline at end of file
+*/
diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi
index 1cfdb8384b6..e984d192e82 100644
Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ
diff --git a/icons/obj/xenoarchaeology.dmi b/icons/obj/xenoarchaeology.dmi
index 6806854a242..88aeb802d8d 100644
Binary files a/icons/obj/xenoarchaeology.dmi and b/icons/obj/xenoarchaeology.dmi differ