Files
Aurora.3/code/modules/mining/ore.dm
skull132 755ce490db Rewriting multiz movement to be gooder (#2464)
Intent: implement all of the features from #2442 while also unfucking the multiz movement files to be more readable and not recurse.

To that end, this PR does the following:

All multiz travel is now arbitrated by SSfalling. This will eliminate the need for recursion without relying on timers. Timers would be a bit scary.
The call chain for multiz movement now looks like this (in terms of overwritable procs):
can_fall() (Can lead into fall_impact() & fall_collateral() if returns FALSE)
fall_through() IF current block is open space ELSE fall_impact() & fall_collateral()
Removed almost every istype(src, A) check in the movement.dm file by exercising proper parenting and call chains.
Documented and standardized the contents of multiz/movement.dm. Because this is an API we're going to be relying on very heavily, I'd like to get this right before we move on.
A lot of minor tweaks, like swapping usr over to the applicable mob, and so on.
2017-05-27 02:14:35 +03:00

99 lines
2.3 KiB
Plaintext

/obj/item/weapon/ore
name = "rock"
icon = 'icons/obj/mining.dmi'
icon_state = "ore1"
w_class = 2
throwforce = 10
var/datum/geosample/geologic_data
var/material
/obj/item/weapon/ore/uranium
name = "pitchblende"
icon_state = "ore_uranium"
origin_tech = list(TECH_MATERIAL = 5)
material = ORE_URANIUM
/obj/item/weapon/ore/iron
name = "hematite"
icon_state = "ore_iron"
origin_tech = list(TECH_MATERIAL = 1)
material = ORE_IRON
/obj/item/weapon/ore/coal
name = "raw carbon"
icon_state = "ore_coal"
origin_tech = list(TECH_MATERIAL = 1)
material = ORE_COAL
/obj/item/weapon/ore/glass
name = "sand"
icon_state = "ore_glass"
origin_tech = list(TECH_MATERIAL = 1)
material = ORE_SAND
slot_flags = SLOT_HOLSTER
// POCKET SAND!
/obj/item/weapon/ore/glass/throw_impact(atom/hit_atom)
..()
var/mob/living/carbon/human/H = hit_atom
if(istype(H) && H.has_eyes() && prob(85))
H << "<span class='danger'>Some of \the [src] gets in your eyes!</span>"
H.eye_blind += 5
H.eye_blurry += 10
spawn(1)
if(istype(loc, /turf/)) qdel(src)
/obj/item/weapon/ore/phoron
name = "phoron crystals"
icon_state = "ore_phoron"
origin_tech = list(TECH_MATERIAL = 2, TECH_PHORON = 2)
material = ORE_PHORON
/obj/item/weapon/ore/silver
name = "native silver ore"
icon_state = "ore_silver"
origin_tech = list(TECH_MATERIAL = 3)
material = ORE_SILVER
/obj/item/weapon/ore/gold
name = "native gold ore"
icon_state = "ore_gold"
origin_tech = list(TECH_MATERIAL = 4)
material = ORE_GOLD
/obj/item/weapon/ore/diamond
name = "diamonds"
icon_state = "ore_diamond"
origin_tech = list(TECH_MATERIAL = 6)
material = ORE_DIAMOND
/obj/item/weapon/ore/osmium
name = "raw platinum"
icon_state = "ore_platinum"
material = ORE_PLATINUM
/obj/item/weapon/ore/hydrogen
name = "raw hydrogen"
icon_state = "ore_hydrogen"
material = ORE_HYDROGEN
/obj/item/weapon/ore/slag
name = "Slag"
desc = "Someone screwed up..."
icon_state = "slag"
material = null
/obj/item/weapon/ore/New()
pixel_x = rand(0,16)-8
pixel_y = rand(0,8)-8
if(icon_state == "ore1")
icon_state = "ore[pick(1,2,3)]"
/obj/item/weapon/ore/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/core_sampler))
var/obj/item/device/core_sampler/C = W
C.sample_item(src, user)
else
return ..()