mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-04 06:22:14 +00:00
restructured tools, restructured/added archaeo finds, restructured how finds spawn in the asteroid, tweaked some mining stuff
Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
@@ -193,6 +193,10 @@ proc/move_mining_shuttle()
|
||||
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
attack_verb = list("hit", "pierced", "sliced", "attacked")
|
||||
var/drill_sound = 'sound/weapons/Genhit.ogg'
|
||||
var/drill_verb = "picking"
|
||||
|
||||
var/excavation_amount = 100
|
||||
|
||||
hammer
|
||||
name = "sledgehammer"
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
/**********************Mineral deposits**************************/
|
||||
|
||||
#define XENOARCH_SPAWN_CHANCE 0.5
|
||||
#define XENOARCH_SPREAD_CHANCE 15
|
||||
|
||||
/turf/simulated/mineral //wall piece
|
||||
name = "Rock"
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
@@ -16,7 +19,16 @@
|
||||
var/spreadChance = 0 //the percentual chance of an ore spreading to the neighbouring tiles
|
||||
var/artifactChance = 0.3 //percent chance to spawn a xenoarchaelogical artifact
|
||||
var/last_act = 0
|
||||
|
||||
var/datum/geosample/geological_data
|
||||
var/excavation_level = 0
|
||||
var/list/finds = list()
|
||||
var/list/excavation_minerals = list()
|
||||
var/list/excavation_minerals_ascending = list()
|
||||
var/list/exca_first = list("A","B","C","D","E")
|
||||
var/list/exca_second = list()
|
||||
var/next_rock = 0
|
||||
var/overlay_num = 0
|
||||
|
||||
/turf/simulated/mineral/Del()
|
||||
return
|
||||
@@ -56,27 +68,82 @@
|
||||
T.overlays += image('icons/turf/walls.dmi', "rock_side_e", layer=6)
|
||||
|
||||
if (mineralName && mineralAmt && spread && spreadChance)
|
||||
if(prob(spreadChance))
|
||||
if(istype(get_step(src, SOUTH), /turf/simulated/mineral/random))
|
||||
new src.type(get_step(src, SOUTH))
|
||||
if(prob(spreadChance))
|
||||
if(istype(get_step(src, NORTH), /turf/simulated/mineral/random))
|
||||
new src.type(get_step(src, NORTH))
|
||||
if(prob(spreadChance))
|
||||
if(istype(get_step(src, WEST), /turf/simulated/mineral/random))
|
||||
new src.type(get_step(src, WEST))
|
||||
if(prob(spreadChance))
|
||||
if(istype(get_step(src, EAST), /turf/simulated/mineral/random))
|
||||
new src.type(get_step(src, EAST))
|
||||
for(var/trydir in list(1,2,4,8))
|
||||
if(prob(spreadChance))
|
||||
if(istype(get_step(src, trydir), /turf/simulated/mineral/random))
|
||||
var/turf/simulated/mineral/T = get_step(src, trydir)
|
||||
var/turf/simulated/mineral/M = new src.type(T)
|
||||
//keep any digsite data as constant as possible
|
||||
if(T.finds.len && !M.finds.len)
|
||||
M.finds = T.finds
|
||||
M.overlays += "overlay_archaeo1"
|
||||
|
||||
src.geological_data = new /datum/geosample(src)
|
||||
//---- Xenoarchaeology BEGIN
|
||||
|
||||
if(mineralAmt > 0 && !excavation_minerals.len)
|
||||
for(var/i=0, i<mineralAmt, i++)
|
||||
excavation_minerals.Add(rand(5,95))
|
||||
excavation_minerals = insertion_sort_numeric_list_ascending(excavation_minerals)
|
||||
excavation_minerals_ascending = reverselist(excavation_minerals)
|
||||
|
||||
exca_second = reverselist(exca_first)
|
||||
|
||||
if(!finds.len && prob(XENOARCH_SPAWN_CHANCE))
|
||||
//create a new archaeological deposit
|
||||
var/digsite = get_random_digsite_type()
|
||||
|
||||
var/list/turfs_to_process = list(src)
|
||||
var/list/processed_turfs = list()
|
||||
while(turfs_to_process.len)
|
||||
var/turf/simulated/mineral/M = turfs_to_process[1]
|
||||
for(var/turf/simulated/mineral/T in orange(1, M))
|
||||
if(T.finds.len)
|
||||
continue
|
||||
if(T in processed_turfs)
|
||||
continue
|
||||
if(prob(XENOARCH_SPREAD_CHANCE))
|
||||
turfs_to_process.Add(T)
|
||||
|
||||
turfs_to_process.Remove(M)
|
||||
processed_turfs.Add(M)
|
||||
if(!M.finds.len)
|
||||
//M.desc = "There is some strange strata evident throughout it."
|
||||
if(prob(50))
|
||||
M.finds.Add(new/datum/find(digsite, rand(5,95)))
|
||||
else if(prob(75))
|
||||
M.finds.Add(new/datum/find(digsite, rand(5,45)))
|
||||
M.finds.Add(new/datum/find(digsite, rand(55,95)))
|
||||
else
|
||||
M.finds.Add(new/datum/find(digsite, rand(5,30)))
|
||||
M.finds.Add(new/datum/find(digsite, rand(35,75)))
|
||||
M.finds.Add(new/datum/find(digsite, rand(75,95)))
|
||||
|
||||
//give it a test overlay for debugging
|
||||
//M.overlays += image('icons/obj/xenoarchaeology.dmi', "sdsdsd")
|
||||
M.overlays += "overlay_archaeo1"
|
||||
|
||||
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
|
||||
|
||||
/turf/simulated/mineral/random
|
||||
name = "Mineral deposit"
|
||||
var/mineralAmtList = list("Uranium" = 5, "Iron" = 5, "Diamond" = 5, "Gold" = 5, "Silver" = 5, "Plasma" = 5, "Archaeo" = 3/*, "Adamantine" = 5*/)
|
||||
var/mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Plasma" = 25, "Archaeo" = 5/*, "Adamantine" =5*/)//Currently, Adamantine won't spawn as it has no uses. -Durandan
|
||||
var/mineralAmtList = list("Uranium" = 5, "Iron" = 5, "Diamond" = 5, "Gold" = 5, "Silver" = 5, "Plasma" = 5/*, "Adamantine" = 5*/)
|
||||
var/mineralSpawnChanceList = list("Uranium" = 5, "Iron" = 50, "Diamond" = 1, "Gold" = 5, "Silver" = 5, "Plasma" = 25/*, "Adamantine" =5*/)//Currently, Adamantine won't spawn as it has no uses. -Durandan
|
||||
var/mineralChance = 10 //means 10% chance of this plot changing to a mineral deposit
|
||||
|
||||
/turf/simulated/mineral/random/New()
|
||||
@@ -99,19 +166,14 @@
|
||||
M = new/turf/simulated/mineral/silver(src)
|
||||
if("Plasma")
|
||||
M = new/turf/simulated/mineral/plasma(src)
|
||||
if("Archaeo")
|
||||
M = new/turf/simulated/mineral/archaeo(src)
|
||||
/*if("Adamantine")
|
||||
M = new/turf/simulated/mineral/adamantine(src)*/
|
||||
if(M)
|
||||
src = M
|
||||
M.levelupdate()
|
||||
if(!geological_data)
|
||||
src.geological_data = new /datum/geosample
|
||||
src.geological_data.UpdateTurf(src)
|
||||
else if (prob(artifactChance))
|
||||
//spawn a rare, xeno-arch artifact here
|
||||
new/obj/machinery/artifact(src)
|
||||
|
||||
/*else if (prob(artifactChance))
|
||||
new/obj/machinery/artifact(src)*/
|
||||
return
|
||||
|
||||
/turf/simulated/mineral/random/high_chance
|
||||
@@ -176,15 +238,6 @@
|
||||
spread = 1
|
||||
|
||||
|
||||
/turf/simulated/mineral/archaeo
|
||||
name = "Strange rock formation"
|
||||
icon_state = "rock_Archaeo"
|
||||
mineralName = "Archaeo"
|
||||
mineralAmt = 3
|
||||
spreadChance = 25
|
||||
spread = 1
|
||||
|
||||
|
||||
/turf/simulated/mineral/clown
|
||||
name = "Bananium deposit"
|
||||
icon_state = "rock_Clown"
|
||||
@@ -245,61 +298,105 @@ commented out in r5061, I left it because of the shroom thingies
|
||||
return
|
||||
*/
|
||||
//Watch your tabbing, microwave. --NEO
|
||||
if(last_act+W:digspeed > world.time)//prevents message spam
|
||||
|
||||
var/obj/item/weapon/pickaxe/P = W
|
||||
if(last_act+P.digspeed > world.time)//prevents message spam
|
||||
return
|
||||
last_act = world.time
|
||||
user << "\red You start picking."
|
||||
playsound(user, 'sound/weapons/Genhit.ogg', 20, 1)
|
||||
|
||||
if(do_after(user,W:digspeed))
|
||||
user << "\blue You finish cutting into the rock."
|
||||
gets_drilled()
|
||||
playsound(user, P.drill_sound, 20, 1)
|
||||
|
||||
//Chance to destroy any archaeological finds if we carelessly pick away at the rock
|
||||
var/fail_message = ""
|
||||
if(src.finds.len)
|
||||
var/datum/find/F = src.finds[1]
|
||||
if(src.excavation_level + P.excavation_amount >= F.excavation_required + F.destruct_range)
|
||||
fail_message = ", <b>[pick("there is a crunching noise","[W] hits something","part of the rock face crumbles away","something breaks under [W]")]</b>"
|
||||
if(prob(50))
|
||||
src.finds.Remove(F)
|
||||
user << "\red You start [P.drill_verb][fail_message]."
|
||||
|
||||
if(do_after(user,P.digspeed))
|
||||
user << "\blue You finish [P.drill_verb] the rock."
|
||||
if(src.excavation_level + P.excavation_amount >= 100)
|
||||
gets_drilled()
|
||||
else
|
||||
src.excavation_level += P.excavation_amount
|
||||
|
||||
//handle any archaeological finds we might uncover
|
||||
|
||||
//extract pesky minerals while we're excavating
|
||||
while(excavation_minerals.len && src.excavation_level > excavation_minerals[excavation_minerals.len])
|
||||
drop_mineral()
|
||||
//have a 50% chance to extract bonus minerals this way
|
||||
//if(prob(50))
|
||||
pop(excavation_minerals)
|
||||
mineralAmt--
|
||||
|
||||
//drop some rocks
|
||||
next_rock += P.excavation_amount * 10
|
||||
while(next_rock > 100)
|
||||
next_rock -= 100
|
||||
var/obj/item/weapon/ore/O = new(src)
|
||||
O.geological_data = src.geological_data
|
||||
|
||||
else
|
||||
return attack_hand(user)
|
||||
return
|
||||
|
||||
/turf/simulated/mineral/proc/gets_drilled()
|
||||
var/destroyed = 0 //used for breaking strange rocks
|
||||
if ((src.mineralName != "") && (src.mineralAmt > 0) && (src.mineralAmt < 11))
|
||||
var/i
|
||||
for (i=0;i<mineralAmt;i++)
|
||||
var/obj/item/weapon/ore/O
|
||||
if (src.mineralName == "Uranium")
|
||||
O = new /obj/item/weapon/ore/uranium(src)
|
||||
if (src.mineralName == "Iron")
|
||||
O = new /obj/item/weapon/ore/iron(src)
|
||||
if (src.mineralName == "Gold")
|
||||
O = new /obj/item/weapon/ore/gold(src)
|
||||
if (src.mineralName == "Silver")
|
||||
O = new /obj/item/weapon/ore/silver(src)
|
||||
if (src.mineralName == "Plasma")
|
||||
O = new /obj/item/weapon/ore/plasma(src)
|
||||
if (src.mineralName == "Diamond")
|
||||
O = new /obj/item/weapon/ore/diamond(src)
|
||||
if (src.mineralName == "Archaeo")
|
||||
//spawn strange rocks here
|
||||
new /obj/item/weapon/archaeological_find(src)
|
||||
//if(prob(10) || delicate)
|
||||
/*if(prob(50)) //Don't have delicate tools (hand pick/excavation tool) yet, temporarily change to 50% instead of 10% -Mij
|
||||
O = new /obj/item/weapon/ore/strangerock(src)
|
||||
else
|
||||
destroyed = 1*/
|
||||
if (src.mineralName == "Clown")
|
||||
O = new /obj/item/weapon/ore/clown(src)
|
||||
if(O)
|
||||
if(!src.geological_data)
|
||||
src.geological_data = new /datum/geosample(src)
|
||||
O.geological_data = src.geological_data
|
||||
/turf/simulated/mineral/proc/drop_mineral()
|
||||
var/obj/item/weapon/ore/O
|
||||
if (src.mineralName == "Uranium")
|
||||
O = new /obj/item/weapon/ore/uranium(src)
|
||||
if (src.mineralName == "Iron")
|
||||
O = new /obj/item/weapon/ore/iron(src)
|
||||
if (src.mineralName == "Gold")
|
||||
O = new /obj/item/weapon/ore/gold(src)
|
||||
if (src.mineralName == "Silver")
|
||||
O = new /obj/item/weapon/ore/silver(src)
|
||||
if (src.mineralName == "Plasma")
|
||||
O = new /obj/item/weapon/ore/plasma(src)
|
||||
if (src.mineralName == "Diamond")
|
||||
O = new /obj/item/weapon/ore/diamond(src)
|
||||
/*if (src.mineralName == "Archaeo")
|
||||
//new /obj/item/weapon/archaeological_find(src)
|
||||
//if(prob(10) || delicate)
|
||||
if(prob(50)) //Don't have delicate tools (hand pick/excavation tool) yet, temporarily change to 50% instead of 10% -Mij
|
||||
O = new /obj/item/weapon/ore/strangerock(src)
|
||||
else
|
||||
destroyed = 1*/
|
||||
if (src.mineralName == "Clown")
|
||||
O = new /obj/item/weapon/ore/clown(src)
|
||||
if(O)
|
||||
O.geological_data = src.geological_data
|
||||
return O
|
||||
|
||||
if (prob(src.artifactChance))
|
||||
/turf/simulated/mineral/proc/gets_drilled()
|
||||
//var/destroyed = 0 //used for breaking strange rocks
|
||||
if ((src.mineralName != "") && (src.mineralAmt > 0) && (src.mineralAmt < 11))
|
||||
|
||||
//if the turf has already been excavated, some of it's ore has been removed
|
||||
for (var/i=0;i<mineralAmt;i++)
|
||||
drop_mineral()
|
||||
|
||||
//leave a bit of cleared away rock
|
||||
var/amount_leftover = rand(0,5)
|
||||
for (var/i=0;i<amount_leftover;i++)
|
||||
new /obj/item/weapon/ore(src)
|
||||
|
||||
/*if (prob(src.artifactChance))
|
||||
//spawn a rare artifact here
|
||||
new /obj/machinery/artifact(src)
|
||||
new /obj/machinery/artifact(src)*/
|
||||
var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid)
|
||||
N.fullUpdateMineralOverlays()
|
||||
|
||||
if(destroyed) //Display message about being a terrible miner
|
||||
usr << "\red You destroy some of the rocks!"
|
||||
/*if(src.contents)
|
||||
[src.contents ? pick(" There is a crunching noise."," [W] hits something."," Part of the rock face crumbles away.","Something breaks under [W].") : ""]"
|
||||
var/atom/A = pick(src.contents)
|
||||
del(A)*/
|
||||
|
||||
/*if(destroyed) //Display message about being a terrible miner
|
||||
usr << "\red You destroy some of the rocks!"*/
|
||||
return
|
||||
|
||||
/*
|
||||
@@ -467,7 +564,6 @@ commented out in r5061, I left it because of the shroom thingies
|
||||
if(istype(get_step(src, WEST), /turf/simulated/mineral))
|
||||
src.overlays += image('icons/turf/walls.dmi', "rock_side_w", layer=6)
|
||||
|
||||
|
||||
/turf/simulated/floor/plating/airless/asteroid/proc/fullUpdateMineralOverlays()
|
||||
var/turf/simulated/floor/plating/airless/asteroid/A
|
||||
if(istype(get_step(src, WEST), /turf/simulated/floor/plating/airless/asteroid))
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/obj/item/weapon/ore
|
||||
name = "Rock"
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "ore"
|
||||
icon_state = "ore2"
|
||||
var/datum/geosample/geological_data
|
||||
|
||||
|
||||
@@ -60,16 +60,6 @@
|
||||
desc = "Completely useless"
|
||||
icon_state = "slag"
|
||||
|
||||
/obj/item/weapon/ore/strangerock //see artifact_archaeo.dm in modules/research for more info
|
||||
name = "Strange rock"
|
||||
desc = "Seems to have some unusal strata evident throughout it."
|
||||
icon_state = "strange"
|
||||
var/obj/inside
|
||||
var/method // 0 = fire, 1+ = acid
|
||||
origin_tech = "materials=5"
|
||||
//unacidable = 1 //This can prevent acid from gooey grey massing
|
||||
//you should override the acid_act proc anyway
|
||||
|
||||
/obj/item/weapon/ore/New()
|
||||
pixel_x = rand(0,16)-8
|
||||
pixel_y = rand(0,8)-8
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
//---- miscellaneous devices ----//
|
||||
|
||||
//also known as the x-ray diffractor
|
||||
/obj/item/device/depth_scanner
|
||||
name = "depth analysis scanner"
|
||||
desc = "Used to check mass spatial depth and density."
|
||||
desc = "Used to check spatial depth and density of rock outcroppings."
|
||||
icon = 'pda.dmi'
|
||||
icon_state = "crap"
|
||||
item_state = "analyzer"
|
||||
@@ -8,19 +11,12 @@
|
||||
flags = FPRINT | TABLEPASS
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/weapon/pickaxe/hand_pick
|
||||
name = "hand pick"
|
||||
//icon_state = "excavation"
|
||||
//item_state = "minipick"
|
||||
digspeed = 50
|
||||
desc = "A smaller, more precise version of the pickaxe."
|
||||
|
||||
/obj/item/weapon/pickaxe/mini_pick
|
||||
name = "mini pick"
|
||||
//icon_state = "excavation"
|
||||
//item_state = "minipick"
|
||||
digspeed = 60
|
||||
desc = "A miniature excavation tool for precise digging around delicate finds."
|
||||
/obj/item/device/beacon_locator
|
||||
name = "locater device"
|
||||
desc = "Used to scan and locate signals on a particular frequency."
|
||||
icon = 'device.dmi'
|
||||
icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull
|
||||
item_state = "electronic"
|
||||
|
||||
/obj/item/device/core_sampler
|
||||
name = "core sampler"
|
||||
@@ -32,9 +28,57 @@
|
||||
flags = FPRINT | TABLEPASS
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/device/beacon_locator
|
||||
name = "locater device"
|
||||
desc = "Used to scan and locate signals on a particular frequency."
|
||||
icon = 'device.dmi'
|
||||
icon_state = "pinoff" //pinonfar, pinonmedium, pinonclose, pinondirect, pinonnull
|
||||
item_state = "electronic"
|
||||
//todo: tape
|
||||
|
||||
//---- excavation devices devices ----//
|
||||
//sorted in order of delicacy
|
||||
|
||||
/obj/item/weapon/pickaxe/brush
|
||||
name = "brush"
|
||||
//icon_state = "brush"
|
||||
//item_state = "minipick"
|
||||
digspeed = 50
|
||||
desc = "Featuring thick metallic wires for clearing away dust and loose scree."
|
||||
excavation_amount = 0.5
|
||||
drill_sound = 'sound/weapons/thudswoosh.ogg'
|
||||
drill_verb = "brushing"
|
||||
|
||||
/obj/item/weapon/pickaxe/quarter_pick
|
||||
name = "1/4 pick"
|
||||
//icon_state = "excavation"
|
||||
//item_state = "minipick"
|
||||
digspeed = 50
|
||||
desc = "A miniature excavation tool for precise digging."
|
||||
excavation_amount = 1
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
drill_verb = "delicately picking"
|
||||
|
||||
/obj/item/weapon/pickaxe/half_pick
|
||||
name = "1/2 pick"
|
||||
//icon_state = "excavation"
|
||||
//item_state = "minipick"
|
||||
digspeed = 50
|
||||
desc = "A miniature excavation tool for precise digging."
|
||||
excavation_amount = 3
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
drill_verb = "delicately picking"
|
||||
|
||||
/obj/item/weapon/pickaxe/pick
|
||||
name = "1/1 pick"
|
||||
//icon_state = "excavation"
|
||||
//item_state = "minipick"
|
||||
digspeed = 50
|
||||
desc = "A miniature excavation tool for precise digging."
|
||||
excavation_amount = 5
|
||||
drill_sound = 'sound/items/Screwdriver.ogg'
|
||||
drill_verb = "delicately picking"
|
||||
|
||||
/obj/item/weapon/pickaxe/hand
|
||||
name = "hand pickaxe"
|
||||
//icon_state = "excavation"
|
||||
//item_state = "minipick"
|
||||
digspeed = 50
|
||||
desc = "A smaller, more precise version of the pickaxe."
|
||||
excavation_amount = 15
|
||||
drill_sound = 'sound/items/Crowbar.ogg'
|
||||
drill_verb = "clearing"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
desc = "A sealed bio suit capable of resisting exotic alien energies and low pressure environments."
|
||||
icon_state = "engspace_suit"
|
||||
item_state = "engspace_suit"
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/pickaxe/hand_pick)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen)
|
||||
|
||||
/obj/item/clothing/head/bio_hood/anomaly
|
||||
name = "Anomaly Hood"
|
||||
|
||||
@@ -1,88 +1,222 @@
|
||||
//original code and idea from Alfie275 (luna era) and ISaidNo (goonservers) - with thanks
|
||||
|
||||
#define ARCHAEO_BOWL 1
|
||||
#define ARCHAEO_URN 2
|
||||
#define ARCHAEO_CUTLERY 3
|
||||
#define ARCHAEO_STATUETTE 4
|
||||
#define ARCHAEO_INSTRUMENT 5
|
||||
#define ARCHAEO_KNIFE 6
|
||||
#define ARCHAEO_COIN 7
|
||||
#define ARCHAEO_HANDCUFFS 8
|
||||
#define ARCHAEO_BEARTRAP 9
|
||||
#define ARCHAEO_LIGHTER 10
|
||||
#define ARCHAEO_BOX 11
|
||||
#define ARCHAEO_GASTANK 12
|
||||
#define ARCHAEO_TOOL 13
|
||||
#define ARCHAEO_METAL 14
|
||||
#define ARCHAEO_PEN 15
|
||||
#define ARCHAEO_CRYSTAL 16
|
||||
#define ARCHAEO_CULTBLADE 17
|
||||
#define ARCHAEO_TELEBEACON 18
|
||||
#define ARCHAEO_CLAYMORE 19
|
||||
#define ARCHAEO_CULTROBES 20
|
||||
#define ARCHAEO_SOULSTONE 21
|
||||
#define ARCHAEO_SHARD 22
|
||||
#define ARCHAEO_RODS 23
|
||||
#define ARCHAEO_STOCKPARTS 24
|
||||
#define ARCHAEO_KATANA 25
|
||||
#define ARCHAEO_LASER 26
|
||||
#define ARCHAEO_GUN 27
|
||||
#define ARCHAEO_UNKNOWN 28
|
||||
#define ARCHAEO_FOSSIL 29
|
||||
#define ARCHAEO_SHELL 30
|
||||
#define ARCHAEO_PLANT 31
|
||||
//alien remains
|
||||
//plant remains
|
||||
//eggs
|
||||
//droppings
|
||||
//footprints
|
||||
//alien clothing
|
||||
|
||||
//DNA sampling from fossils, or a new archaeo type specifically for it?
|
||||
|
||||
//descending order of likeliness to spawn
|
||||
#define DIGSITE_GARDEN 1
|
||||
#define DIGSITE_ANIMAL 2
|
||||
#define DIGSITE_HOUSE 3
|
||||
#define DIGSITE_TECHNICAL 4
|
||||
#define DIGSITE_TEMPLE 5
|
||||
#define DIGSITE_WAR 6
|
||||
|
||||
//see /turf/simulated/mineral/New() in code/modules/mining/mine_turfs.dm
|
||||
/proc/get_random_digsite_type()
|
||||
return pick(100;DIGSITE_GARDEN,90;DIGSITE_ANIMAL,80;DIGSITE_HOUSE,70;DIGSITE_TECHNICAL,60;DIGSITE_TEMPLE,50;DIGSITE_WAR)
|
||||
|
||||
/proc/get_random_find_type(var/digsite)
|
||||
|
||||
var/find_type = 0
|
||||
switch(digsite)
|
||||
if(DIGSITE_GARDEN)
|
||||
find_type = pick(\
|
||||
100;ARCHAEO_PLANT,\
|
||||
25;ARCHAEO_SHELL,\
|
||||
25;ARCHAEO_FOSSIL,\
|
||||
5;ARCHAEO_BEARTRAP\
|
||||
)
|
||||
if(DIGSITE_ANIMAL)
|
||||
find_type = pick(\
|
||||
100;ARCHAEO_FOSSIL,\
|
||||
25;ARCHAEO_SHELL,\
|
||||
25;ARCHAEO_PLANT,\
|
||||
25;ARCHAEO_BEARTRAP\
|
||||
)
|
||||
if(DIGSITE_HOUSE)
|
||||
find_type = pick(\
|
||||
100;ARCHAEO_UNKNOWN,\
|
||||
100;ARCHAEO_BOWL,\
|
||||
100;ARCHAEO_URN,\
|
||||
100;ARCHAEO_CUTLERY,\
|
||||
100;ARCHAEO_STATUETTE,\
|
||||
100;ARCHAEO_INSTRUMENT,\
|
||||
100;ARCHAEO_PEN,\
|
||||
100;ARCHAEO_LIGHTER,\
|
||||
100;ARCHAEO_BOX,\
|
||||
75;ARCHAEO_COIN,\
|
||||
50;ARCHAEO_SHARD,\
|
||||
50;ARCHAEO_RODS,\
|
||||
25;ARCHAEO_METAL\
|
||||
)
|
||||
if(DIGSITE_TECHNICAL)
|
||||
find_type = pick(\
|
||||
100;ARCHAEO_UNKNOWN,\
|
||||
100;ARCHAEO_METAL,\
|
||||
100;ARCHAEO_GASTANK,\
|
||||
100;ARCHAEO_TELEBEACON,\
|
||||
100;ARCHAEO_TOOL,\
|
||||
100;ARCHAEO_STOCKPARTS,\
|
||||
75;ARCHAEO_SHARD,\
|
||||
75;ARCHAEO_RODS,\
|
||||
50;ARCHAEO_HANDCUFFS,\
|
||||
50;ARCHAEO_BEARTRAP\
|
||||
)
|
||||
if(DIGSITE_TEMPLE)
|
||||
find_type = pick(\
|
||||
200;ARCHAEO_CULTROBES,\
|
||||
100;ARCHAEO_UNKNOWN,\
|
||||
100;ARCHAEO_URN,\
|
||||
100;ARCHAEO_BOWL,\
|
||||
100;ARCHAEO_KNIFE,\
|
||||
100;ARCHAEO_CRYSTAL,\
|
||||
75;ARCHAEO_CULTBLADE,\
|
||||
50;ARCHAEO_SOULSTONE,\
|
||||
25;ARCHAEO_HANDCUFFS,\
|
||||
25;ARCHAEO_BEARTRAP,\
|
||||
10;ARCHAEO_KATANA,\
|
||||
10;ARCHAEO_CLAYMORE,\
|
||||
10;ARCHAEO_SHARD,\
|
||||
10;ARCHAEO_RODS,\
|
||||
10;ARCHAEO_METAL\
|
||||
)
|
||||
if(DIGSITE_WAR)
|
||||
find_type = pick(\
|
||||
100;ARCHAEO_UNKNOWN,\
|
||||
100;ARCHAEO_GUN,\
|
||||
100;ARCHAEO_KNIFE,\
|
||||
75;ARCHAEO_LASER,\
|
||||
75;ARCHAEO_KATANA,\
|
||||
75;ARCHAEO_CLAYMORE,\
|
||||
50;ARCHAEO_CULTROBES,\
|
||||
50;ARCHAEO_CULTBLADE,\
|
||||
25;ARCHAEO_HANDCUFFS,\
|
||||
25;ARCHAEO_BEARTRAP,\
|
||||
25;ARCHAEO_TOOL\
|
||||
)
|
||||
return find_type
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// samples
|
||||
// Xenoarchaeological finds
|
||||
|
||||
datum/find
|
||||
var/find_type = 0
|
||||
var/excavation_required = 0
|
||||
var/view_range = 15 //how close excavation has to come to show an overlay on the turf
|
||||
var/destruct_range = 2 //how much excavation has to overshoot by to destroy the item
|
||||
var/clearance_range= 2 //how close excavation has to come to extract the whole ore instead of just the item inside
|
||||
//if excavation hits var/excavation_required exactly, it's contained find is extracted cleanly without the ore
|
||||
|
||||
datum/find/New(var/digsite, var/exc_req)
|
||||
excavation_required = exc_req
|
||||
find_type = get_random_find_type(digsite)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Rock sliver
|
||||
|
||||
/obj/item/weapon/rocksliver
|
||||
name = "rock sliver"
|
||||
desc = "It looks extremely delicate."
|
||||
icon = 'mining.dmi'
|
||||
icon_state = "sliver0" //0-4
|
||||
icon = 'xenoarchaeology.dmi'
|
||||
icon_state = "sliver1" //0-4
|
||||
w_class = 1
|
||||
//item_state = "electronic"
|
||||
var/source_rock = "/turf/simulated/mineral/archaeo"
|
||||
item_state = ""
|
||||
var/source_rock = "/turf/simulated/mineral/"
|
||||
var/datum/geosample/geological_data
|
||||
|
||||
/obj/item/weapon/rocksliver/New()
|
||||
icon_state = "ore2"//"sliver[rand(0,4)]"
|
||||
|
||||
|
||||
|
||||
icon_state = "sliver[rand(1,3)]"
|
||||
pixel_x = rand(0,16)-8
|
||||
pixel_y = rand(0,8)-8
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// strange rocks
|
||||
// Strange rocks
|
||||
|
||||
/obj/item/weapon/ore/strangerock/New()
|
||||
/obj/item/weapon/ore/strangerock
|
||||
name = "Strange rock"
|
||||
desc = "Seems to have some unusal strata evident throughout it."
|
||||
icon = 'xenoarchaeology.dmi'
|
||||
icon_state = "strange"
|
||||
var/obj/item/weapon/inside
|
||||
var/method = 0// 0 = fire, 1 = brush, 2 = pick
|
||||
origin_tech = "materials=5"
|
||||
|
||||
/obj/item/weapon/ore/strangerock/New(var/item_type = 0)
|
||||
..()
|
||||
//var/datum/reagents/r = new/datum/reagents(50)
|
||||
//src.reagents = r
|
||||
if(rand(3))
|
||||
method = 0 // 0 = fire, 1+ = acid
|
||||
else
|
||||
method = 0 //currently always fire
|
||||
// method = 1 //removed due to acid melting strange rocks to gooey grey -Mij
|
||||
inside = pick(150;"", 50;"/obj/item/weapon/crystal", 25;"/obj/item/weapon/talkingcrystal", "/obj/item/weapon/fossil/base")
|
||||
method = rand(0,2)
|
||||
if(item_type)
|
||||
inside = new/obj/item/weapon/archaeological_find(src, item_type)
|
||||
|
||||
/obj/item/weapon/ore/strangerock/bullet_act(var/obj/item/projectile/P)
|
||||
|
||||
/obj/item/weapon/ore/strangerock/ex_act(var/severity)
|
||||
src.visible_message("The [src] crumbles away, leaving some dust and gravel behind.")
|
||||
/*/obj/item/weapon/ore/strangerock/ex_act(var/severity)
|
||||
if(severity && prob(30))
|
||||
src.visible_message("The [src] crumbles away, leaving some dust and gravel behind.")*/
|
||||
|
||||
/obj/item/weapon/ore/strangerock/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
if(istype(W,/obj/item/weapon/weldingtool/))
|
||||
var/obj/item/weapon/weldingtool/w = W
|
||||
if(w.isOn() && (w.get_fuel() > 3))
|
||||
if(!src.method) //0 = fire, 1+ = acid
|
||||
if(w.isOn())
|
||||
if(w.get_fuel() >= 4 && !src.method)
|
||||
if(inside)
|
||||
var/obj/A = new src.inside(get_turf(src))
|
||||
inside.loc = src.loc
|
||||
for(var/mob/M in viewers(world.view, user))
|
||||
M.show_message("\blue The rock burns away revealing a [A.name].",1)
|
||||
M.show_message("<span class='info'>[src] burns away revealing [inside].</span>",1)
|
||||
else
|
||||
for(var/mob/M in viewers(world.view, user))
|
||||
M.show_message("\blue The rock burns away into nothing.",1)
|
||||
del src
|
||||
M.show_message("<span class='info'>[src] burns away into nothing.</span>",1)
|
||||
del(src)
|
||||
w.remove_fuel(4)
|
||||
else
|
||||
for(var/mob/M in viewers(world.view, user))
|
||||
M.show_message("\blue A few sparks fly off the rock, but otherwise nothing else happens.",1)
|
||||
w.remove_fuel(4)
|
||||
M.show_message("<span class='info'>A few sparks fly off [src], but nothing else happens.</span>",1)
|
||||
w.remove_fuel(1)
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/device/core_sampler/))
|
||||
var/obj/item/device/core_sampler/S = W
|
||||
S.sample_item(src, user)
|
||||
return
|
||||
|
||||
/*Code does not work, likely due to removal/change of acid_act proc
|
||||
//Strange rocks currently melt to gooey grey w/ acid application (see reactions)
|
||||
//will fix when I get a chance to fiddle with it -Mij
|
||||
/obj/item/weapon/ore/strangerock/acid_act(var/datum/reagent/R)
|
||||
if(src.method)
|
||||
if(inside)
|
||||
var/obj/A = new src.inside(get_turf(src))
|
||||
for(var/mob/M in viewers(world.view, get_turf(src)))
|
||||
M.show_message("\blue The rock fizzes away revealing a [A.name].",1)
|
||||
else
|
||||
for(var/mob/M in viewers(world.view, get_turf(src)))
|
||||
M.show_message("\blue The rock fizzes away into nothing.",1)
|
||||
del src
|
||||
else
|
||||
for(var/mob/M in viewers(world.view, get_turf(src)))
|
||||
M.show_message("\blue The acid splashes harmlessly off the rock, nothing else interesting happens.",1)
|
||||
return 1
|
||||
*/
|
||||
..()
|
||||
if(prob(33))
|
||||
src.visible_message("<span class='warning'>[src] crumbles away, leaving some dust and gravel behind.</span>")
|
||||
del(src)
|
||||
|
||||
/obj/item/weapon/archaeological_find
|
||||
name = "object"
|
||||
@@ -90,11 +224,12 @@
|
||||
icon_state = "ano01"
|
||||
var/find_type = 0
|
||||
|
||||
/obj/item/weapon/archaeological_find/New()
|
||||
if(find_type < 1 || find_type > 25)
|
||||
find_type = 0
|
||||
if(!find_type)
|
||||
find_type = rand(1, 25)
|
||||
/obj/item/weapon/archaeological_find/New(var/new_item_type)
|
||||
|
||||
if(new_item_type)
|
||||
find_type = new_item_type
|
||||
else
|
||||
find_type = get_random_find_type(0)
|
||||
|
||||
var/item_type = "object"
|
||||
icon_state = "unknown[rand(1,4)]"
|
||||
@@ -115,220 +250,291 @@
|
||||
//for all items here:
|
||||
//icon_state
|
||||
//item_state
|
||||
if(prob(90))
|
||||
switch(find_type)
|
||||
if(1)
|
||||
item_type = "bowl"
|
||||
new_item = new /obj/item/weapon/reagent_containers/glass(src.loc)
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.icon_state = "bowl"
|
||||
switch(find_type)
|
||||
if(1)
|
||||
item_type = "bowl"
|
||||
new_item = new /obj/item/weapon/reagent_containers/glass(src.loc)
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.icon_state = "bowl"
|
||||
apply_image_decorations = 1
|
||||
if(prob(20))
|
||||
additional_desc = "There appear to be [pick("dark","faintly glowing","pungent")] [pick("red","purple","green","blue")] stains inside."
|
||||
if(2)
|
||||
item_type = "urn"
|
||||
new_item = new /obj/item/weapon/reagent_containers/glass(src.loc)
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.icon_state = "urn"
|
||||
apply_image_decorations = 1
|
||||
if(prob(20))
|
||||
additional_desc = "It [pick("whispers faintly","makes a quiet roaring sound","whistles softly","thrums quietly","throbs")] if you put it to your ear."
|
||||
if(3)
|
||||
item_type = "[pick("fork","spoon","knife")]"
|
||||
if(prob(25))
|
||||
new_item = new /obj/item/weapon/kitchen/utensil/fork(src.loc)
|
||||
else if(prob(50))
|
||||
new_item = new /obj/item/weapon/kitchen/utensil/knife(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/kitchen/utensil/spoon(src.loc)
|
||||
additional_desc = "[pick("It's like no [item_type] you've ever seen before",\
|
||||
"It's a mystery how anyone is supposed to eat with this",\
|
||||
"You wonder what the creator's mouth was shaped like")]."
|
||||
if(4)
|
||||
item_type = "statuette"
|
||||
icon_state = "statuette"
|
||||
additional_desc = "It depicts a [pick("small","ferocious","wild","pleasing","hulking")] \
|
||||
[pick("alien figure","rodent-like creature","reptilian alien","primate","unidentifiable object")] \
|
||||
[pick("performing unspeakable acts","posing heroically","in a feotal position","cheering","sobbing","making a plaintive gesture","making a rude gesture")]."
|
||||
if(5)
|
||||
item_type = "instrument"
|
||||
icon_state = "instrument"
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(prob(20))
|
||||
additional_desc = "There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains inside."
|
||||
if(2)
|
||||
item_type = "urn"
|
||||
new_item = new /obj/item/weapon/reagent_containers/glass(src.loc)
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.icon_state = "urn"
|
||||
apply_image_decorations = 1
|
||||
if(prob(20))
|
||||
additional_desc = "It [pick("whispers faintly","makes a quiet roaring sound","whistles softly","thrums quietly"<"throbs")] if you put it to your ear."
|
||||
if(3)
|
||||
item_type = "[pick("fork","spoon","knife")]"
|
||||
if(prob(25))
|
||||
new_item = new /obj/item/weapon/kitchen/utensil/fork(src.loc)
|
||||
else if(prob(50))
|
||||
new_item = new /obj/item/weapon/kitchen/utensil/knife(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/kitchen/utensil/spoon(src.loc)
|
||||
additional_desc = "[pick("It's like no [item_type] you've ever seen before",\
|
||||
"It's a mystery how anyone is supposed to eat with this",\
|
||||
"You wonder what the creator's mouth was shaped like")]."
|
||||
if(4)
|
||||
item_type = "statuette"
|
||||
icon_state = "statuette"
|
||||
additional_desc = "It depicts a [pick("small","ferocious","wild","pleasing","hulking")] \
|
||||
[pick("alien humanoid figure","rodent-like creature","reptilian alien","primate","unidentifiable object")] \
|
||||
[pick("performing unspeakable acts","posing heroically","in a feotal position","cheering","sobbing","making a plaintive gesture","making a rude gesture")]."
|
||||
if(5)
|
||||
item_type = "instrument"
|
||||
icon_state = "instrument"
|
||||
additional_desc = "[pick("You're not sure how anyone could have played this",\
|
||||
"You wonder how many mouths the creator had",\
|
||||
"You wonder what it sounds like",\
|
||||
"You wonder what kind of music was made with it")]."
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(6)
|
||||
item_type = "[pick("bladed knife","serrated blade","sharp cutting implement")]"
|
||||
new_item = new /obj/item/weapon/kitchenknife(src.loc)
|
||||
additional_desc = "[pick("It doesn't look safe.",\
|
||||
"It looks wickedly jagged",\
|
||||
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along the edges")]."
|
||||
if(7)
|
||||
//assuming there are 10 types of coins
|
||||
var/chance = 10
|
||||
for(var/type in typesof(/obj/item/weapon/coin))
|
||||
if(prob(chance))
|
||||
new_item = new type(src.loc)
|
||||
break
|
||||
chance += 10
|
||||
if(6)
|
||||
item_type = "[pick("bladed knife","serrated blade","sharp cutting implement")]"
|
||||
new_item = new /obj/item/weapon/kitchenknife(src.loc)
|
||||
additional_desc = "[pick("It doesn't look safe.",\
|
||||
"It looks wickedly jagged",\
|
||||
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along the edges")]."
|
||||
if(7)
|
||||
//assuming there are 10 types of coins
|
||||
var/chance = 10
|
||||
for(var/type in typesof(/obj/item/weapon/coin))
|
||||
if(prob(chance))
|
||||
new_item = new type(src.loc)
|
||||
break
|
||||
chance += 10
|
||||
|
||||
item_type = new_item.name
|
||||
apply_material_decorations = 0
|
||||
item_type = new_item.name
|
||||
apply_material_decorations = 0
|
||||
apply_image_decorations = 1
|
||||
if(8)
|
||||
item_type = "chained loops"
|
||||
new_item = new /obj/item/weapon/handcuffs(src.loc)
|
||||
additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]."
|
||||
if(9)
|
||||
item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]"
|
||||
new_item = new /obj/item/weapon/legcuffs/beartrap(src.loc)
|
||||
additional_desc = "[pick("It looks like it could take a limb off",\
|
||||
"Could be some kind of animal trap",\
|
||||
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]."
|
||||
if(10)
|
||||
item_type = "small [pick("cylinder","tank","chamber")]"
|
||||
new_item = new /obj/item/weapon/lighter(src.loc)
|
||||
additional_desc = "There is a tiny device attached."
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(8)
|
||||
item_type = "chained loops"
|
||||
new_item = new /obj/item/weapon/handcuffs(src.loc)
|
||||
additional_desc = "[pick("They appear to be for securing two things together","Looks kinky","Doesn't seem like a children's toy")]."
|
||||
if(9)
|
||||
item_type = "[pick("wicked","evil","byzantine","dangerous")] looking [pick("device","contraption","thing","trap")]"
|
||||
new_item = new /obj/item/weapon/legcuffs/beartrap(src.loc)
|
||||
additional_desc = "[pick("It looks like it could take a limb off",\
|
||||
"Could be some kind of animal trap",\
|
||||
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains along part of it")]."
|
||||
if(10)
|
||||
item_type = "small [pick("cylinder","tank","chamber")]"
|
||||
new_item = new /obj/item/weapon/lighter(src.loc)
|
||||
additional_desc = "There is a tiny device attached."
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(11)
|
||||
item_type = "box"
|
||||
new_item = new /obj/item/weapon/storage/box(src.loc)
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.icon_state = "box"
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(12)
|
||||
item_type = "[pick("cylinder","tank","chamber")]"
|
||||
if(prob(25))
|
||||
new_item = new /obj/item/weapon/tank/air(src.loc)
|
||||
else if(prob(50))
|
||||
new_item = new /obj/item/weapon/tank/anesthetic(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/tank/plasma(src.loc)
|
||||
icon_state = pick("oxygen","oxygen_fr","oxygen_f","plasma","anesthetic")
|
||||
additional_desc = "It [pick("gloops","sloshes")] slightly when you shake it."
|
||||
if(13)
|
||||
item_type = "strange tool"
|
||||
if(prob(25))
|
||||
new_item = new /obj/item/weapon/wrench(src.loc)
|
||||
else if(prob(25))
|
||||
new_item = new /obj/item/weapon/crowbar(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/screwdriver(src.loc)
|
||||
additional_desc = "[pick("It doesn't look safe.",\
|
||||
"You wonder what it was used for",\
|
||||
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains on it")]."
|
||||
if(14)
|
||||
apply_material_decorations = 0
|
||||
var/list/possible_spawns = list()
|
||||
possible_spawns += /obj/item/stack/sheet/metal
|
||||
possible_spawns += /obj/item/stack/sheet/plasteel
|
||||
possible_spawns += /obj/item/stack/sheet/glass
|
||||
possible_spawns += /obj/item/stack/sheet/rglass
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/plasma
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/mythril
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/gold
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/silver
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/enruranium
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/sandstone
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/silver
|
||||
if(11)
|
||||
item_type = "box"
|
||||
new_item = new /obj/item/weapon/storage/box(src.loc)
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.icon_state = "box"
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(12)
|
||||
item_type = "[pick("cylinder","tank","chamber")]"
|
||||
if(prob(25))
|
||||
new_item = new /obj/item/weapon/tank/air(src.loc)
|
||||
else if(prob(50))
|
||||
new_item = new /obj/item/weapon/tank/anesthetic(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/tank/plasma(src.loc)
|
||||
icon_state = pick("oxygen","oxygen_fr","oxygen_f","plasma","anesthetic")
|
||||
additional_desc = "It [pick("gloops","sloshes")] slightly when you shake it."
|
||||
if(13)
|
||||
item_type = "strange tool"
|
||||
if(prob(25))
|
||||
new_item = new /obj/item/weapon/wrench(src.loc)
|
||||
else if(prob(25))
|
||||
new_item = new /obj/item/weapon/crowbar(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/screwdriver(src.loc)
|
||||
additional_desc = "[pick("It doesn't look safe.",\
|
||||
"You wonder what it was used for",\
|
||||
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains on it")]."
|
||||
if(14)
|
||||
apply_material_decorations = 0
|
||||
var/list/possible_spawns = list()
|
||||
possible_spawns += /obj/item/stack/sheet/metal
|
||||
possible_spawns += /obj/item/stack/sheet/plasteel
|
||||
possible_spawns += /obj/item/stack/sheet/glass
|
||||
possible_spawns += /obj/item/stack/sheet/rglass
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/plasma
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/mythril
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/gold
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/silver
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/enruranium
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/sandstone
|
||||
possible_spawns += /obj/item/stack/sheet/mineral/silver
|
||||
|
||||
var/new_type = pick(possible_spawns)
|
||||
new_item = new new_type(src.loc)
|
||||
new_item:amount = rand(5,45)
|
||||
del(src)
|
||||
return //nothing fancy here
|
||||
if(15)
|
||||
if(prob(75))
|
||||
new_item = new /obj/item/weapon/pen(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/pen/sleepypen(src.loc)
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(16)
|
||||
var/new_type = pick(possible_spawns)
|
||||
new_item = new new_type(src.loc)
|
||||
new_item:amount = rand(5,45)
|
||||
del(src)
|
||||
return //nothing fancy here
|
||||
if(15)
|
||||
if(prob(75))
|
||||
new_item = new /obj/item/weapon/pen(src.loc)
|
||||
else
|
||||
new_item = new /obj/item/weapon/pen/sleepypen(src.loc)
|
||||
if(prob(30))
|
||||
apply_image_decorations = 1
|
||||
if(16)
|
||||
if(prob(50))
|
||||
item_type = "smooth green crystal"
|
||||
additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.")
|
||||
icon_state = "Green lump"
|
||||
apply_material_decorations = 0
|
||||
if(prob(10))
|
||||
apply_image_decorations = 1
|
||||
if(17)
|
||||
else
|
||||
item_type = "irregular purple crystal"
|
||||
additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.")
|
||||
icon_state = "Phazon"
|
||||
apply_material_decorations = 0
|
||||
if(prob(10))
|
||||
apply_image_decorations = 1
|
||||
if(18)
|
||||
new_item = new /obj/item/device/radio/beacon(src.loc)
|
||||
talkative = 0
|
||||
new_item.icon_state = "unknown[rand(1,4)]"
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.desc = ""
|
||||
if(19)
|
||||
new_item = new /obj/item/weapon/claymore(src.loc)
|
||||
name = new_item.name
|
||||
desc = new_item.desc
|
||||
apply_material_decorations = 0
|
||||
if(20)
|
||||
//arcane clothing
|
||||
var/list/possible_spawns = list(/obj/item/clothing/head/culthood,
|
||||
/obj/item/clothing/head/magus,
|
||||
/obj/item/clothing/head/culthood/alt,
|
||||
/obj/item/clothing/head/helmet/space/cult)
|
||||
additional_desc = pick("It shines faintly as it catches the light.","It appears to have a faint inner glow.","It seems to draw you inward as you look it at.","Something twinkles faintly as you look at it.","It's mesmerizing to behold.")
|
||||
|
||||
var/new_type = pick(possible_spawns)
|
||||
new_item = new new_type(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(21)
|
||||
//the dangerous stuff: low chance of turning up
|
||||
var/list/possible_spawns = list(/obj/item/weapon/veilrender,
|
||||
/obj/item/device/soulstone,
|
||||
/obj/item/weapon/melee/cultblade)
|
||||
apply_material_decorations = 0
|
||||
if(prob(10))
|
||||
apply_image_decorations = 1
|
||||
if(17)
|
||||
//cultblade
|
||||
new /obj/item/weapon/melee/cultblade(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(18)
|
||||
new_item = new /obj/item/device/radio/beacon(src.loc)
|
||||
talkative = 0
|
||||
new_item.icon_state = "unknown[rand(1,4)]"
|
||||
new_item.icon = 'xenoarchaeology.dmi'
|
||||
new_item.desc = ""
|
||||
if(19)
|
||||
new_item = new /obj/item/weapon/claymore(src.loc)
|
||||
name = new_item.name
|
||||
desc = new_item.desc
|
||||
apply_material_decorations = 0
|
||||
if(20)
|
||||
//arcane clothing
|
||||
var/list/possible_spawns = list(/obj/item/clothing/head/culthood,
|
||||
/obj/item/clothing/head/magus,
|
||||
/obj/item/clothing/head/culthood/alt,
|
||||
/obj/item/clothing/head/helmet/space/cult)
|
||||
|
||||
var/new_type = pick(possible_spawns)
|
||||
new_item = new new_type(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(22)
|
||||
new_item = new /obj/item/weapon/shard(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(23)
|
||||
new_item = new /obj/item/stack/rods(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(24)
|
||||
var/list/possible_spawns = list()
|
||||
possible_spawns += typesof(/obj/item/weapon/stock_parts)
|
||||
possible_spawns -= /obj/item/weapon/stock_parts
|
||||
possible_spawns -= /obj/item/weapon/stock_parts/subspace
|
||||
var/new_type = pick(possible_spawns)
|
||||
new_item = new new_type(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(21)
|
||||
//soulstone
|
||||
new_item = new /obj/item/device/soulstone(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(22)
|
||||
new_item = new /obj/item/weapon/shard(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(23)
|
||||
new_item = new /obj/item/stack/rods(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(24)
|
||||
var/list/possible_spawns = typesof(/obj/item/weapon/stock_parts)
|
||||
possible_spawns -= /obj/item/weapon/stock_parts
|
||||
possible_spawns -= /obj/item/weapon/stock_parts/subspace
|
||||
|
||||
var/new_type = pick(possible_spawns)
|
||||
new_item = new new_type(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(25)
|
||||
new_item = new /obj/item/weapon/katana(src.loc)
|
||||
name = new_item.name
|
||||
desc = new_item.desc
|
||||
apply_material_decorations = 0
|
||||
var/new_type = pick(possible_spawns)
|
||||
new_item = new new_type(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(25)
|
||||
new_item = new /obj/item/weapon/katana(src.loc)
|
||||
name = new_item.name
|
||||
desc = new_item.desc
|
||||
apply_material_decorations = 0
|
||||
if(26)
|
||||
//energy gun
|
||||
var/spawn_type = pick(\
|
||||
/obj/item/weapon/gun/energy/laser/practice;100,\
|
||||
/obj/item/weapon/gun/energy/laser;75,\
|
||||
/obj/item/weapon/gun/energy/xray;50,\
|
||||
/obj/item/weapon/gun/energy/laser/captain;25,\
|
||||
)
|
||||
var/obj/item/weapon/gun/energy/new_gun = new spawn_type(src.loc)
|
||||
new_item = new_gun
|
||||
new_item.icon_state = "egun[rand(1,6)]"
|
||||
|
||||
else if(prob(40))
|
||||
apply_image_decorations = 1
|
||||
//5% chance to explode when first fired
|
||||
//10% chance to have an unchargeable cell
|
||||
//15% chance to gain a random amount of starting energy, otherwise start with an empty cell
|
||||
if(prob(5))
|
||||
new_gun.power_supply.rigged = 1
|
||||
if(prob(10))
|
||||
new_gun.power_supply.maxcharge = 0
|
||||
if(prob(15))
|
||||
new_gun.power_supply.charge = rand(0, new_gun.power_supply.maxcharge)
|
||||
else
|
||||
new_gun.power_supply.charge = 0
|
||||
|
||||
name = new_item.name
|
||||
desc = new_item.desc
|
||||
if(27)
|
||||
//revolver
|
||||
var/obj/item/weapon/gun/projectile/new_gun = new (src.loc)
|
||||
new_item = new_gun
|
||||
new_item.icon_state = "gun[rand(1,4)]"
|
||||
|
||||
//33% chance to be able to reload the gun with human ammunition
|
||||
if(prob(66))
|
||||
new_gun.caliber = "999"
|
||||
|
||||
//33% chance to fill it with a random amount of bullets
|
||||
new_gun.max_shells = rand(1,12)
|
||||
if(prob(33))
|
||||
var/num_bullets = rand(1,new_gun.max_shells)
|
||||
if(num_bullets < new_gun.loaded.len)
|
||||
for(var/i = num_bullets, i <= new_gun.loaded.len, i++)
|
||||
new_gun.loaded += new new_gun.ammo_type(src)
|
||||
else
|
||||
for(var/obj/item/I in new_gun)
|
||||
if(new_gun.loaded.len > num_bullets)
|
||||
if(I in new_gun.loaded)
|
||||
new_gun.loaded.Remove(I)
|
||||
I.loc = null
|
||||
else
|
||||
break
|
||||
else
|
||||
for(var/obj/item/I in new_gun)
|
||||
if(I in new_gun.loaded)
|
||||
new_gun.loaded.Remove(I)
|
||||
I.loc = null
|
||||
|
||||
name = new_item.name
|
||||
desc = new_item.desc
|
||||
if(28)
|
||||
//completely unknown alien device
|
||||
if(prob(40))
|
||||
apply_image_decorations = 0
|
||||
if(29)
|
||||
//fossil bone/skull
|
||||
new/obj/item/weapon/fossil/base(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(30)
|
||||
//fossil shell
|
||||
new/obj/item/weapon/fossil/base(src.loc)
|
||||
del(src)
|
||||
return
|
||||
if(30)
|
||||
//fossil plant
|
||||
new/obj/item/weapon/fossil/base(src.loc)
|
||||
del(src)
|
||||
return
|
||||
|
||||
var/decorations = ""
|
||||
source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium")
|
||||
if(apply_material_decorations)
|
||||
source_material = pick("cordite","quadrinium","steel","titanium","aluminium","ferritic-alloy","plasteel","duranium")
|
||||
desc = "A [material_descriptor ? "[material_descriptor] " : ""][item_type] made of [source_material], all craftsmanship is of [pick("the lowest","low","average","high","the highest")] quality."
|
||||
|
||||
var/list/descriptors = list()
|
||||
if(prob(30))
|
||||
descriptors.Add("is encrusted with [pick("","synthetic ","multi-faceted ","uncut ","sparkling ") + pick("rubies","emeralds","diamonds","crystals","lapiz lazuli")]")
|
||||
descriptors.Add("is encrusted with [pick("","synthetic ","multi-faceted ","uncut ","sparkling ") + pick("rubies","emeralds","diamonds","opals","lapiz lazuli")]")
|
||||
if(prob(30))
|
||||
descriptors.Add("is studded with [pick("gold","silver","aluminium","titanium")]")
|
||||
if(prob(30))
|
||||
@@ -378,16 +584,14 @@
|
||||
new_item.listening_to_players = 1
|
||||
if(prob(25))
|
||||
new_item.speaking_to_players = 1
|
||||
spawn(100)
|
||||
new_item.process_talking()
|
||||
processing_objects.Add(src)
|
||||
del(src)
|
||||
|
||||
else if(talkative)
|
||||
listening_to_players = 1
|
||||
if(prob(25))
|
||||
speaking_to_players = 1
|
||||
spawn(100)
|
||||
process_talking()
|
||||
processing_objects.Add(src)
|
||||
|
||||
//legacy crystal
|
||||
/obj/item/weapon/crystal
|
||||
@@ -397,10 +601,6 @@
|
||||
|
||||
//large finds
|
||||
/*
|
||||
/obj/item/clothing/suit/cultrobes
|
||||
/obj/item/clothing/suit/cultrobes/alt
|
||||
/obj/item/clothing/suit/magusred
|
||||
/obj/item/clothing/suit/space/cult
|
||||
/obj/machinery/syndicate_beacon
|
||||
/obj/machinery/wish_granter
|
||||
if(18)
|
||||
@@ -417,4 +617,5 @@
|
||||
apply_material_decorations = 0
|
||||
if(prob(10))
|
||||
apply_image_decorations = 1
|
||||
*/
|
||||
*/
|
||||
//machinery type artifacts?
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
/obj/item/weapon/fossil/base/New()
|
||||
spawn(0)
|
||||
var/list/l = list("/obj/item/weapon/fossil/bone"=8,"/obj/item/weapon/fossil/skull"=2,
|
||||
"/obj/item/weapon/fossil/skull/horned"=2,"/obj/item/weapon/fossil/shell"=1)
|
||||
var/list/l = list("/obj/item/weapon/fossil/bone"=9,"/obj/item/weapon/fossil/skull"=3,
|
||||
"/obj/item/weapon/fossil/skull/horned"=2)
|
||||
var/t = pickweight(l)
|
||||
new t(src.loc)
|
||||
del src
|
||||
@@ -21,20 +21,15 @@
|
||||
icon_state = "bone"
|
||||
desc = "It's a fossilised bone."
|
||||
|
||||
/obj/item/weapon/fossil/shell
|
||||
name = "Fossilised shell"
|
||||
icon_state = "shell"
|
||||
desc = "It's a fossilised shell."
|
||||
|
||||
/obj/item/weapon/fossil/skull/horned
|
||||
icon_state = "hskull"
|
||||
desc = "It's a fossilised, horned skull."
|
||||
|
||||
/obj/item/weapon/fossil/skull
|
||||
name = "Fossilised skull"
|
||||
icon_state = "skull"
|
||||
desc = "It's a fossilised skull."
|
||||
|
||||
/obj/item/weapon/fossil/skull/horned
|
||||
icon_state = "hskull"
|
||||
desc = "It's a fossilised, horned skull."
|
||||
|
||||
/obj/item/weapon/fossil/skull/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/fossil/bone))
|
||||
var/obj/o = new /obj/skeleton(get_turf(src))
|
||||
@@ -53,6 +48,7 @@
|
||||
var/bnum = 1
|
||||
var/breq
|
||||
var/bstate = 0
|
||||
var/plaque_contents = "Unnamed alien creature"
|
||||
|
||||
/obj/skeleton/New()
|
||||
src.breq = rand(6)+3
|
||||
@@ -67,18 +63,38 @@
|
||||
if(bnum==breq)
|
||||
usr = user
|
||||
icon_state = "skel"
|
||||
var/creaturename = input("Input a name for your discovery:","Name your discovery","Spaceosaurus")
|
||||
src.bstate = 1
|
||||
src.density = 1
|
||||
src.name = "[creaturename] skeleton"
|
||||
src.name = "alien skeleton display"
|
||||
if(src.contents.Find(/obj/item/weapon/fossil/skull/horned))
|
||||
src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull, the plaque reads [creaturename]."
|
||||
src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'."
|
||||
else
|
||||
src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull, the plaque reads [creaturename]."
|
||||
src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull. The plaque reads \'[plaque_contents]\'."
|
||||
else
|
||||
src.desc = "Incomplete skeleton, looks like it could use [src.breq-src.bnum] more bones."
|
||||
user << "Looks like it could use [src.breq-src.bnum] more bones."
|
||||
else
|
||||
..()
|
||||
else if(istype(W,/obj/item/weapon/pen))
|
||||
plaque_contents = input("What would you like to write on the plaque:","Skeleton plaque","")
|
||||
user.visible_message("[user] writes something on the base of [src].","You relabel the plaque on the base of \icon[src] [src].")
|
||||
if(src.contents.Find(/obj/item/weapon/fossil/skull/horned))
|
||||
src.desc = "A creature made of [src.contents.len-1] assorted bones and a horned skull. The plaque reads \'[plaque_contents]\'."
|
||||
else
|
||||
src.desc = "A creature made of [src.contents.len-1] assorted bones and a skull. The plaque reads \'[plaque_contents]\'."
|
||||
else
|
||||
..()
|
||||
|
||||
//shells and plants do not make skeletons
|
||||
/obj/item/weapon/fossil/shell
|
||||
name = "Fossilised shell"
|
||||
icon_state = "shell"
|
||||
desc = "It's a fossilised shell."
|
||||
|
||||
/obj/item/weapon/fossil/plant
|
||||
name = "Fossilised plant"
|
||||
icon_state = "plant1"
|
||||
desc = "It's fossilised plant remains."
|
||||
|
||||
/obj/item/weapon/fossil/plant/New()
|
||||
icon_state = "plant[rand(1,4)]"
|
||||
|
||||
@@ -10,11 +10,12 @@
|
||||
var/listening_to_players = 0
|
||||
var/speaking_to_players = 0
|
||||
|
||||
/obj/item/weapon/proc/process_talking(var/word = null)
|
||||
if(prob(25) && world.timeofday >= lastsaid && heard_words.len >= 1)
|
||||
SaySomething(word)
|
||||
spawn(100)
|
||||
process_talking()
|
||||
/obj/item/weapon/process()
|
||||
if(!speaking_to_players)
|
||||
processing_objects.Remove(src)
|
||||
return
|
||||
if(prob(10) && world.timeofday >= lastsaid && heard_words.len >= 1)
|
||||
SaySomething()
|
||||
|
||||
/obj/item/weapon/proc/catchMessage(var/msg, var/mob/source)
|
||||
if(speaking_to_players)
|
||||
|
||||
Reference in New Issue
Block a user