mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Merge to master - sole conflicting file was ninja.dm FUCK NINJAS
This commit is contained in:
@@ -41,7 +41,8 @@
|
||||
D.createmessage("Ore Redemption Machine", "New minerals available!", msg, 1, 0)
|
||||
var/obj/item/stack/sheet/storage = stack_list[processed_sheet]
|
||||
storage.amount += 1 //Stack the sheets
|
||||
O.loc = null //Let the old sheet garbage collect
|
||||
O.loc = null //Let the old sheet...
|
||||
qdel(O) //... garbage collect
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/process()
|
||||
if(!panel_open) //If the machine is partially dissassembled, it should not process minerals
|
||||
@@ -76,9 +77,7 @@
|
||||
return
|
||||
if(panel_open)
|
||||
if(istype(W, /obj/item/weapon/crowbar))
|
||||
for (var/obj/O in src.contents)
|
||||
O.loc = src.loc //Drop item to the floor
|
||||
O.layer = initial(O.layer)
|
||||
empty_content()
|
||||
default_deconstruction_crowbar(W)
|
||||
return 1
|
||||
if(default_deconstruction_screwdriver(user, "ore_redemption-open", "ore_redemption", W))
|
||||
@@ -197,18 +196,27 @@
|
||||
s.start()
|
||||
if(severity == 1)
|
||||
if(prob(50))
|
||||
for (var/obj/O in src.contents)
|
||||
O.loc = src.loc //Drop item to the floor
|
||||
O.layer = initial(O.layer)
|
||||
empty_content()
|
||||
qdel(src)
|
||||
else if(severity == 2)
|
||||
if(prob(25))
|
||||
for (var/obj/O in src.contents)
|
||||
O.loc = src.loc //Drop item to the floor
|
||||
O.layer = initial(O.layer)
|
||||
empty_content()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
//empty the redemption machine by stacks of at most max_amount (50 at this time) size
|
||||
/obj/machinery/mineral/ore_redemption/proc/empty_content()
|
||||
var/obj/item/stack/sheet/s
|
||||
|
||||
for(var/O in stack_list)
|
||||
s = stack_list[O]
|
||||
while(s.amount > s.max_amount)
|
||||
new s.type(loc,s.max_amount)
|
||||
s.use(s.max_amount)
|
||||
s.loc = loc
|
||||
s.layer = initial(s.layer)
|
||||
|
||||
|
||||
/**********************Mining Equipment Vendor**************************/
|
||||
|
||||
/obj/machinery/mineral/equipment_vendor
|
||||
@@ -573,7 +581,7 @@
|
||||
projectilesound = 'sound/weapons/Gunshot4.ogg'
|
||||
wanted_objects = list(/obj/item/weapon/ore/diamond, /obj/item/weapon/ore/gold, /obj/item/weapon/ore/silver,
|
||||
/obj/item/weapon/ore/plasma, /obj/item/weapon/ore/uranium, /obj/item/weapon/ore/iron,
|
||||
/obj/item/weapon/ore/clown)
|
||||
/obj/item/weapon/ore/bananium)
|
||||
|
||||
/mob/living/simple_animal/hostile/mining_drone/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
@@ -588,7 +596,7 @@
|
||||
health += 10
|
||||
user << "<span class='info'>You repair some of the armor on [src].</span>"
|
||||
return
|
||||
if(istype(I, /obj/item/device/mining_scanner))
|
||||
if(istype(I, /obj/item/device/t_scanner/mining_scanner))
|
||||
user << "<span class='info'>You instruct [src] to drop any collected ore.</span>"
|
||||
DropOre()
|
||||
return
|
||||
@@ -722,45 +730,46 @@
|
||||
user << "<span class='info'>The display on [src] seems to be flickering.</span>"
|
||||
|
||||
/**********************Mining Scanner**********************/
|
||||
/obj/item/device/mining_scanner
|
||||
/obj/item/device/t_scanner/mining_scanner
|
||||
desc = "A scanner that checks surrounding rock for useful minerals, it can also be used to stop gibtonite detonations. Requires you to wear mesons to work properly."
|
||||
name = "mining scanner"
|
||||
icon_state = "mining"
|
||||
icon_state = "mining0"
|
||||
item_state = "analyzer"
|
||||
w_class = 2.0
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/device/mining_scanner/attack_self(mob/user)
|
||||
if(!user.client)
|
||||
return
|
||||
/obj/item/device/t_scanner/mining_scanner/scan()
|
||||
if(!cooldown)
|
||||
cooldown = 1
|
||||
spawn(40)
|
||||
spawn(100)
|
||||
cooldown = 0
|
||||
var/client/C = user.client
|
||||
var/turf/t = get_turf(src)
|
||||
var/list/mobs = recursive_mob_check(t, 1,0,0)
|
||||
if(!mobs.len)
|
||||
return
|
||||
var/list/L = list()
|
||||
var/turf/simulated/mineral/M
|
||||
for(M in range(7, user))
|
||||
for(M in range(7, t))
|
||||
if(M.scan_state)
|
||||
L += M
|
||||
if(!L.len)
|
||||
user << "<span class='info'>[src] reports that nothing was detected nearby.</span>"
|
||||
return
|
||||
else
|
||||
for(M in L)
|
||||
var/turf/T = get_turf(M)
|
||||
var/image/I = image('icons/turf/walls.dmi', loc = T, icon_state = M.scan_state, layer = 18)
|
||||
C.images += I
|
||||
spawn(30)
|
||||
if(C)
|
||||
C.images -= I
|
||||
if(L.len)
|
||||
for(var/mob/user in mobs)
|
||||
if(user.client)
|
||||
var/client/C = user.client
|
||||
for(M in L)
|
||||
var/turf/T = get_turf(M)
|
||||
var/image/I = image('icons/turf/walls.dmi', loc = T, icon_state = M.scan_state, layer = 18)
|
||||
C.images += I
|
||||
spawn(30)
|
||||
if(C)
|
||||
C.images -= I
|
||||
|
||||
//Debug item to identify all ore spread quickly
|
||||
/obj/item/device/mining_scanner/admin
|
||||
/obj/item/device/t_scanner/mining_scanner/admin
|
||||
|
||||
/obj/item/device/mining_scanner/admin/attack_self(mob/user)
|
||||
/obj/item/device/t_scanner/mining_scanner/admin/attack_self(mob/user)
|
||||
for(var/turf/simulated/mineral/M in world)
|
||||
if(M.scan_state)
|
||||
M.icon_state = M.scan_state
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
else if(istype(inserted_id)) //There's an ID in there.
|
||||
dat += text("ID: [inserted_id.registered_name] <A href='?src=\ref[src];choice=eject'>Eject ID.</A><br>")
|
||||
dat += text("Points Collected:[inserted_id.points]<br>")
|
||||
dat += text("Point Quota: [inserted_id.goal ? inserted_id.goal : "Unlimited"] - Reach your quota to earn your release<br>")
|
||||
dat += text("Point Quota: [inserted_id.goal] - Reach your quota to earn your release<br>")
|
||||
dat += text("Unclaimed Collection Points: [machine.points]. <A href='?src=\ref[src];choice=claim'>Claim points.</A><br>")
|
||||
else //No ID in sight. Complain about it.
|
||||
dat += text("No ID inserted. <A href='?src=\ref[src];choice=insert'>Insert ID.</A><br>")
|
||||
@@ -157,7 +157,7 @@
|
||||
var/obj/item/weapon/card/id/prisoner/prisoner_id = I
|
||||
user << "<span class='notice'><B>ID: [prisoner_id.registered_name]</B></span>"
|
||||
user << "<span class='notice'>Points Collected:[prisoner_id.points]</span>"
|
||||
user << "<span class='notice'>Point Quota: [prisoner_id.goal ? prisoner_id.goal : "Unlimited"]</span>"
|
||||
user << "<span class='notice'>Point Quota: [prisoner_id.goal]</span>"
|
||||
user << "<span class='notice'>Collect points by bringing smelted minerals to the Labor Shuttle stacking machine. Reach your quota to earn your release.</span>"
|
||||
else
|
||||
user << "<span class='warning'>Error: Invalid ID</span>"
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
if (selected_glass == 0 && selected_gold == 0 && selected_silver == 0 && selected_diamond == 0 && selected_plasma == 0 && selected_uranium == 0 && selected_iron == 0 && selected_clown == 1)
|
||||
if (ore_clown > 0)
|
||||
ore_clown--;
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/clown)
|
||||
generate_mineral(/obj/item/stack/sheet/mineral/bananium)
|
||||
else
|
||||
on = 0
|
||||
continue
|
||||
@@ -385,7 +385,7 @@
|
||||
ore_uranium++
|
||||
O.loc = null
|
||||
continue
|
||||
if (istype(O,/obj/item/weapon/ore/clown))
|
||||
if (istype(O,/obj/item/weapon/ore/bananium))
|
||||
ore_clown++
|
||||
O.loc = null
|
||||
continue
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
new /obj/item/clothing/under/rank/miner(src)
|
||||
new /obj/item/clothing/gloves/fingerless(src)
|
||||
new /obj/item/clothing/shoes/sneakers/black(src)
|
||||
new /obj/item/device/mining_scanner(src)
|
||||
new /obj/item/device/t_scanner/mining_scanner(src)
|
||||
new /obj/item/weapon/storage/bag/ore(src)
|
||||
new /obj/item/device/flashlight/lantern(src)
|
||||
new /obj/item/weapon/shovel(src)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
..()
|
||||
|
||||
/turf/simulated/mineral/gibtonite/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/device/mining_scanner) && stage == 1)
|
||||
if(istype(I, /obj/item/device/t_scanner/mining_scanner) && stage == 1)
|
||||
user.visible_message("<span class='notice'>You use [I] to locate where to cut off the chain reaction and attempt to stop it...</span>")
|
||||
defuse()
|
||||
if(istype(I, /obj/item/weapon/pickaxe))
|
||||
@@ -372,7 +372,7 @@
|
||||
|
||||
/turf/simulated/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
|
||||
if (!user.IsAdvancedToolUser())
|
||||
usr << "<span class='danger'>You don't have the dexterity to do this!</span>"
|
||||
return
|
||||
|
||||
@@ -417,7 +417,7 @@
|
||||
if (src.mineralName == "Diamond")
|
||||
new /obj/item/weapon/ore/diamond(src)
|
||||
if (src.mineralName == "Clown")
|
||||
new /obj/item/weapon/ore/clown(src)
|
||||
new /obj/item/weapon/ore/bananium(src)
|
||||
var/turf/simulated/floor/plating/asteroid/airless/N = ChangeTurf(/turf/simulated/floor/plating/asteroid/airless)
|
||||
N.fullUpdateMineralOverlays()
|
||||
return
|
||||
@@ -597,22 +597,6 @@
|
||||
/turf/simulated/mineral/updateMineralOverlays()
|
||||
return
|
||||
|
||||
|
||||
|
||||
/turf/proc/fullUpdateMineralOverlays()
|
||||
for (var/turf/t in range(1,src))
|
||||
t.updateMineralOverlays()
|
||||
|
||||
/turf/simulated/floor/plating/asteroid/Entered(atom/movable/M as mob|obj)
|
||||
..()
|
||||
if(istype(M,/mob/living/silicon/robot))
|
||||
var/mob/living/silicon/robot/R = M
|
||||
if(istype(R.module, /obj/item/weapon/robot_module/miner))
|
||||
if(istype(R.module_state_1,/obj/item/weapon/storage/bag/ore))
|
||||
src.attackby(R.module_state_1,R)
|
||||
else if(istype(R.module_state_2,/obj/item/weapon/storage/bag/ore))
|
||||
src.attackby(R.module_state_2,R)
|
||||
else if(istype(R.module_state_3,/obj/item/weapon/storage/bag/ore))
|
||||
src.attackby(R.module_state_3,R)
|
||||
else
|
||||
return
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
if (istype(O, /obj/item/stack/sheet/metal))
|
||||
amt_iron += 100 * O.amount
|
||||
O.loc = null
|
||||
if (istype(O, /obj/item/stack/sheet/mineral/clown))
|
||||
if (istype(O, /obj/item/stack/sheet/mineral/bananium))
|
||||
amt_clown += 100 * O.amount
|
||||
O.loc = null
|
||||
if (istype(O, /obj/item/stack/sheet/mineral/adamantine))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if(W.remove_fuel(15))
|
||||
new refined_type(get_turf(src.loc))
|
||||
qdel(src)
|
||||
else
|
||||
else if(W.isOn())
|
||||
user << "<span class='info'>Not enough fuel to smelt [src].</span>"
|
||||
..()
|
||||
|
||||
@@ -85,12 +85,12 @@
|
||||
points = 36
|
||||
refined_type = /obj/item/stack/sheet/mineral/diamond
|
||||
|
||||
/obj/item/weapon/ore/clown
|
||||
/obj/item/weapon/ore/bananium
|
||||
name = "Bananium ore"
|
||||
icon_state = "Clown ore"
|
||||
origin_tech = "materials=4"
|
||||
points = 27
|
||||
refined_type = /obj/item/stack/sheet/mineral/clown
|
||||
refined_type = /obj/item/stack/sheet/mineral/bananium
|
||||
|
||||
/obj/item/weapon/ore/slag
|
||||
name = "Slag"
|
||||
@@ -114,7 +114,7 @@
|
||||
if(istype(I, /obj/item/weapon/pickaxe) || istype(I, /obj/item/weapon/resonator))
|
||||
GibtoniteReaction(user)
|
||||
return
|
||||
if(istype(I, /obj/item/device/mining_scanner) && primed)
|
||||
if(istype(I, /obj/item/device/t_scanner/mining_scanner) && primed)
|
||||
primed = 0
|
||||
user.visible_message("<span class='notice'>The chain reaction was stopped! ...The ore's quality went down.</span>")
|
||||
icon_state = "Gibtonite ore"
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
amt_gold++;
|
||||
if (istype(C,/obj/item/weapon/ore/uranium))
|
||||
amt_uranium++;
|
||||
if (istype(C,/obj/item/weapon/ore/clown))
|
||||
if (istype(C,/obj/item/weapon/ore/bananium))
|
||||
amt_clown++;
|
||||
|
||||
var/dat = text("<b>The contents of the ore box reveal...</b><br>")
|
||||
|
||||
Reference in New Issue
Block a user