Merge remote-tracking branch 'upstream/master' into admin_mapsave

This commit is contained in:
Artur
2021-11-20 00:16:56 +02:00
129 changed files with 1185 additions and 1259 deletions

View File

@@ -184,6 +184,7 @@
icon_state = "crusher-glaive"
item_state = "crusher0-glaive"
block_parry_data = /datum/block_parry_data/crusherglaive
obj_flags = UNIQUE_RENAME
//ideas: altclick that lets you pummel people with the handguard/handle?
//parrying functionality?
@@ -238,6 +239,36 @@
/obj/item/kinetic_crusher/glaive/bone/update_icon_state()
item_state = "crusher[wielded]-bone"
/obj/item/kinetic_crusher/glaive/gauntlets
name = "proto-kinetic gauntlets"
desc = "A pair of scaled-down proto-kinetic crusher destabilizer modules shoved into gauntlets and greaves, often used by \
those who wish to spit in the eyes of God. Sacrifices outright damage for \
a reliance on backstabs and the ability to give fauna concussions on a parry."
attack_verb = list("pummeled", "punched", "jabbed", "hammer-fisted", "uppercut", "slammed")
icon_state = "crusher-hands"
item_state = "crusher0-fist"
unique_reskin = list("Gauntlets" = "crusher-hands",
"Fingerless" = "crusher-hands-bare")
detonation_damage = 45 // 60 on wield, compared to normal crusher's 70
backstab_bonus = 70 // 130 on backstab though
/obj/item/kinetic_crusher/glaive/gauntlets/ComponentInitialize()
. = ..()
AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=15)
/obj/item/kinetic_crusher/glaive/gauntlets/active_parry_reflex_counter(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/return_list, parry_efficiency, list/effect_text)
. = ..()
if(isliving(attacker))
var/mob/living/liv_atk = attacker
if(liv_atk.mob_size >= MOB_SIZE_LARGE && !ismegafauna(liv_atk))
liv_atk.apply_status_effect(STATUS_EFFECT_GAUNTLET_CONC)
/obj/item/kinetic_crusher/glaive/gauntlets/update_icon_state()
if(current_skin == "Fingerless")
item_state = "crusher[wielded]-fistbare"
else
item_state = "crusher[wielded]-fist"
//destablizing force
/obj/item/projectile/destabilizer
name = "destabilizing force"

View File

@@ -74,7 +74,7 @@
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 Glaive Kit", /obj/item/storage/backpack/duffelbag/mining/glaivekit, 2250),
new /datum/data/mining_equipment("Premium Kinetic Melee Kit", /obj/item/storage/backpack/duffelbag/mining/glaivekit, 2250),
new /datum/data/mining_equipment("Survival Dagger", /obj/item/kitchen/knife/combat/survival/knuckledagger, 550),
)
@@ -166,6 +166,7 @@
return
I.mining_points -= prize.cost
to_chat(usr, "<span class='notice'>[src] clanks to life briefly before vending [prize.equipment_name]!</span>")
playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3)
new prize.equipment_path(loc)
SSblackbox.record_feedback("nested tally", "mining_equipment_bought", 1, list("[type]", "[prize.equipment_path]"))
. = TRUE
@@ -187,6 +188,9 @@
if(istype(I, /obj/item/suit_voucher))
RedeemSVoucher(I, user)
return
if(istype(I, /obj/item/premium_crusher_voucher))
RedeemPCVoucher(I, user)
return
if(default_deconstruction_screwdriver(user, "mining-open", "mining", I))
updateUsrDialog()
return
@@ -226,10 +230,46 @@
new /obj/item/kinetic_crusher(drop_location)
if("Mining Conscription Kit")
new /obj/item/storage/backpack/duffelbag/mining/conscript(drop_location)
playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3)
SSblackbox.record_feedback("tally", "mining_voucher_redeemed", 1, selection)
qdel(voucher)
/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer)
var/items = list( "Exo-suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "exo"),
"SEVA suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "seva"))
var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE)
if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer)
return
var/drop_location = drop_location()
switch(selection)
if("Exo-suit")
new /obj/item/clothing/suit/hooded/explorer/exo(drop_location)
new /obj/item/clothing/mask/gas/exo(drop_location)
if("SEVA suit")
new /obj/item/clothing/suit/hooded/explorer/seva(drop_location)
new /obj/item/clothing/mask/gas/seva(drop_location)
playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3)
SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection)
qdel(voucher)
/obj/machinery/mineral/equipment_vendor/proc/RedeemPCVoucher(obj/item/premium_crusher_voucher/voucher, mob/redeemer) // someone should REALLY just refactor this
var/items = list("Kinetic Glaive" = image(icon = 'icons/obj/mining.dmi', icon_state = "crusher-glaive"),
"Kinetic Gauntlets" = image(icon = 'icons/obj/mining.dmi', icon_state = "crusher-hands"))
var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE)
if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer)
return
var/drop_location = drop_location()
switch(selection)
if("Kinetic Glaive")
new /obj/item/kinetic_crusher/glaive(drop_location)
if("Kinetic Gauntlets")
new /obj/item/kinetic_crusher/glaive/gauntlets(drop_location)
playsound(src, 'sound/machines/machine_vend.ogg', 50, TRUE, extrarange = -3)
SSblackbox.record_feedback("tally", "crusher_voucher_redeemed", 1, selection)
qdel(voucher)
/obj/machinery/mineral/equipment_vendor/ex_act(severity, target)
do_sparks(5, TRUE, src)
if(prob(50 / severity) && severity < 3)
@@ -245,7 +285,7 @@
. = ..()
desc += "\nIt seems a few selections have been added."
prize_list += list(
new /datum/data/mining_equipment("Extra Id", /obj/item/card/id/mining, 250),
new /datum/data/mining_equipment("Extra ID", /obj/item/card/id/mining, 250),
new /datum/data/mining_equipment("Science Goggles", /obj/item/clothing/glasses/science, 250),
new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/cube/monkey, 300),
new /datum/data/mining_equipment("Toolbelt", /obj/item/storage/belt/utility, 350),
@@ -273,6 +313,13 @@
icon_state = "mining_voucher"
w_class = WEIGHT_CLASS_TINY
/obj/item/premium_crusher_voucher
name = "premium crusher voucher"
desc = "A token to redeem for a premium proto-kinetic melee weapon. Use it on a mining equipment vendor."
icon = 'icons/obj/mining.dmi'
icon_state = "mining_voucher"
w_class = WEIGHT_CLASS_TINY
/**********************Mining Point Card**********************/
//mp = Miner Pointers
//c = Cash
@@ -375,24 +422,5 @@
/obj/item/storage/backpack/duffelbag/mining/glaivekit
/obj/item/storage/backpack/duffelbag/mining/glaivekit/PopulateContents()
new /obj/item/kinetic_crusher/glaive(src)
new /obj/item/kitchen/knife/combat/survival/knuckledagger(src)
/obj/machinery/mineral/equipment_vendor/proc/RedeemSVoucher(obj/item/suit_voucher/voucher, mob/redeemer)
var/items = list( "Exo-suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "exo"),
"SEVA suit" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "seva"))
var/selection = show_radial_menu(redeemer, src, items, require_near = TRUE, tooltips = TRUE)
if(!selection || !Adjacent(redeemer) || QDELETED(voucher) || voucher.loc != redeemer)
return
var/drop_location = drop_location()
switch(selection)
if("Exo-suit")
new /obj/item/clothing/suit/hooded/explorer/exo(drop_location)
new /obj/item/clothing/mask/gas/exo(drop_location)
if("SEVA suit")
new /obj/item/clothing/suit/hooded/explorer/seva(drop_location)
new /obj/item/clothing/mask/gas/seva(drop_location)
SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection)
qdel(voucher)
new /obj/item/premium_crusher_voucher(src)