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