Mining update (#30)

* smol mining update

* Revert "smol mining update"

This reverts commit 9a0bd466ff.

* the .wav files i will use

* the rest that is being added for now

* fixes your stuff

* makes the crusher purchasable

* fixes legion's trophy

* so many icons and oggs

* SIF and more icons

* even more icons, sorry

* new modkits, yay

* oh come on, it didn't update

* some bosses seen to be ready

* Glory Kill system, should work just fine

* even more icons, jeez, also, elite mods

* oh hey, i got the icon

* almost done

* icons and meme dragon

* it's icon was hidden and i didn't notice

* why do i hear boss music ?

* one day...

* while Nano was...

* not continuing that

* stole some compatibility stuff

* the end is near

* some stuff to make stuff work

* probably one of the last commits

* king goat itself

* THE ERRORS, THEY'RE EVERYWHERE

* so close...

* the new ruins should spawn now

* should be the last commit, let's test it

* Now The Gladiator actually exists

* make them mad, and toggle their music

* oh, wait, need to give you the new files

* i think i saved someone's ears

* missing areas, i'm sorry

* good luck fighting KG without a ladder

* just leave a comment, nothing else

* fixes double spawn at least for hiero, aka why the fuck make two of the same proc and not remove 1st

* invisible hat, not anymore

* takes some stuff before bob even merges it on theirs

* how did these icons disappear ?

* fixes some oopsies

* sand plz help

* *fixes your thing*

* and i think i fixed the other

* fixes

* no async needed

* im done, just merge this useless thing

Co-authored-by: crazyraio2 <44246096+crazyraio2@users.noreply.github.com>
This commit is contained in:
Enric Gabriel
2020-07-25 20:04:07 -03:00
committed by GitHub
co-authored by crazyraio2
parent fd16319e61
commit d312fbc4db
171 changed files with 9833 additions and 259 deletions
@@ -0,0 +1,462 @@
//kinetic destroyer (premium crusher)
/obj/item/kinetic_crusher/premiumcrusher
icon = 'sandcode/icons/obj/mining.dmi'
lefthand_file = 'sandcode/icons/mob/inhands/weapons/hammerspc_lefthand.dmi'
righthand_file = 'sandcode/icons/mob/inhands/weapons/hammerspc_righthand.dmi'
name = "Kinetic Destroyer"
desc = "Revised and refined by veteran miners, this crusher design has been improved in nearly everyway. Featuring a lightweight composite body and a hardened plastitanium head, this weapon is exceptional at removing life from most things."
hitsound = 'sound/weapons/bladeslice.ogg'
armour_penetration = 15
detonation_damage = 60
backstab_bonus = 40
//legion (the big one!)
/obj/item/crusher_trophy/golden_skull
name = "golden legion skull"
desc = "Nope, it's not the crystal one, but still valuable. Suitable as a trophy for a kinetic crusher."
icon = 'sandcode/icons/obj/lavaland/artefacts.dmi'
icon_state = "goldenskull"
denied_type = /obj/item/crusher_trophy/golden_skull
/obj/item/crusher_trophy/golden_skull/effect_desc()
return "a kinetic crusher to make dead animals into friendly fauna, as well as turning corpses into legions, if the user is on grab intent"
/obj/item/crusher_trophy/golden_skull/on_mark_detonation(mob/living/target, mob/living/user)
if(target.stat == DEAD)
if(istype(target, /mob/living/simple_animal/hostile/asteroid) && user.a_intent == INTENT_GRAB)
var/mob/living/simple_animal/hostile/asteroid/L = target
L.revive(full_heal = 1, admin_revive = 1)
L.attack_same = 0
L.loot = null
L.crusher_loot = null
L.faction = user.faction.Copy()
user.visible_message("<span class='notice'>[user] revives [target] with [src], as a friendly fauna</span>")
playsound(src,'sound/effects/supermatter.ogg',50,1)
/obj/item/crusher_trophy/golden_skull/on_melee_hit(mob/living/target, mob/living/user)
var/obj/item/kinetic_crusher/K = loc
var/is_wielded = TRUE
if(istype(K))
var/datum/component/two_handed/TH = K.GetComponent(/datum/component/two_handed)
is_wielded = TH.wielded
else
user.is_holding_item_of_type(/obj/item/melee/zweihander)
if(ishuman(target) && (target.stat == DEAD) && (is_wielded) && user.a_intent == INTENT_GRAB)
var/confirm = input("Are you sure you want to turn [target] into a friendly legion?", "Legionification") in list("Yes", "No")
if(confirm == "Yes")
var/mob/living/carbon/human/H = target
var/mob/living/simple_animal/hostile/asteroid/hivelord/legion/L = new /mob/living/simple_animal/hostile/asteroid/hivelord/legion(H.loc)
L.stored_mob = H
H.forceMove(L)
L.faction = user.faction.Copy()
L.revive(full_heal = 1, admin_revive = 1)
L.attack_same = 0
L.loot = null
L.crusher_loot = null
user.visible_message("<span class='notice'>[user] revives [target] with [src], as a friendly legion.</span>")
playsound(src,'sound/effects/supermatter.ogg',50,1)
else
(to_chat(user, "<span class='notice'>You cancel turning [target] into a legion.</span>"))
//rogue process
/obj/item/crusher_trophy/brokentech
name = "broken AI"
desc = "It used to control a mecha, now it's just trash. Suitable as a trophy for a kinetic crusher."
denied_type = /obj/item/crusher_trophy/brokentech
icon = 'icons/obj/aicards.dmi'
icon_state = "pai"
var/range = 4
var/cooldowntime = 50
var/cooldown = 0
/obj/item/crusher_trophy/brokentech/effect_desc()
return "your kinetic crusher to create shockwaves when fired."
/obj/item/crusher_trophy/brokentech/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
. = ..()
if(cooldowntime < world.time)
INVOKE_ASYNC(src, .proc/invokesmoke, user)
/obj/item/crusher_trophy/brokentech/proc/invokesmoke(mob/living/user)
cooldown = world.time + cooldowntime
var/list/hit_things = list()
var/turf/T = get_turf(get_step(user, user.dir))
var/ogdir = user.dir
for(var/i = 0, i < src.range, i++)
new /obj/effect/temp_visual/small_smoke/halfsecond(T)
for(var/mob/living/L in T.contents)
if(L != user && !(L in hit_things) && !ishuman(L))
if(!faction_check(user.faction, L.faction))
if(prob(25))
L.Stun(10)
L.apply_damage_type(20, BRUTE)
if(ismineralturf(T))
var/turf/closed/mineral/M = T
M.gets_drilled(user)
T = get_step(T, ogdir)
sleep(2)
//shambling miner
/obj/item/crusher_trophy/blaster_tubes/mask
name = "mask of a shambling miner"
desc = "It really doesn't seem like it could be worn. Suitable as a crusher trophy."
icon = 'sandcode/icons/obj/lavaland/artefacts.dmi'
icon_state = "miner_mask"
bonus_value = 10
denied_type = /obj/item/crusher_trophy/blaster_tubes/mask
/obj/item/crusher_trophy/blaster_tubes/mask/effect_desc()
return "the crusher to deal <b>[bonus_value]</b> extra melee damage"
/obj/item/crusher_trophy/blaster_tubes/mask/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
if(deadly_shot)
marker.name = "kinetic [marker.name]"
marker.icon_state = "ka_tracer"
marker.damage = bonus_value
marker.nodamage = FALSE
deadly_shot = FALSE
/obj/item/crusher_trophy/blaster_tubes/mask/on_mark_application(mob/living/target, datum/status_effect/crusher_mark/mark, had_mark)
new /obj/effect/temp_visual/kinetic_blast(target)
playsound(target.loc, 'sound/weapons/kenetic_accel.ogg', 60, 0)
/obj/item/crusher_trophy/blaster_tubes/mask/add_to(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
H.force += bonus_value
/obj/item/crusher_trophy/blaster_tubes/mask/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
H.force -= bonus_value
//lava imp
/obj/item/crusher_trophy/blaster_tubes/impskull
name = "imp skull"
desc = "Somebody got glory killed. Suitable as a trophy."
icon = 'sandcode/icons/obj/lavaland/artefacts.dmi'
icon_state = "impskull"
bonus_value = 5
denied_type = /obj/item/crusher_trophy/blaster_tubes/impskull
/obj/item/crusher_trophy/blaster_tubes/impskull/effect_desc()
return "causes every marker to deal <b>[bonus_value]</b> damage."
/obj/item/crusher_trophy/blaster_tubes/impskull/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
marker.name = "fiery [marker.name]"
marker.icon_state = "fireball"
marker.damage = bonus_value
marker.nodamage = FALSE
playsound(user.loc, 'sandcode/sound/misc/impranged.wav', 50, 0)
//traitor crusher
/obj/item/projectile/destabilizer/harm
name = "harmful destabilzing force"
range = 10
/obj/item/projectile/destabilizer/harm/on_hit(atom/target, blocked = FALSE)
if(isliving(target))
var/mob/living/L = target
var/had_effect = (L.has_status_effect(STATUS_EFFECT_CRUSHERMARK_HARM)) //used as a boolean
var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK_HARM, hammer_synced)
if(hammer_synced)
for(var/t in hammer_synced.trophies)
var/obj/item/crusher_trophy/T = t
T.on_mark_application(target, CM, had_effect)
var/target_turf = get_turf(target)
if(ismineralturf(target_turf))
var/turf/closed/mineral/M = target_turf
new /obj/effect/temp_visual/kinetic_blast(M)
M.gets_drilled(firer)
..()
/obj/item/kinetic_crusher/harm
desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \
While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna. Something's very odd about this one, however..."
/obj/item/kinetic_crusher/harm/afterattack(atom/target, mob/living/user, proximity_flag, clickparams)
if(istype(target, /obj/item/crusher_trophy))
var/obj/item/crusher_trophy/T = target
T.add_to(src, user)
if(!wielded)
return
if(!proximity_flag && charged)//Mark a target, or mine a tile.
var/turf/proj_turf = user.loc
if(!isturf(proj_turf))
return
var/obj/item/projectile/destabilizer/harm/D = new /obj/item/projectile/destabilizer/harm(proj_turf)
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.on_projectile_fire(D, user)
D.preparePixelProjectile(target, user, clickparams)
D.firer = user
D.hammer_synced = src
playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1)
D.fire()
charged = FALSE
update_icon()
addtimer(CALLBACK(src, .proc/Recharge), charge_time)
return
if(proximity_flag && isliving(target))
var/mob/living/L = target
var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK_HARM)
if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK_HARM))
return
var/datum/status_effect/crusher_damage/C = L.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
var/target_health = L.health
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.on_mark_detonation(target, user)
if(!QDELETED(L))
if(!QDELETED(C))
C.total_damage += target_health - L.health //we did some damage, but let's not assume how much we did
new /obj/effect/temp_visual/kinetic_blast(get_turf(L))
var/backstab_dir = get_dir(user, L)
var/def_check = L.getarmor(type = "bomb")
if((user.dir & backstab_dir) && (L.dir & backstab_dir))
if(!QDELETED(C))
C.total_damage += detonation_damage + backstab_bonus //cheat a little and add the total before killing it, so certain mobs don't have much lower chances of giving an item
L.apply_damage(detonation_damage + backstab_bonus, BRUTE, blocked = def_check)
playsound(user, 'sound/weapons/kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong
else
if(!QDELETED(C))
C.total_damage += detonation_damage
L.apply_damage(detonation_damage, BRUTE, blocked = def_check)
if(user && lavaland_equipment_pressure_check(get_turf(user))) //CIT CHANGE - makes sure below only happens in low pressure environments
user.adjustStaminaLoss(-30)//CIT CHANGE - makes crushers heal stamina
SEND_SIGNAL(src, COMSIG_ITEM_AFTERATTACK, target, user, proximity_flag, clickparams)
SEND_SIGNAL(user, COMSIG_MOB_ITEM_AFTERATTACK, target, user, proximity_flag, clickparams)
//king goat
/obj/item/crusher_trophy/king_goat
name = "king goat hoof"
desc = "A hoof from the king of all goats, it still glows with a fraction of its original power... Suitable as a trophy for a kinetic crusher."
icon = 'sandcode/icons/obj/lavaland/artefacts.dmi'
icon_state = "goat_hoof" //needs a better sprite but I cant sprite .
denied_type = /obj/item/crusher_trophy/king_goat
/obj/item/crusher_trophy/king_goat/effect_desc()
return "you also passively recharge markers 5x as fast while equipped and do a decent amount of damage at the cost of dulling the blade"
/obj/item/crusher_trophy/king_goat/on_projectile_fire(obj/item/projectile/destabilizer/marker, mob/living/user)
marker.damage = 10 //in my testing only does damage to simple mobs so should be fine to have it high
/obj/item/crusher_trophy/king_goat/add_to(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
var/datum/component/two_handed/TH = H.GetComponent(/datum/component/two_handed)
H.charge_time -= 12
TH.force_wielded -= 15
/obj/item/crusher_trophy/king_goat/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
var/datum/component/two_handed/TH = H.GetComponent(/datum/component/two_handed)
H.charge_time += 15
TH.force_wielded += 12
//hierophant crusher small changes
/obj/item/crusher_trophy/vortex_talisman
var/cdmultiplier = 1.25
/obj/item/crusher_trophy/vortex_talisman/on_mark_detonation(mob/living/target, mob/living/user)
if(vortex_cd >= world.time)
return
var/turf/T = get_turf(user)
var/obj/effect/temp_visual/hierophant/wall/crusher/wall = new /obj/effect/temp_visual/hierophant/wall/crusher(T, user) //a wall only you can pass!
var/turf/otherT = get_step(T, turn(user.dir, 90))
if(otherT)
new /obj/effect/temp_visual/hierophant/wall/crusher(otherT, user)
otherT = get_step(T, turn(user.dir, -90))
if(otherT)
new /obj/effect/temp_visual/hierophant/wall/crusher(otherT, user)
vortex_cd = world.time + (wall.duration * cdmultiplier)
//gladiator
/obj/item/crusher_trophy/gladiator
name = "gladiator's horn"
desc = "The remaining horn of the Gladiator. Suitable as a crusher trophy."
icon = 'sandcode/icons/obj/lavaland/artefacts.dmi'
icon_state = "horn"
bonus_value = 15
denied_type = /obj/item/crusher_trophy/gladiator
/obj/item/crusher_trophy/gladiator/effect_desc()
return "the crusher to have a <b>[bonus_value]%</b> chance to block any incoming attack."
/obj/item/crusher_trophy/gladiator/add_to(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.block_chance += bonus_value
/obj/item/crusher_trophy/gladiator/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
. = ..()
if(.)
H.block_chance -= bonus_value
//gladiator zweihander - it's just a one handed crusher
/obj/item/melee/zweihander
icon = 'sandcode/icons/obj/lavaland/artefacts.dmi'
icon_state = "zweihander"
item_state = "zweihander"
resistance_flags = FIRE_PROOF | UNACIDABLE | INDESTRUCTIBLE
lefthand_file = 'sandcode/icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'sandcode/icons/mob/inhands/weapons/swords_righthand.dmi'
name = "Zweihander"
desc = "A surprisingly tough sword, made out of drake hide and bone. Somehow, despite it's large size, it's easy to carry one handed."
force = 15
w_class = WEIGHT_CLASS_BULKY
throwforce = 15
throw_speed = 4
armour_penetration = 20
custom_materials = list(/datum/material/titanium=3150, /datum/material/glass=2075, /datum/material/gold=3000, /datum/material/diamond=5000)
hitsound = 'sandcode/sound/weapons/zweihanderslice.ogg'
attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped")
sharpness = IS_SHARP
var/list/trophies = list()
var/charged = TRUE
var/charge_time = 12
var/detonation_damage = 65
var/backstab_bonus = 40
var/brightness = 7
/obj/item/melee/zweihander/Initialize()
. = ..()
AddComponent(/datum/component/butchering, 80, 110)
set_light(brightness)
/obj/item/melee/zweihander/Destroy()
QDEL_LIST(trophies)
return ..()
/obj/item/melee/zweihander/examine(mob/living/user)
. = ..()
. += "<span class='notice'>Mark a large creature with the destabilizing force, then hit them in melee to do <b>[force + detonation_damage]</b> damage.</span>"
. += "<span class='notice'>Does <b>[force + detonation_damage + backstab_bonus]</b> damage if the target is backstabbed, instead of <b>[force + detonation_damage]</b>.</span>"
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
. += "<span class='notice'>It has \a [T] attached, which causes [T.effect_desc()].</span>"
/obj/item/melee/zweihander/attackby(obj/item/I, mob/living/user)
if(istype(I, /obj/item/crowbar))
if(LAZYLEN(trophies))
to_chat(user, "<span class='notice'>You remove [src]'s trophies.</span>")
I.play_tool_sound(src)
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.remove_from(src, user)
else
to_chat(user, "<span class='warning'>There are no trophies on [src].</span>")
else if(istype(I, /obj/item/crusher_trophy))
var/obj/item/crusher_trophy/T = I
T.add_to(src, user)
else
return ..()
/obj/item/melee/zweihander/attack(mob/living/target, mob/living/carbon/user)
var/datum/status_effect/crusher_damage/C = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
var/target_health = target.health
..()
for(var/t in trophies)
if(!QDELETED(target))
var/obj/item/crusher_trophy/T = t
T.on_melee_hit(target, user)
if(!QDELETED(C) && !QDELETED(target))
C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did
/obj/item/melee/zweihander/afterattack(atom/target, mob/living/user, proximity_flag, clickparams)
. = ..()
if(istype(target, /obj/item/crusher_trophy))
var/obj/item/crusher_trophy/T = target
T.add_to(src, user)
if(!proximity_flag && charged)//Mark a target, or mine a tile.
var/turf/proj_turf = user.loc
if(!isturf(proj_turf))
return
var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf)
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.on_projectile_fire(D, user)
D.preparePixelProjectile(target, user, clickparams)
D.firer = user
D.hammer_synced = src
playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, 1)
D.fire()
charged = FALSE
update_icon()
addtimer(CALLBACK(src, .proc/Recharge), charge_time)
return
if(proximity_flag && isliving(target))
var/mob/living/L = target
var/datum/status_effect/crusher_mark/CM = L.has_status_effect(STATUS_EFFECT_CRUSHERMARK)
if(!CM || CM.hammer_synced != src || !L.remove_status_effect(STATUS_EFFECT_CRUSHERMARK))
return
var/datum/status_effect/crusher_damage/C = L.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
var/target_health = L.health
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.on_mark_detonation(target, user)
if(!QDELETED(L))
if(!QDELETED(C))
C.total_damage += target_health - L.health //we did some damage, but let's not assume how much we did
new /obj/effect/temp_visual/kinetic_blast(get_turf(L))
var/backstab_dir = get_dir(user, L)
var/def_check = L.getarmor(type = "bomb")
if((user.dir & backstab_dir) && (L.dir & backstab_dir))
if(!QDELETED(C))
C.total_damage += detonation_damage + backstab_bonus //cheat a little and add the total before killing it, so certain mobs don't have much lower chances of giving an item
L.apply_damage(detonation_damage + backstab_bonus, BRUTE, blocked = def_check)
playsound(user, 'sound/weapons/kenetic_accel.ogg', 100, 1) //Seriously who spelled it wrong
else
if(!QDELETED(C))
C.total_damage += detonation_damage
L.apply_damage(detonation_damage, BRUTE, blocked = def_check)
if(user && lavaland_equipment_pressure_check(get_turf(user))) //CIT CHANGE - makes sure below only happens in low pressure environments
user.adjustStaminaLoss(-30)//CIT CHANGE - makes crushers heal stamina
/obj/item/melee/zweihander/proc/Recharge()
if(!charged)
charged = TRUE
update_icon()
playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
//great brown wolf sif
/obj/item/crusher_trophy/dark_energy
name = "dark energy"
desc = "A black ball of energy that was formed when Sif miraculously imploded. Suitable as a trophy for a kinetic crusher."
icon = 'sandcode/icons/obj/lavaland/sif.dmi'
icon_state = "sif_energy"
denied_type = /obj/item/crusher_trophy/dark_energy
bonus_value = 30
var/range = 3
/obj/item/crusher_trophy/dark_energy/effect_desc()
return "mark detonation to perform a bash dealing <b>[bonus_value]</b> - dashing through the target if possible"
/obj/item/crusher_trophy/dark_energy/on_mark_detonation(mob/living/target, mob/living/user)
if(!target || !user)
return
var/chargeturf = get_turf(target) //get target turf
if(!chargeturf)
return
var/dir = get_dir(user, chargeturf)//get direction
var/turf/T = get_ranged_target_turf(chargeturf,dir,range)//get final dash turf
if(!T) //the final dash turf was out of range - we settle for the target turf instead
T = chargeturf
playsound(user, pick('sandcode/sound/sif/whoosh1.ogg', 'sandcode/sound/sif/whoosh2.ogg', 'sandcode/sound/sif/whoosh3.ogg'), 300, 1)
new /obj/effect/temp_visual/decoy/fading(user.loc, user)
//Stop movement
walk(user,0)
setDir(dir)
var/movespeed = 0.7
//Apply damage
target.apply_damage(bonus_value, BRUTE)
playsound(user, 'sound/effects/meteorimpact.ogg', 200, 1, 2, 1)
//Dash through the target if possible (it was a furious bash after all)
if(target.CanPass(user, T))
walk_to(user, T, 0, 1, movespeed)
playsound(user, pick('sandcode/sound/sif/whoosh1.ogg', 'sandcode/sound/sif/whoosh2.ogg', 'sandcode/sound/sif/whoosh3.ogg'), 300, 1)
new /obj/effect/temp_visual/decoy/fading(user.loc, user)
//Stop movement
walk(user, 0)
@@ -0,0 +1,49 @@
/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag)
if(proximity_flag)
if(ishuman(target))
apply_healing_core(target, user)
else if(istype(target, /mob/living/simple_animal/hostile/megafauna/bubblegum))
new /mob/living/simple_animal/hostile/megafauna/bubblegum/hard(target.loc)
visible_message("[user] turned [target] into an enraged [target]!")
qdel(target)
qdel(src)
else if(istype(target, /mob/living/simple_animal/hostile/megafauna/dragon))
new /mob/living/simple_animal/hostile/megafauna/dragon/hard(target.loc)
visible_message("[user] turned [target] into an enraged [target]!")
qdel(target)
qdel(src)
else if(istype(target, /mob/living/simple_animal/hostile/megafauna/legion))
new /mob/living/simple_animal/hostile/megafauna/legion/hard(target.loc)
visible_message("[user] turned [target] into an enraged [target]!")
qdel(target)
qdel(src)
/obj/item/organ/regenerative_core/attack_self(mob/user)
if(iscarbon(user))
apply_healing_core(user, user)
/obj/item/organ/regenerative_core/proc/apply_healing_core(atom/target, mob/user)
if(!user || !ishuman(target))
return
var/mob/living/carbon/human/H = target
if(inert)
to_chat(user, "<span class='notice'>[src] has decayed and can no longer be used to heal.</span>")
return
if(H.stat == DEAD)
to_chat(user, "<span class='notice'>[src] are useless on the dead.</span>")
return
if(H != user)
H.visible_message("[user] forces [H] to apply [src]... Black tendrils entangle and reinforce [H.p_them()]!")
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other"))
else
to_chat(user, "<span class='notice'>You start to smear [src] on yourself. Disgusting tendrils hold you together and allow you to keep moving, but for how long?</span>")
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self"))
if(is_station_level(H.z))
H.adjustBruteLoss(-25, 0)
H.adjustFireLoss(-25, 0)
for(var/obj/item/organ/O in H)
O.damage = 0
else
H.revive(full_heal = 1)
qdel(src)
user.log_message("[user] used [src] to heal [H == user ? "[H.p_them()]self" : H]! Wake the fuck up, Samurai!", LOG_ATTACK, color="green") //Logging for 'old' style legion core use, when clicking on a sprite of yourself or another.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,66 @@
/obj/machinery/mineral/equipment_vendor
prize_list = list( //if you add something to this, please, for the love of god, sort it by price/type. use tabs and not spaces.
new /datum/data/mining_equipment("1 Marker Beacon", /obj/item/stack/marker_beacon, 10),
new /datum/data/mining_equipment("50 Point Transfer Card", /obj/item/card/mining_point_card, 50),
new /datum/data/mining_equipment("10 Marker Beacons", /obj/item/stack/marker_beacon/ten, 100),
new /datum/data/mining_equipment("30 Marker Beacons", /obj/item/stack/marker_beacon/thirty, 300),
new /datum/data/mining_equipment("Whiskey", /obj/item/reagent_containers/food/drinks/bottle/whiskey, 100),
new /datum/data/mining_equipment("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 100),
new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
new /datum/data/mining_equipment("Miner's Salve Patch", /obj/item/reagent_containers/pill/patch/salve, 150),
new /datum/data/mining_equipment("Soap", /obj/item/soap/nanotrasen, 200),
new /datum/data/mining_equipment("Laser Pointer", /obj/item/laser_pointer, 300),
new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/hivelordstabilizer, 400),
new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 400),
new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400),
new /datum/data/mining_equipment("Survival Knife", /obj/item/kitchen/knife/combat/survival, 450),
new /datum/data/mining_equipment("GAR Meson Scanners", /obj/item/clothing/glasses/meson/gar, 500),
new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/storage/belt/mining, 500),
new /datum/data/mining_equipment("Larger Ore Bag", /obj/item/storage/bag/ore/large, 500),
new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500),
new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750),
new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/kinetic_crusher, 750),
new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750),
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 800),
new /datum/data/mining_equipment("Burn First-Aid Kit", /obj/item/storage/firstaid/fire, 800),
new /datum/data/mining_equipment("First-Aid Kit", /obj/item/storage/firstaid/regular, 800),
new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800),
new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 800),
new /datum/data/mining_equipment("Mini Extinguisher", /obj/item/extinguisher/mini, 1000),
new /datum/data/mining_equipment("Fulton Pack", /obj/item/extraction_pack, 1000),
new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 1000),
new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 1000),
new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffelbag/mining_conscript, 1000),
new /datum/data/mining_equipment("1000 Point Transfer Card", /obj/item/card/mining_point_card/mp1000, 1000),
new /datum/data/mining_equipment("1500 Point Transfer Card", /obj/item/card/mining_point_card/mp1500, 1500),
new /datum/data/mining_equipment("2000 Point Transfer Card", /obj/item/card/mining_point_card/mp2000, 2000),
new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000),
new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
new /datum/data/mining_equipment("Spare Suit Voucher", /obj/item/suit_voucher, 2000),
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500),
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000),
new /datum/data/mining_equipment("Luxury Bar Capsule", /obj/item/survivalcapsule/luxuryelite, 10000),
new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800),
new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400),
new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400),
new /datum/data/mining_equipment("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600),
new /datum/data/mining_equipment("Minebot AI Upgrade", /obj/item/slimepotion/slime/sentience/mining, 1000),
new /datum/data/mining_equipment("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100),
new /datum/data/mining_equipment("KA White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 100),
new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150),
new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
new /datum/data/mining_equipment("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000),
new /datum/data/mining_equipment("Miner Full Replacement", /obj/item/storage/backpack/duffelbag/mining_cloned, 3000),
new /datum/data/mining_equipment("Premium Accelerator", /obj/item/gun/energy/kinetic_accelerator/premiumka, 8000),
new /datum/data/mining_equipment("Kinetic Destroyer", /obj/item/twohanded/kinetic_crusher/premiumcrusher, 12000)
)