diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 40319b0d1a..66a1422bd8 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -368,7 +368,7 @@ commented out in r5061, I left it because of the shroom thingies else if(src.excavation_level + P.excavation_amount > F.excavation_required - F.clearance_range) //just pull the surrounding rock out - excavate_find(5, F) + excavate_find(0, 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 diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 74f63060c0..db136202f6 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -230,6 +230,15 @@ datum continue var/datum/chemical_reaction/C = reaction + + //check if this recipe needs to be heated to mix + if(C.requires_heating) + if(istype(my_atom.loc, /obj/machinery/bunsen_burner)) + if(!my_atom.loc:heated) + continue + else + continue + var/total_required_reagents = C.required_reagents.len var/total_matching_reagents = 0 var/total_required_catalysts = C.required_catalysts.len @@ -276,11 +285,25 @@ datum for(var/B in C.required_reagents) remove_reagent(B, (multiplier * C.required_reagents[B]), safety = 1) + //try and grab any data so we can preserve it across reactions + //added for xenoarchaeology, might be useful for other things + var/preserved_data = null + for(var/B in src.reagent_list) + if(!preserved_data) + var/temp_data = get_data(B) + if(temp_data) + preserved_data = temp_data + var/created_volume = C.result_amount*multiplier if(C.result) feedback_add_details("chemical_reaction","[C.result]|[C.result_amount*multiplier]") multiplier = max(multiplier, 1) //this shouldnt happen ... add_reagent(C.result, C.result_amount*multiplier) + set_data(C.result, preserved_data) + + //add secondary products + for(var/S in C.secondary_results) + add_reagent(S, C.result_amount * C.secondary_results[S] * multiplier) var/list/seen = viewers(4, get_turf(my_atom)) for(var/mob/M in seen) @@ -490,6 +513,21 @@ datum return res + //two helper functions to preserve data across reactions (needed for xenoarch) + get_data(var/reagent_id) + for(var/R in reagent_list) + var/datum/reagent/D = reagent_list[R] + if(D.id == reagent_id) + //world << "proffering a data-carrying reagent ([reagent_id])" + return D.data + + set_data(var/reagent_id, var/new_data) + for(var/R in reagent_list) + var/datum/reagent/D = reagent_list[R] + if(D.id == reagent_id) + //world << "reagent data set ([reagent_id])" + D.data = new_data + /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 1580f50b8c..4eaf6a8096 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -17,7 +17,7 @@ var/recharged = 0 var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", - "copper","mercury","radium","water","ethanol","sugar","sacid") + "copper","mercury","radium","water","ethanol","sugar","sacid","tungsten") /obj/machinery/chem_dispenser/proc/recharge() if(stat & (BROKEN|NOPOWER)) return @@ -743,6 +743,9 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/wheat = list("flour" = -5), /obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0), + //archaeology! + /obj/item/weapon/rocksliver = list("ground_rock" = 50), + //All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.! @@ -1070,6 +1073,20 @@ break remove_object(O) + //xenoarch + for(var/obj/item/weapon/rocksliver/O in holdingitems) + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + var/allowed = get_allowed_by_id(O) + for (var/r_id in allowed) + var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume + var/amount = allowed[r_id] + beaker.reagents.add_reagent(r_id,min(amount, space), O.geological_data) + + if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) + break + remove_object(O) + //Everything else - Transfers reagents from it into beaker for (var/obj/item/weapon/reagent_containers/O in holdingitems) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index e8cd99dab6..cb61b11ad5 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -480,7 +480,7 @@ datum var/location = get_turf(holder.my_atom) new /obj/item/stack/sheet/mineral/plasma(location) return - + virus_food name = "Virus Food" id = "virusfood" diff --git a/code/modules/research/xenoarchaeology/analysis/analysis.dm b/code/modules/research/xenoarchaeology/analysis/analysis.dm index 49e281ff3b..54d3fd443e 100644 --- a/code/modules/research/xenoarchaeology/analysis/analysis.dm +++ b/code/modules/research/xenoarchaeology/analysis/analysis.dm @@ -29,7 +29,7 @@ D = M break S.reagents.add_reagent("analysis_sample", 1, D.geological_data) - S.reagents.add_reagent("chlorine", 1, D.geological_data) + S.reagents.add_reagent("calcium", 1, D.geological_data) /obj/machinery/anomaly/process() //not sure if everything needs to heat up, or just the GLPC diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index b8387470c3..64dd86a281 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -51,9 +51,9 @@ datum //todo: make this brown density_separated_sample - name = "Analysis liquid" + name = "Density separated sample" id = "density_separated_sample" - description = "A watery paste used in chemical analysis." + description = "A watery paste used in chemical analysis, this one has some chunks floating in it." reagent_state = LIQUID color = "#C81040" //rgb: 200, 16, 64 //todo: make this browny-white diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 61b6fec727..5a9d8adca0 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -382,12 +382,14 @@ //fossil bone/skull new_item = new /obj/item/weapon/fossil/base(src.loc) apply_prefix = 0 + additional_desc = "A fossilised part of an alien, long dead." apply_image_decorations = 0 apply_material_decorations = 0 if(30) //fossil shell new_item = new /obj/item/weapon/fossil/shell(src.loc) apply_prefix = 0 + additional_desc = "A fossilised, pre-Stygian alien crustacean." apply_image_decorations = 0 apply_material_decorations = 0 if(prob(10)) @@ -395,6 +397,8 @@ if(31) //fossil plant new_item = new /obj/item/weapon/fossil/plant(src.loc) + item_type = new_item.name + additional_desc = "A fossilised shred of alien plant matter." apply_image_decorations = 0 apply_material_decorations = 0 apply_prefix = 0 diff --git a/code/modules/research/xenoarchaeology/finds/finds_defines.dm b/code/modules/research/xenoarchaeology/finds/finds_defines.dm index dd5aa34dd2..182f460b7e 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_defines.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_defines.dm @@ -63,6 +63,8 @@ return "aluminium" if(ARCHAEO_COIN) return "silicon" + if(ARCHAEO_KNIFE) + return "silicon" if(ARCHAEO_HANDCUFFS) return "aluminium" if(ARCHAEO_BEARTRAP) diff --git a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm index bbb3d0c9c9..684788b0f8 100644 --- a/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm +++ b/code/modules/research/xenoarchaeology/tools/bunsen_burner.dm @@ -39,6 +39,7 @@ user << "\red There is nothing on the [src]." /obj/machinery/bunsen_burner/proc/try_heating() + src.visible_message("\blue \icon[src] [src] bubbles.") if(held_container && heating) heated = 1 held_container.reagents.handle_reactions() diff --git a/code/modules/research/xenoarchaeology/tools/tools.dm b/code/modules/research/xenoarchaeology/tools/tools.dm index 03b3f136fd..70ce18d2ab 100644 --- a/code/modules/research/xenoarchaeology/tools/tools.dm +++ b/code/modules/research/xenoarchaeology/tools/tools.dm @@ -11,7 +11,7 @@ /obj/item/device/gps/attack_self(var/mob/user as mob) var/turf/T = get_turf(src) - user << "\blue \icon[src] [src] flashes [10 * T.x].[rand(0,9)]:[10 * T.y].[rand(0,9)]:[10 * T.z].[rand(0,9)]." + user << "\blue \icon[src] [src] flashes [T.x].[rand(0,9)]:[T.y].[rand(0,9)]:[T.z].[rand(0,9)]." /obj/item/device/measuring_tape name = "measuring tape" diff --git a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm index c146f9fd44..cfb651a036 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_depthscanner.dm @@ -31,7 +31,7 @@ //create a new scanlog entry var/datum/depth_scan/D = new() - D.coords = "[10 * M.x + rand(0,9)]:[10 * M.y + rand(0,9)]:[10 * M.z + rand(0,9)]" + D.coords = "[M.x].[rand(0,9)]:[M.y].[rand(0,9)]:[10 * M.z].[rand(0,9)]" D.time = worldtime2text() D.record_index = positive_locations.len + 1 diff --git a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm index f87dfcbc24..5b0196ee78 100644 --- a/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm +++ b/code/modules/research/xenoarchaeology/tools/tools_pickaxe.dm @@ -4,6 +4,7 @@ /obj/item/weapon/pickaxe/brush name = "brush" + icon = 'icons/obj/xenoarchaeology.dmi' icon_state = "pick_brush" item_state = "syringe_0" digspeed = 50 @@ -14,7 +15,8 @@ /obj/item/weapon/pickaxe/one_pick name = "1/6 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick1" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (2 centimetre excavation depth)." @@ -24,7 +26,8 @@ /obj/item/weapon/pickaxe/two_pick name = "1/3 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick2" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (4 centimetre excavation depth)." @@ -34,7 +37,8 @@ /obj/item/weapon/pickaxe/three_pick name = "1/2 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick3" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (6 centimetre excavation depth)." @@ -44,7 +48,8 @@ /obj/item/weapon/pickaxe/four_pick name = "2/3 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick4" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (8 centimetre excavation depth)." @@ -54,7 +59,8 @@ /obj/item/weapon/pickaxe/five_pick name = "5/6 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick5" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (10 centimetre excavation depth)." @@ -64,7 +70,8 @@ /obj/item/weapon/pickaxe/six_pick name = "1/1 pick" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick6" item_state = "syringe_0" digspeed = 50 desc = "A miniature excavation tool for precise digging (12 centimetre excavation depth)." @@ -74,7 +81,8 @@ /obj/item/weapon/pickaxe/hand name = "hand pickaxe" - //icon_state = "excavation" + icon = 'icons/obj/xenoarchaeology.dmi' + icon_state = "pick_hand" item_state = "syringe_0" digspeed = 50 desc = "A smaller, more precise version of the pickaxe (30 centimetre excavation depth)."