mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 03:57:48 +01:00
Merge branch 'master' into upstream-merge-8222
This commit is contained in:
@@ -11,11 +11,14 @@
|
||||
icon_state = "mining_drill"
|
||||
circuit = /obj/item/weapon/circuitboard/miningdrill
|
||||
var/braces_needed = 2
|
||||
var/list/supports = list()
|
||||
var/total_brace_tier = 0
|
||||
var/list/obj/machinery/mining/brace/supports = list()
|
||||
var/supported = 0
|
||||
var/active = 0
|
||||
var/list/resource_field = list()
|
||||
var/obj/item/device/radio/intercom/faultreporter
|
||||
var/drill_range = 5
|
||||
var/offset = 2
|
||||
|
||||
var/list/ore_types = list(
|
||||
"hematite" = /obj/item/weapon/ore/iron,
|
||||
@@ -174,6 +177,9 @@
|
||||
if(newtag)
|
||||
name = "[initial(name)] #[newtag]"
|
||||
to_chat(user, "<span class='notice'>You changed the drill ID to: [newtag]</span>")
|
||||
else
|
||||
name = "[initial(name)]"
|
||||
to_chat(user, SPAN_NOTICE("You removed the drill's ID and any extraneous labels."))
|
||||
return
|
||||
if(default_deconstruction_screwdriver(user, O))
|
||||
return
|
||||
@@ -197,6 +203,7 @@
|
||||
|
||||
/obj/machinery/mining/drill/attack_hand(mob/user as mob)
|
||||
check_supports()
|
||||
RefreshParts()
|
||||
|
||||
if (panel_open && cell && user.Adjacent(src))
|
||||
to_chat(user, "You take out \the [cell].")
|
||||
@@ -217,6 +224,8 @@
|
||||
if(active)
|
||||
visible_message("<b>\The [src]</b> lurches downwards, grinding noisily.")
|
||||
need_update_field = 1
|
||||
harvest_speed *= total_brace_tier
|
||||
charge_use *= total_brace_tier
|
||||
else
|
||||
visible_message("<b>\The [src]</b> shudders to a grinding halt.")
|
||||
else
|
||||
@@ -242,10 +251,12 @@
|
||||
harvest_speed = 0
|
||||
capacity = 0
|
||||
charge_use = 50
|
||||
drill_range = 5
|
||||
offset = 2
|
||||
|
||||
for(var/obj/item/weapon/stock_parts/P in component_parts)
|
||||
if(istype(P, /obj/item/weapon/stock_parts/micro_laser))
|
||||
harvest_speed = P.rating
|
||||
harvest_speed = P.rating ** 2 // 1, 4, 9, 16, 25
|
||||
exotic_drilling = P.rating - 1
|
||||
if(exotic_drilling >= 1)
|
||||
ore_types |= ore_types_uncommon
|
||||
@@ -254,6 +265,14 @@
|
||||
else
|
||||
ore_types -= ore_types_uncommon
|
||||
ore_types -= ore_types_rare
|
||||
if(P.rating > 3) // are we t4+?
|
||||
// default drill range 5, offset 2
|
||||
if(P.rating >= 5) // t5
|
||||
drill_range = 9
|
||||
offset = 4
|
||||
else if(P.rating >= 4) // t4
|
||||
drill_range = 7
|
||||
offset = 3
|
||||
if(istype(P, /obj/item/weapon/stock_parts/matter_bin))
|
||||
capacity = 200 * P.rating
|
||||
if(istype(P, /obj/item/weapon/stock_parts/capacitor))
|
||||
@@ -263,6 +282,7 @@
|
||||
/obj/machinery/mining/drill/proc/check_supports()
|
||||
|
||||
supported = 0
|
||||
total_brace_tier = 0
|
||||
|
||||
if((!supports || !supports.len) && initial(anchored) == 0)
|
||||
icon_state = "mining_drill"
|
||||
@@ -271,8 +291,14 @@
|
||||
else
|
||||
anchored = TRUE
|
||||
|
||||
if(supports && supports.len >= braces_needed)
|
||||
supported = 1
|
||||
if(supports)
|
||||
if(supports.len >= braces_needed)
|
||||
supported = 1
|
||||
else for(var/obj/machinery/mining/brace/check in supports)
|
||||
if(check.brace_tier >= 3)
|
||||
supported = 1
|
||||
for(var/obj/machinery/mining/brace/check in supports)
|
||||
total_brace_tier += check.brace_tier
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -293,11 +319,11 @@
|
||||
var/turf/T = get_turf(src)
|
||||
if(!istype(T)) return
|
||||
|
||||
var/tx = T.x - 2
|
||||
var/ty = T.y - 2
|
||||
var/tx = T.x - offset
|
||||
var/ty = T.y - offset
|
||||
var/turf/simulated/mine_turf
|
||||
for(var/iy = 0,iy < 5, iy++)
|
||||
for(var/ix = 0, ix < 5, ix++)
|
||||
for(var/iy = 0,iy < drill_range, iy++)
|
||||
for(var/ix = 0, ix < drill_range, ix++)
|
||||
mine_turf = locate(tx + ix, ty + iy, T.z)
|
||||
if(!istype(mine_turf, /turf/space/))
|
||||
if(mine_turf && mine_turf.has_resources)
|
||||
@@ -334,12 +360,23 @@
|
||||
desc = "A machinery brace for an industrial drill. It looks easily two feet thick."
|
||||
icon_state = "mining_brace"
|
||||
circuit = /obj/item/weapon/circuitboard/miningdrillbrace
|
||||
var/brace_tier = 1
|
||||
var/obj/machinery/mining/drill/connected
|
||||
|
||||
/obj/machinery/mining/brace/New()
|
||||
..()
|
||||
/obj/machinery/mining/brace/examine(mob/user)
|
||||
. = ..()
|
||||
if(brace_tier > 2)
|
||||
. += SPAN_NOTICE("The internals of the brace look resilient enough to support a drill by itself.")
|
||||
|
||||
component_parts = list()
|
||||
/obj/machinery/mining/brace/Initialize()
|
||||
. = ..()
|
||||
default_apply_parts()
|
||||
|
||||
/obj/machinery/mining/brace/RefreshParts()
|
||||
..()
|
||||
brace_tier = 0
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
|
||||
brace_tier += M.rating
|
||||
|
||||
/obj/machinery/mining/brace/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(connected && connected.active)
|
||||
@@ -350,6 +387,8 @@
|
||||
return
|
||||
if(default_deconstruction_crowbar(user, W))
|
||||
return
|
||||
if(default_part_replacement(user,W))
|
||||
return
|
||||
|
||||
if(W.is_wrench())
|
||||
|
||||
|
||||
@@ -237,6 +237,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/kinetic_crusher/machete
|
||||
// general purpose. cleaves though
|
||||
name = "proto-kinetic machete"
|
||||
desc = "A scaled down version of a proto-kinetic crusher, used by people who don't want to lug around an axe-hammer."
|
||||
icon_state = "glaive-machete"
|
||||
@@ -245,16 +246,15 @@
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_melee_vr.dmi',
|
||||
)
|
||||
item_state = "c-machete"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
attack_verb = list("cleaved", "chopped", "pulped", "stabbed", "skewered")
|
||||
force = 24
|
||||
can_cleave = TRUE
|
||||
requires_wield = FALSE
|
||||
// yeah yeah buff but polaris mobs are meatwalls.
|
||||
backstab_bonus = 40
|
||||
detonation_damage = 26
|
||||
// meme option
|
||||
thrown_bonus = 20
|
||||
force = 24
|
||||
detonation_damage = 36 // 60
|
||||
backstab_bonus = 40 // 100
|
||||
thrown_bonus = 20 // 120
|
||||
update_item_state = FALSE
|
||||
|
||||
|
||||
@@ -269,11 +269,11 @@
|
||||
attack_verb = list("bashed", "kicked", "punched", "struck", "axe kicked", "uppercut", "cross-punched", "jabbed", "hammerfisted", "roundhouse kicked")
|
||||
integ_light_icon = FALSE
|
||||
w_class = ITEMSIZE_HUGE
|
||||
force = 30
|
||||
can_cleave = FALSE
|
||||
requires_wield = TRUE
|
||||
backstab_bonus = 55
|
||||
detonation_damage = 35
|
||||
force = 28
|
||||
detonation_damage = 37 // 75
|
||||
backstab_bonus = 55 // 130
|
||||
var/obj/item/offhand/crushergauntlets/offhand
|
||||
|
||||
/obj/item/weapon/kinetic_crusher/machete/gauntlets/equipped()
|
||||
@@ -302,21 +302,29 @@
|
||||
var/mob/living/M = loc
|
||||
if(istype(M) && forced == 0)
|
||||
if(M.can_wield_item(src) && src.is_held_twohanded(M))
|
||||
name = initial(name)
|
||||
wielded = TRUE
|
||||
to_chat(M, "<span class ='notice'>You ready [src].</span>")
|
||||
var/obj/item/offhand/crushergauntlets/O = new(M)
|
||||
O.name = "[name] - readied"
|
||||
O.desc = "As much as you'd like to punch things with one hand, [src] is far too unwieldy for that."
|
||||
O.linked = src
|
||||
M.put_in_inactive_hand(O)
|
||||
offhand = O
|
||||
wield(M)
|
||||
else
|
||||
unwield(M)
|
||||
else
|
||||
name = "[initial(name)] (unreadied)"
|
||||
wielded = FALSE
|
||||
to_chat(M, "<span class ='notice'>You unready [src].</span>")
|
||||
if(offhand)
|
||||
QDEL_NULL(offhand)
|
||||
unwield(M)
|
||||
|
||||
/obj/item/weapon/kinetic_crusher/machete/gauntlets/proc/wield(var/mob/living/M)
|
||||
name = initial(name)
|
||||
wielded = TRUE
|
||||
to_chat(M, "<span class ='notice'>You ready [src].</span>")
|
||||
var/obj/item/offhand/crushergauntlets/O = new(M)
|
||||
O.name = "[name] - readied"
|
||||
O.desc = "As much as you'd like to punch things with one hand, [src] is far too unwieldy for that."
|
||||
O.linked = src
|
||||
M.put_in_inactive_hand(O)
|
||||
offhand = O
|
||||
|
||||
/obj/item/weapon/kinetic_crusher/machete/gauntlets/proc/unwield(var/mob/living/M)
|
||||
to_chat(M, "<span class ='notice'>You unready [src].</span>")
|
||||
name = "[initial(name)] (unreadied)"
|
||||
wielded = FALSE
|
||||
if(offhand)
|
||||
QDEL_NULL(offhand)
|
||||
|
||||
/obj/item/offhand
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
@@ -324,6 +332,7 @@
|
||||
name = "offhand that shouldn't exist doo dee doo"
|
||||
w_class = ITEMSIZE_NO_CONTAINER
|
||||
// var/linked - redefine this wherever
|
||||
// man i really should try porting the twohand component this is hacky and Sucks
|
||||
|
||||
/obj/item/offhand/crushergauntlets
|
||||
var/obj/item/weapon/kinetic_crusher/machete/gauntlets/linked
|
||||
@@ -333,7 +342,7 @@
|
||||
linked.ready_toggle(TRUE)
|
||||
|
||||
/obj/item/weapon/kinetic_crusher/machete/gauntlets/rig
|
||||
name = "mounted proto-kinetic gear"
|
||||
name = "\improper mounted proto-kinetic gear"
|
||||
var/obj/item/rig_module/gauntlets/storing_module
|
||||
|
||||
/obj/item/weapon/kinetic_crusher/machete/gauntlets/rig/dropped(mob/user)
|
||||
@@ -351,6 +360,7 @@
|
||||
else
|
||||
QDEL_NULL(src)
|
||||
|
||||
// gimmicky backup for throwing
|
||||
/obj/item/weapon/kinetic_crusher/machete/dagger
|
||||
name = "proto-kinetic dagger"
|
||||
desc = "A scaled down version of a proto-kinetic machete, usually used in a last ditch scenario."
|
||||
@@ -361,13 +371,14 @@
|
||||
)
|
||||
item_state = "c-knife"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
force = 15
|
||||
requires_wield = FALSE
|
||||
charge_overlay = FALSE
|
||||
backstab_bonus = 35
|
||||
detonation_damage = 25
|
||||
// woohoo
|
||||
thrown_bonus = 35
|
||||
charge_time = 10 // lowered charge in return for lowered damage
|
||||
force = 18
|
||||
detonation_damage = 27 // 45
|
||||
backstab_bonus = 40 // 85
|
||||
// gimmick mode
|
||||
thrown_bonus = 50 // 135 but you drop your knife because you threw it
|
||||
|
||||
|
||||
//destablizing force
|
||||
@@ -387,15 +398,18 @@
|
||||
hammer_synced = null
|
||||
return ..()
|
||||
|
||||
/obj/item/projectile/destabilizer/on_impact(var/atom/A)
|
||||
if(ismineralturf(A))
|
||||
var/turf/simulated/mineral/M = A
|
||||
new /obj/effect/temp_visual/kinetic_blast(M)
|
||||
M.GetDrilled(firer)
|
||||
. = ..()
|
||||
|
||||
/obj/item/projectile/destabilizer/on_hit(atom/target, blocked = FALSE)
|
||||
if(isliving(target))
|
||||
var/mob/living/L = target
|
||||
L.add_modifier(/datum/modifier/crusher_mark, 30 SECONDS, firer, TRUE)
|
||||
var/target_turf = get_turf(target)
|
||||
if(ismineralturf(target_turf))
|
||||
var/turf/simulated/mineral/M = target_turf
|
||||
new /obj/effect/temp_visual/kinetic_blast(M)
|
||||
M.GetDrilled(firer)
|
||||
if(hammer_synced.can_mark(L))
|
||||
L.add_modifier(/datum/modifier/crusher_mark, 30 SECONDS, firer, TRUE)
|
||||
..()
|
||||
|
||||
/*
|
||||
@@ -404,5 +418,6 @@
|
||||
there would be any if we had some
|
||||
but alas
|
||||
- hatterhat
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@@ -62,10 +62,8 @@
|
||||
var/stack = params["stack"]
|
||||
if(machine.stack_storage[stack] > 0)
|
||||
var/stacktype = machine.stack_paths[stack]
|
||||
var/obj/item/stack/material/S = new stacktype(get_turf(machine.output))
|
||||
S.amount = machine.stack_storage[stack]
|
||||
new stacktype(get_turf(machine.output), machine.stack_storage[stack])
|
||||
machine.stack_storage[stack] = 0
|
||||
S.update_icon()
|
||||
. = TRUE
|
||||
|
||||
add_fingerprint(usr)
|
||||
@@ -125,7 +123,7 @@
|
||||
var/obj/item/stack/material/S = O
|
||||
var/matname = S.material.name
|
||||
if(!isnull(stack_storage[matname]))
|
||||
stack_storage[matname] += S.amount
|
||||
stack_storage[matname] += S.get_amount()
|
||||
qdel(S)
|
||||
else
|
||||
O.loc = output.loc
|
||||
@@ -136,10 +134,8 @@
|
||||
for(var/sheet in stack_storage)
|
||||
if(stack_storage[sheet] >= stack_amt)
|
||||
var/stacktype = stack_paths[sheet]
|
||||
var/obj/item/stack/material/S = new stacktype (get_turf(output))
|
||||
S.amount = stack_amt
|
||||
new stacktype (get_turf(output), stack_amt)
|
||||
stack_storage[sheet] -= stack_amt
|
||||
S.update_icon()
|
||||
|
||||
if(console)
|
||||
console.updateUsrDialog()
|
||||
|
||||
@@ -625,8 +625,8 @@ var/list/mining_overlay_cache = list()
|
||||
if(prob(50))
|
||||
M.Stun(5)
|
||||
SSradiation.flat_radiate(src, 25, 100)
|
||||
if(prob(25))
|
||||
excavate_find(prob(5), finds[1])
|
||||
if(prob(25))
|
||||
excavate_find(prob(5), finds[1])
|
||||
else if(rand(1,500) == 1)
|
||||
visible_message("<span class='notice'>An old dusty crate was buried within!</span>")
|
||||
new /obj/structure/closet/crate/secure/loot(src)
|
||||
|
||||
@@ -14,6 +14,16 @@
|
||||
/turf/simulated/mineral/floor/ignore_cavegen
|
||||
ignore_cavegen = TRUE
|
||||
|
||||
/turf/simulated/mineral/ignore_cavegen/cave
|
||||
oxygen = MOLES_O2STANDARD
|
||||
nitrogen = MOLES_N2STANDARD
|
||||
temperature = T20C
|
||||
|
||||
/turf/simulated/mineral/floor/ignore_cavegen/cave
|
||||
oxygen = MOLES_O2STANDARD
|
||||
nitrogen = MOLES_N2STANDARD
|
||||
temperature = T20C
|
||||
|
||||
/turf/simulated/mineral/vacuum
|
||||
oxygen = 0
|
||||
nitrogen = 0
|
||||
|
||||
@@ -58,34 +58,33 @@
|
||||
for(var/ore in stored_ore)
|
||||
. += "- [stored_ore[ore]] [ore]"
|
||||
|
||||
/obj/structure/ore_box/verb/empty_box()
|
||||
set name = "Empty Ore Box"
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(!ishuman(usr) && !isrobot(usr)) //Only living, intelligent creatures with gripping aparatti can empty ore boxes.
|
||||
to_chat(usr, "<span class='warning'>You are physically incapable of emptying the ore box.</span>")
|
||||
return
|
||||
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
if(!Adjacent(usr)) //You can only empty the box if you can physically reach it
|
||||
to_chat(usr, "You cannot reach the ore box.")
|
||||
return
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
if(contents.len < 1)
|
||||
to_chat(usr, "<span class='warning'>The ore box is empty.</span>")
|
||||
return
|
||||
|
||||
for (var/obj/item/weapon/ore/O in contents)
|
||||
contents -= O
|
||||
O.loc = src.loc
|
||||
to_chat(usr, "<span class='notice'>You empty the ore box.</span>")
|
||||
|
||||
return
|
||||
// /obj/structure/ore_box/verb/empty_box()
|
||||
// set name = "Empty Ore Box"
|
||||
// set category = "Object"
|
||||
// set src in view(1)
|
||||
//
|
||||
// if(!ishuman(usr) && !isrobot(usr)) //Only living, intelligent creatures with gripping aparatti can empty ore boxes.
|
||||
// to_chat(usr, "<span class='warning'>You are physically incapable of emptying the ore box.</span>")
|
||||
// return
|
||||
// if(usr.stat || usr.restrained())
|
||||
// return
|
||||
//
|
||||
// if(!Adjacent(usr)) //You can only empty the box if you can physically reach it
|
||||
// to_chat(usr, "You cannot reach the ore box.")
|
||||
// return
|
||||
//
|
||||
// add_fingerprint(usr)
|
||||
//
|
||||
// if(contents.len < 1)
|
||||
// to_chat(usr, "<span class='warning'>The ore box is empty.</span>")
|
||||
// return
|
||||
//
|
||||
// for (var/obj/item/weapon/ore/O in contents)
|
||||
// contents -= O
|
||||
// O.loc = src.loc
|
||||
// to_chat(usr, "<span class='notice'>You empty the ore box.</span>")
|
||||
//
|
||||
// return
|
||||
|
||||
/obj/structure/ore_box/ex_act(severity)
|
||||
if(severity == 1.0 || (severity < 3.0 && prob(50)))
|
||||
|
||||
@@ -120,13 +120,16 @@
|
||||
EQUIPMENT("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 900),
|
||||
EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000),
|
||||
EQUIPMENT("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
|
||||
EQUIPMENT("KA Efficiency Increase", /obj/item/borg/upgrade/modkit/efficiency, 1200),
|
||||
EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1200),
|
||||
EQUIPMENT("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
|
||||
EQUIPMENT("KA Temperature Modulator", /obj/item/borg/upgrade/modkit/heater, 1000),
|
||||
EQUIPMENT("KA Off-Station Modulator", /obj/item/borg/upgrade/modkit/offsite, 1750),
|
||||
EQUIPMENT("KA Holster", /obj/item/clothing/accessory/holster/waist/kinetic_accelerator, 350),
|
||||
EQUIPMENT("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
|
||||
EQUIPMENT("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
|
||||
EQUIPMENT("KA Adjustable Tracer Rounds",/obj/item/borg/upgrade/modkit/tracer/adjustable, 175),
|
||||
EQUIPMENT("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 125),
|
||||
EQUIPMENT("Premium Kinetic Accelerator",/obj/item/weapon/gun/energy/kinetic_accelerator/premiumka, 12000),
|
||||
)
|
||||
prize_list["Digging Tools"] = list(
|
||||
// EQUIPMENT("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000),
|
||||
@@ -164,6 +167,7 @@
|
||||
EQUIPMENT("Plush Toy", /obj/random/plushie, 300),
|
||||
EQUIPMENT("Soap", /obj/item/weapon/soap/nanotrasen, 200),
|
||||
EQUIPMENT("Thalers - 100", /obj/item/weapon/spacecash/c100, 1000),
|
||||
EQUIPMENT("Thalers - 1000", /obj/item/weapon/spacecash/c1000, 10000),
|
||||
EQUIPMENT("Umbrella", /obj/item/weapon/melee/umbrella/random, 200),
|
||||
EQUIPMENT("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 125),
|
||||
)
|
||||
@@ -283,7 +287,10 @@
|
||||
return
|
||||
|
||||
remove_points(inserted_id, prize.cost)
|
||||
new prize.equipment_path(loc)
|
||||
//VOREStation Edit Start
|
||||
var/obj/I = new prize.equipment_path(loc)
|
||||
I.persist_storable = FALSE
|
||||
//VOREStation Edit End
|
||||
flick(icon_vend, src) //VOREStation Add
|
||||
else
|
||||
flick(icon_deny, src) //VOREStation Add
|
||||
|
||||
@@ -65,6 +65,8 @@
|
||||
EQUIPMENT("GPS Device", /obj/item/device/gps/mining, 10),
|
||||
EQUIPMENT("Jump Boots", /obj/item/clothing/shoes/bhop, 250),
|
||||
EQUIPMENT("Mini-Translocator", /obj/item/device/perfect_tele/one_beacon, 120),
|
||||
EQUIPMENT("Survey Tools - Mapping Unit", /obj/item/device/mapping_unit, 150),
|
||||
EQUIPMENT("Survey Tools - Mapping Beacon", /obj/item/device/holomap_beacon, 25),
|
||||
EQUIPMENT("Survival Equipment - Insulated Poncho", /obj/random/thermalponcho, 75),
|
||||
EQUIPMENT("Survival Equipment - Glowstick", /obj/item/device/flashlight/glowstick, 5),
|
||||
EQUIPMENT("Survival Equipment - Flare", /obj/item/device/flashlight/flare, 5),
|
||||
|
||||
Reference in New Issue
Block a user