Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rare Ruko mining buff spotted! #11413

Merged
merged 10 commits into from
Sep 2, 2024
4 changes: 0 additions & 4 deletions code/game/turfs/closed/minerals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -521,10 +521,6 @@
var/activated_name = null
var/mutable_appearance/activated_overlay

/turf/closed/mineral/gibtonite/Initialize(mapload)
det_time = rand(8,10) //So you don't know exactly when the hot potato will explode
. = ..()

/turf/closed/mineral/gibtonite/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/mining_scanner) || istype(I, /obj/item/t_scanner/adv_mining_scanner) && stage == 1)
user.visible_message("<span class='notice'>[user] holds [I] to [src]...</span>", "<span class='notice'>You use [I] to locate where to cut off the chain reaction and attempt to stop it...</span>")
Expand Down
41 changes: 40 additions & 1 deletion code/modules/mining/lavaland/necropolis_chests.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
/obj/structure/closet/crate/necropolis/tendril/try_spawn_loot(datum/source, obj/item/item, mob/user, params) ///proc that handles key checking and generating loot - MAY REPLACE WITH pick_weight(loot)
var/static/list/necropolis_goodies = list( //weights to be defined later on, for now they're all the same
/obj/item/clothing/glasses/godeye = 5,
/obj/item/pickaxe/diamond = 5,
/obj/item/clothing/gloves/concussive_gauntlets = 5,
/obj/item/rod_of_asclepius = 5,
/obj/item/organ/heart/cursed/wizard = 5,
/obj/item/ship_in_a_bottle = 5,
Expand Down Expand Up @@ -666,6 +666,45 @@
name = "jacob's ladder"
desc = "An indestructible celestial ladder that violates the laws of physics."

/obj/item/clothing/gloves/concussive_gauntlets
name = "concussive gauntlets"
desc = "Pickaxes... for your hands!"
icon_state = "concussive_gauntlets"
worn_icon_state = "concussive_gauntlets"
item_state = "combatgloves"
toolspeed = 0.1 //Sonic jackhammer, but only works on minerals.
strip_delay = 40
equip_delay_other = 20
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = LAVA_PROOF | FIRE_PROOF //they are from lavaland after all
armor = list(MELEE = 15, BULLET = 35, LASER = 35, ENERGY = 20, BOMB = 35, BIO = 35, RAD = 35, FIRE = 0, ACID = 0, STAMINA = 20, BLEED = 20) //Equivalent to bone bracers. Not bad.

/obj/item/clothing/gloves/concussive_gauntlets/equipped(mob/user, slot)
. = ..()
if(slot == ITEM_SLOT_GLOVES)
tool_behaviour = TOOL_MINING
RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(rocksmash))
RegisterSignal(user, COMSIG_MOVABLE_BUMP, PROC_REF(rocksmash))
else
stopmining(user)

/obj/item/clothing/gloves/concussive_gauntlets/dropped(mob/user)
. = ..()
stopmining(user)

/obj/item/clothing/gloves/concussive_gauntlets/proc/stopmining(mob/user)
tool_behaviour = initial(tool_behaviour)
UnregisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK)
UnregisterSignal(user, COMSIG_MOVABLE_BUMP)

/obj/item/clothing/gloves/concussive_gauntlets/proc/rocksmash(mob/living/carbon/human/user, atom/rocks, proximity)
if(!ismineralturf(rocks))
return
rocks.attackby(src, user)

///Bosses

//Legion
Expand Down
1 change: 0 additions & 1 deletion code/modules/mining/machine_vending.dm
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,6 @@
new /datum/data/vendor_equipment("Mining Bot Companion", /mob/living/simple_animal/hostile/mining_drone, 800),
new /datum/data/vendor_equipment("Minebot Upgrade: Armor", /obj/item/minebot_upgrade/health, 400),
new /datum/data/vendor_equipment("Minebot Upgrade: Ore Scoop", /obj/item/minebot_upgrade/ore_pickup, 400),
new /datum/data/vendor_equipment("Minebot Upgrade: Cooldown", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600),
new /datum/data/vendor_equipment("Minebot Upgrade: Medical", /obj/item/minebot_upgrade/medical, 800),
new /datum/data/vendor_equipment("Minebot Upgrade: A.I.", /obj/item/slimepotion/slime/sentience/mining, 1000),
new /datum/data/vendor_equipment("Minebot Weatherproof Chassis",/obj/item/minebot_upgrade/antiweather, 1200),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,14 +307,26 @@ While using this makes the system rely on OnFire, it still gives options for tim
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 5
var/using = FALSE

/obj/item/tumor_shard/afterattack(atom/target, mob/user, proximity_flag)
. = ..()
if(istype(target, /mob/living/simple_animal/hostile/asteroid/elite) && proximity_flag)
var/mob/living/simple_animal/hostile/asteroid/elite/E = target
if(E.stat != DEAD || E.sentience_type != SENTIENCE_BOSS || !E.key)
user.visible_message("<span class='notice'>It appears [E] is unable to be revived right now. Perhaps try again later.</span>")
if(E.stat != DEAD || E.sentience_type != SENTIENCE_BOSS)
user.visible_message("<span class='notice'>[E] does not respond to [src].</span>")
return
if(!E.key && !using)
using = TRUE //No ghost poll spam please.
user.visible_message("<span class='notice'>[E] stirs briefly...</span>")
var/list/candidates = poll_candidates_for_mob("Do you want to take over as [E] (Lavaland Elite), silent servant of [user]?", ROLE_SENTIENCE, null, 15 SECONDS, E)
if(length(candidates))
var/mob/dead/observer/C = pick(candidates)
E.key = C.key
else
user.visible_message("<span class='notice'>It appears [E] is unable to be revived right now. Perhaps try again later.</span>")
using = FALSE
return
E.faction = list("neutral")
E.revive(full_heal = TRUE, admin_revive = TRUE)
user.visible_message("<span class='notice'>[user] stabs [E] with [src], reviving it.</span>")
Expand Down
102 changes: 42 additions & 60 deletions code/modules/projectiles/guns/energy/kinetic_accelerator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -238,12 +238,14 @@
require_module = 1
module_type = list(/obj/item/robot_module/miner)
module_flags = BORG_MODULE_MINER
var/denied_type = null
///Should be the type path of mods in the same group
var/restricted_mod_type = null
///Only used if restricted_mod_type is defined. How many mods of this type are allowed?
var/maximum_of_type = 1
var/cost = 30
var/modifier = 1 //For use in any mod kit that has numerical modifiers
var/minebot_upgrade = TRUE
var/minebot_exclusive = FALSE
///How much mod capacity, out of 100, does this mod use
var/cost = 25
///Will vary based on individual mod logic. Dictates the power of the mod.
var/modifier = 1

/obj/item/borg/upgrade/modkit/examine(mob/user)
. = ..()
Expand All @@ -263,20 +265,13 @@

/obj/item/borg/upgrade/modkit/proc/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = TRUE
if(minebot_upgrade)
if(minebot_exclusive && !istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone))
to_chat(user, "<span class='notice'>The modkit you're trying to install is only rated for minebot use.</span>")
return FALSE
else if(istype(KA.loc, /mob/living/simple_animal/hostile/mining_drone))
to_chat(user, "<span class='notice'>The modkit you're trying to install is not rated for minebot use.</span>")
return FALSE
if(denied_type)
var/number_of_denied = 0
if(restricted_mod_type)
var/restricted_mod_count = 0
for(var/A in KA.get_modkits())
var/obj/item/borg/upgrade/modkit/M = A
if(istype(M, denied_type))
number_of_denied++
if(number_of_denied >= maximum_of_type)
if(istype(M, restricted_mod_type))
restricted_mod_count++
if(restricted_mod_count >= maximum_of_type)
. = FALSE
break
if(KA.get_remaining_mod_capacity() >= cost)
Expand All @@ -287,7 +282,7 @@
playsound(loc, 'sound/items/screwdriver.ogg', 100, 1)
KA.modkits += src
else
to_chat(user, "<span class='notice'>The modkit you're trying to install would conflict with an already installed modkit. Use a crowbar to remove existing modkits.</span>")
to_chat(user, "<span class='notice'>You cannot install any more mods of this type. Remove mods with a crowbar and check their compatibility.</span>")
else
to_chat(user, "<span class='notice'>You don't have room(<b>[KA.get_remaining_mod_capacity()]%</b> remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits.</span>")
. = FALSE
Expand Down Expand Up @@ -318,7 +313,6 @@
name = "range increase"
desc = "Increases the range of a kinetic accelerator when installed."
modifier = 1
cost = 25

/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/projectile/kinetic/K)
K.range += modifier
Expand All @@ -328,7 +322,7 @@
/obj/item/borg/upgrade/modkit/damage
name = "damage increase"
desc = "Increases the damage of kinetic accelerator when installed."
modifier = 10
modifier = 5

/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/projectile/kinetic/K)
K.damage += modifier
Expand All @@ -337,9 +331,9 @@
//Cooldown
/obj/item/borg/upgrade/modkit/cooldown
name = "cooldown decrease"
desc = "Decreases the cooldown of a kinetic accelerator. Not rated for minebot use."
desc = "Decreases the cooldown of a kinetic accelerator. Incompatible with rapid repeater mods."
modifier = 3.2
minebot_upgrade = FALSE
restricted_mod_type = /obj/item/borg/upgrade/modkit/cooldown/repeater

/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = ..()
Expand All @@ -350,23 +344,14 @@
KA.overheat_time += modifier
..()

/obj/item/borg/upgrade/modkit/cooldown/minebot
name = "minebot cooldown decrease"
desc = "Decreases the cooldown of a kinetic accelerator. Only rated for minebot use."
icon_state = "door_electronics"
icon = 'icons/obj/module.dmi'
denied_type = /obj/item/borg/upgrade/modkit/cooldown/minebot
modifier = 5
cost = 0
minebot_upgrade = TRUE
minebot_exclusive = TRUE


//AoE blasts
/obj/item/borg/upgrade/modkit/aoe
modifier = 0
var/turf_aoe = FALSE
var/stats_stolen = FALSE
restricted_mod_type = /obj/item/borg/upgrade/modkit/aoe
maximum_of_type = 2

/obj/item/borg/upgrade/modkit/aoe/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = ..()
Expand Down Expand Up @@ -404,32 +389,32 @@

/obj/item/borg/upgrade/modkit/aoe/turfs
name = "mining explosion"
desc = "Causes the kinetic accelerator to destroy rock in an AoE."
denied_type = /obj/item/borg/upgrade/modkit/aoe/turfs
desc = "Causes the kinetic accelerator to destroy rock in an AoE. Only two AoE mods may be installed."
turf_aoe = TRUE

/obj/item/borg/upgrade/modkit/aoe/turfs/andmobs
name = "offensive mining explosion"
desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE."
maximum_of_type = 3
modifier = 0.25
desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE. Only two AoE mods may be installed."
maximum_of_type = 2
modifier = 0.40

/obj/item/borg/upgrade/modkit/aoe/mobs
name = "offensive explosion"
desc = "Causes the kinetic accelerator to damage mobs in an AoE."
modifier = 0.2
desc = "Causes the kinetic accelerator to damage mobs in an AoE. Only two AoE mods may be installed."
maximum_of_type = 2
modifier = 0.40

//Minebot passthrough
/obj/item/borg/upgrade/modkit/minebot_passthrough
name = "minebot passthrough"
desc = "Causes kinetic accelerator shots to pass through minebots."
desc = "Causes kinetic accelerator shots to pass through minebots. Only one may be installed."
restricted_mod_type = /obj/item/borg/upgrade/modkit/minebot_passthrough
cost = 0

//Tendril-unique modules
/obj/item/borg/upgrade/modkit/cooldown/repeater
name = "rapid repeater"
desc = "Quarters the kinetic accelerator's cooldown on striking a living target, but greatly increases the base cooldown."
denied_type = /obj/item/borg/upgrade/modkit/cooldown/repeater
desc = "Quarters the kinetic accelerator's cooldown on striking a living target, but greatly increases the base cooldown. Not compatible with any other cooldown mods."
restricted_mod_type = /obj/item/borg/upgrade/modkit/cooldown
modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss.
cost = 50

Expand All @@ -450,7 +435,7 @@
desc = "Causes kinetic accelerator shots to slightly heal the firer on striking a living target."
icon_state = "modkit_crystal"
modifier = 2.5 //Not a very effective method of healing.
cost = 10
cost = 0 //Obtained only from chests in limited quantities
var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)

/obj/item/borg/upgrade/modkit/lifesteal/projectile_prehit(obj/projectile/kinetic/K, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
Expand All @@ -463,9 +448,8 @@

/obj/item/borg/upgrade/modkit/resonator_blasts
name = "resonator blast"
desc = "Causes kinetic accelerator shots to leave and detonate resonator blasts."
denied_type = /obj/item/borg/upgrade/modkit/resonator_blasts
cost = 30
desc = "Causes kinetic accelerator shots to leave and detonate resonator blasts. Only one may be installed."
restricted_mod_type = /obj/item/borg/upgrade/modkit/resonator_blasts
modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it.

/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/kinetic_accelerator/KA)
Expand All @@ -479,10 +463,9 @@

/obj/item/borg/upgrade/modkit/bounty
name = "death syphon"
desc = "Killing or assisting in killing a creature permanently increases your damage against that type of creature."
denied_type = /obj/item/borg/upgrade/modkit/bounty
desc = "Killing or assisting in killing a creature permanently increases your damage against that type of creature. Only one may be installed."
restricted_mod_type = /obj/item/borg/upgrade/modkit/bounty
modifier = 1.25
cost = 30
var/maximum_bounty = 25
var/list/bounties_reaped = list()

Expand Down Expand Up @@ -521,9 +504,8 @@
name = "decrease pressure penalty"
desc = "A syndicate modification kit that increases the damage a kinetic accelerator does in high pressure environments."
modifier = 2
denied_type = /obj/item/borg/upgrade/modkit/indoors
maximum_of_type = 1
cost = 35
restricted_mod_type = /obj/item/borg/upgrade/modkit/indoors
cost = 50

/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/projectile/kinetic/K)
K.pressure_decrease *= modifier
Expand All @@ -532,9 +514,9 @@
//Trigger Guard
/obj/item/borg/upgrade/modkit/trigger_guard
name = "modified trigger guard"
desc = "Allows creatures normally incapable of firing guns to operate the weapon when installed."
cost = 20
denied_type = /obj/item/borg/upgrade/modkit/trigger_guard
desc = "Allows creatures normally incapable of firing guns to operate the weapon when installed. Only one may be installed."
cost = 0
restricted_mod_type = /obj/item/borg/upgrade/modkit/trigger_guard

/obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user)
. = ..()
Expand All @@ -552,7 +534,7 @@
name = "super chassis"
desc = "Makes your KA yellow. All the fun of having a more powerful KA without actually having a more powerful KA."
cost = 0
denied_type = /obj/item/borg/upgrade/modkit/chassis_mod
restricted_mod_type = /obj/item/borg/upgrade/modkit/chassis_mod
var/chassis_icon = "kineticgun_u"
var/chassis_name = "super-kinetic accelerator"

Expand All @@ -575,9 +557,9 @@

/obj/item/borg/upgrade/modkit/tracer
name = "white tracer bolts"
desc = "Causes kinetic accelerator bolts to have a white tracer trail and explosion."
desc = "Causes kinetic accelerator bolts to have a white tracer trail and explosion. Only one may be installed."
cost = 0
denied_type = /obj/item/borg/upgrade/modkit/tracer
restricted_mod_type = /obj/item/borg/upgrade/modkit/tracer
var/bolt_color = "#FFFFFF"

/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/projectile/kinetic/K)
Expand Down
Binary file modified icons/mob/clothing/hands.dmi
Binary file not shown.
Binary file modified icons/obj/clothing/gloves.dmi
Binary file not shown.
Loading