diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm
index 113fde2af9c7..d000b8fd17a7 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm
@@ -128,7 +128,6 @@
/obj/structure/stone_tile/slab,
/mob/living/simple_animal/hostile/megafauna/dragon/icemoon{
loot = list(/obj/structure/closet/crate/necropolis/dragon,/obj/item/keycard/gatedrop/drakelair);
- crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/crusher,/obj/item/keycard/gatedrop/drakelair)
},
/turf/open/indestructible/boss,
/area/ruin)
diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm
index ea2d614717da..943b1dccf126 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm
@@ -891,7 +891,6 @@
"zb" = (
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner{
loot = list(/obj/item/melee/transforming/cleaving_saw,/obj/item/gun/energy/kinetic_accelerator,/obj/item/keycard/gatedrop/lavacanyon);
- crusher_loot = list(/obj/item/melee/transforming/cleaving_saw,/obj/item/gun/energy/kinetic_accelerator,/obj/item/crusher_trophy/miner_eye,/obj/item/keycard/gatedrop/lavacanyon)
},
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/overmap_encounter/planetoid/cave/explored)
diff --git a/code/datums/components/crafting/recipes/tribal.dm b/code/datums/components/crafting/recipes/tribal.dm
index ec974a563fce..83e5c03722bc 100644
--- a/code/datums/components/crafting/recipes/tribal.dm
+++ b/code/datums/components/crafting/recipes/tribal.dm
@@ -12,8 +12,8 @@
time = 35
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 3,
- /obj/item/crusher_trophy/wolf_ear = 2,
- /obj/item/crusher_trophy/fang = 1)
+ /obj/item/mob_trophy/wolf_ear = 2,
+ /obj/item/mob_trophy/fang = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bonecodpiece
@@ -21,7 +21,7 @@
result = /obj/item/clothing/accessory/skullcodpiece
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
- /obj/item/crusher_trophy/legion_skull = 1,
+ /obj/item/mob_trophy/legion_skull = 1,
/obj/item/stack/sheet/animalhide/goliath_hide = 1)
category = CAT_PRIMAL
diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm
index cd1946265374..b330b0ec4bdc 100644
--- a/code/modules/cargo/exports/lavaland.dm
+++ b/code/modules/cargo/exports/lavaland.dm
@@ -58,40 +58,40 @@
/obj/item/guardiancreator/miner/choose,//this is basically the most valulable mining loot so good luck getting a miner to part ways
/obj/item/gun/magic/staff/spellblade,
)
-
+/*
/datum/export/lavaland/trophycommon
cost = 1500
unit_name = "common hunting trophy"
- export_types = list(/obj/item/crusher_trophy/legion_skull,
- /obj/item/crusher_trophy/wolf_ear,
- /obj/item/crusher_trophy/bear_paw,
- /obj/item/crusher_trophy/goliath_tentacle,
- /obj/item/crusher_trophy/watcher_wing)
+ export_types = list(/obj/item/mob_trophy/legion_skull,
+ /obj/item/mob_trophy/wolf_ear,
+ /obj/item/mob_trophy/bear_paw,
+ /obj/item/mob_trophy/goliath_tentacle,
+ /obj/item/mob_trophy/watcher_wing)
/datum/export/lavaland/trophyrare
cost = 5000
unit_name = "rare hunting trophy"
- export_types = list(/obj/item/crusher_trophy/dwarf_skull,
- /obj/item/crusher_trophy/fang,
- /obj/item/crusher_trophy/war_paw,
- /obj/item/crusher_trophy/elder_tentacle,
- /obj/item/crusher_trophy/ice_crystal,
- /obj/item/crusher_trophy/magma_wing,
- /obj/item/crusher_trophy/tail_spike,
- /obj/item/crusher_trophy/ice_wing)
+ export_types = list(/obj/item/mob_trophy/dwarf_skull,
+ /obj/item/mob_trophy/fang,
+ /obj/item/mob_trophy/war_paw,
+ /obj/item/mob_trophy/elder_tentacle,
+ /obj/item/mob_trophy/ice_crystal,
+ /obj/item/mob_trophy/magma_wing,
+ /obj/item/mob_trophy/tail_spike,
+ /obj/item/mob_trophy/ice_wing)
/datum/export/lavaland/trophymega
cost = 10000
unit_name = "big game hunting trophy"
- export_types = list(/obj/item/crusher_trophy/legionnaire_spine,
- /obj/item/crusher_trophy/ash_spike,
- /obj/item/crusher_trophy/demon_claws,
- /obj/item/crusher_trophy/broodmother_tongue,
- /obj/item/crusher_trophy/ice_block_talisman,
- /obj/item/crusher_trophy/king_goat,
- /obj/item/crusher_trophy/miner_eye,
- /obj/item/crusher_trophy/vortex_talisman,
- /obj/item/crusher_trophy/blaster_tubes)
+ export_types = list(/obj/item/mob_trophy/legionnaire_spine,
+ /obj/item/mob_trophy/ash_spike,
+ /obj/item/mob_trophy/demon_claws,
+ /obj/item/mob_trophy/broodmother_tongue,
+ /obj/item/mob_trophy/ice_block_talisman,
+ /obj/item/mob_trophy/miner_eye,
+ /obj/item/mob_trophy/vortex_talisman,
+ /obj/item/mob_trophy/blaster_tubes)
+*/
/datum/export/lavaland/megafauna/total_printout(datum/export_report/ex, notes = TRUE) //in the unlikely case a miner feels like selling megafauna loot
. = ..()
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 278fccd0fcd1..030e592d80cd 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -24,7 +24,6 @@
light_range = 5
light_on = FALSE
custom_price = 800
- var/list/trophies = list()
var/charged = TRUE
var/charge_time = 15
var/detonation_damage = 20
@@ -41,10 +40,6 @@
AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it
AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=15)
-/obj/item/kinetic_crusher/Destroy()
- QDEL_LIST(trophies)
- return ..()
-
/// triggered on wield of two handed item
/obj/item/kinetic_crusher/proc/on_wield(obj/item/source, mob/user)
wielded = TRUE
@@ -57,30 +52,6 @@
. = ..()
. += "Induce magnetism in an enemy by striking them with a magnetospheric wave, then hit them in melee to force a waveform collapse for [force + detonation_damage] damage."
. += "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage]."
- for(var/t in trophies)
- var/obj/item/crusher_trophy/T = t
- . += "It has \a [T] attached, which causes [T.effect_desc()]."
-
-/obj/item/kinetic_crusher/attackby(obj/item/I, mob/living/user)
- if(I.tool_behaviour == TOOL_CROWBAR)
- if(LAZYLEN(trophies))
- var/list/choose_options = list()
- for(var/obj/item/crusher_trophy/T in trophies)
- choose_options += list(T.name = image(icon = T.icon, icon_state = T.icon_state))
- var/picked_option = show_radial_menu(user, src, choose_options, radius = 38, require_near = TRUE)
- if(picked_option)
- to_chat(user, "You remove [picked_option].")
- I.play_tool_sound(src)
- for(var/obj/item/crusher_trophy/T in trophies)
- if(T.name == picked_option)
- T.remove_from(src, user)
- else
- to_chat(user, "There are no trophies on [src].")
- else if(istype(I, /obj/item/crusher_trophy))
- var/obj/item/crusher_trophy/T = I
- T.add_to(src, user)
- else
- return ..()
/obj/item/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user)
if(!wielded)
@@ -90,10 +61,6 @@
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
@@ -106,9 +73,6 @@
if(!isturf(proj_turf))
return
var/obj/projectile/destabilizer/D = new /obj/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
@@ -125,9 +89,6 @@
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
@@ -186,12 +147,7 @@
/obj/projectile/destabilizer/on_hit(atom/target, blocked = FALSE)
if(isliving(target))
var/mob/living/L = target
- var/had_effect = (L.has_status_effect(STATUS_EFFECT_CRUSHERMARK)) //used as a boolean
- var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK, 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)
+ L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK, hammer_synced)
var/target_turf = get_turf(target)
if(ismineralturf(target_turf))
var/turf/closed/mineral/M = target_turf
@@ -199,535 +155,6 @@
M.gets_drilled(firer, TRUE)
..()
-//trophies
-/obj/item/crusher_trophy
- name = "tail spike"
- desc = "A strange spike with no usage."
- icon = 'icons/obj/lavaland/artefacts.dmi'
- icon_state = "tail_spike"
- var/bonus_value = 10 //if it has a bonus effect, this is how much that effect is
- var/denied_type = /obj/item/crusher_trophy
-
-/obj/item/crusher_trophy/examine(mob/living/user)
- . = ..()
- . += "Causes [effect_desc()] when attached to a kinetic crusher."
-
-/obj/item/crusher_trophy/proc/effect_desc()
- return "errors"
-
-/obj/item/crusher_trophy/attackby(obj/item/A, mob/living/user)
- if(istype(A, /obj/item/kinetic_crusher))
- add_to(A, user)
- else
- ..()
-
-/obj/item/crusher_trophy/proc/add_to(obj/item/kinetic_crusher/H, mob/living/user)
- for(var/t in H.trophies)
- var/obj/item/crusher_trophy/T = t
- if(istype(T, denied_type) || istype(src, T.denied_type))
- to_chat(user, "You can't seem to attach [src] to [H]. Maybe remove a few trophies?")
- return FALSE
- if(!user.transferItemToLoc(src, H))
- return
- H.trophies += src
- to_chat(user, "You attach [src] to [H].")
- return TRUE
-
-/obj/item/crusher_trophy/proc/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
- forceMove(get_turf(H))
- H.trophies -= src
- return TRUE
-
-/obj/item/crusher_trophy/proc/on_melee_hit(mob/living/target, mob/living/user) //the target and the user
-/obj/item/crusher_trophy/proc/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) //the projectile fired and the user
-/obj/item/crusher_trophy/proc/on_mark_application(mob/living/target, datum/status_effect/crusher_mark/mark, had_mark) //the target, the mark applied, and if the target had a mark before
-/obj/item/crusher_trophy/proc/on_mark_detonation(mob/living/target, mob/living/user) //the target and the user
-
-//goliath
-/obj/item/crusher_trophy/goliath_tentacle
- name = "goliath tentacle"
- desc = "A sliced-off goliath tentacle."
- icon_state = "goliath_tentacle"
- denied_type = /obj/item/crusher_trophy/goliath_tentacle
- bonus_value = 5
- var/missing_health_ratio = 0.1
- var/missing_health_desc = 10
-
-/obj/item/crusher_trophy/goliath_tentacle/effect_desc()
- return "waveform collapse to do [bonus_value] more damage for every [missing_health_desc] health you are missing"
-
-/obj/item/crusher_trophy/goliath_tentacle/on_mark_detonation(mob/living/target, mob/living/user)
- var/missing_health = user.maxHealth - user.health
- missing_health *= missing_health_ratio //bonus is active at all times, even if you're above 90 health
- missing_health *= bonus_value //multiply the remaining amount by bonus_value
- if(missing_health > 0)
- target.adjustBruteLoss(missing_health) //and do that much damage
-
-//ancient goliath
-/obj/item/crusher_trophy/elder_tentacle
- name = "elder tentacle"
- desc = "The barbed tip of a tentacle sliced from an incredibly ancient goliath."
- icon_state = "elder_tentacle"
- denied_type = /obj/item/crusher_trophy/elder_tentacle
- bonus_value = 3
- var/missing_health_ratio = 0.1
- var/missing_health_desc = 5
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
-
-/obj/item/crusher_trophy/elder_tentacle/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/elder_tentacle/effect_desc()
- return "waveform collapse to do [bonus_value] more damage for every [missing_health_desc] health you are missing"
-
-/obj/item/crusher_trophy/elder_tentacle/on_mark_detonation(mob/living/target, mob/living/user)
- var/missing_health = user.maxHealth - user.health
- missing_health *= missing_health_ratio //bonus is active at all times, even if you're above 90 health
- missing_health *= bonus_value //multiply the remaining amount by bonus_value
- if(missing_health > 0)
- target.adjustBruteLoss(missing_health) //and do that much damage
-
-//crystal goliath
-/obj/item/crusher_trophy/goliath_crystal
- name = "goliath crystal"
- desc = "A crystal ripped off from a goliath infected by the strange crystals. You can see the original skin of the goliath deeply embeded in it."
- icon_state = "goliath_crystal"
- denied_type = /obj/item/crusher_trophy/elder_tentacle
- bonus_value = 4
- var/missing_health_ratio = 0.1
- var/missing_health_desc = 5
-
-/obj/item/crusher_trophy/goliath_crystal/effect_desc()
- return "waveform collapse to stun creatures for [bonus_value*0.1] second\s"
-
-/obj/item/crusher_trophy/goliath_crystal/on_mark_detonation(mob/living/simple_animal/target, mob/living/user)
- if(!ishostile(target))
- return
- var/mob/living/simple_animal/hostile/hostile_target = target
- var/hostile_ai_status = hostile_target.AIStatus
- hostile_target.AIStatus = AI_OFF
- addtimer(VARSET_CALLBACK(hostile_target, AIStatus, hostile_ai_status), bonus_value*0.1 SECONDS)
-
-//watcher
-/obj/item/crusher_trophy/watcher_wing
- name = "watcher wing"
- desc = "A wing ripped from a watcher."
- icon_state = "watcher_wing"
- denied_type = /obj/item/crusher_trophy/watcher_wing
- bonus_value = 5
-
-/obj/item/crusher_trophy/watcher_wing/effect_desc()
- return "waveform collapse to prevent certain creatures from using certain attacks for [bonus_value*0.1] second\s"
-
-/obj/item/crusher_trophy/watcher_wing/on_mark_detonation(mob/living/target, mob/living/user)
- if(ishostile(target))
- var/mob/living/simple_animal/hostile/H = target
- if(H.ranged) //briefly delay ranged attacks
- if(H.ranged_cooldown >= world.time)
- H.ranged_cooldown += bonus_value
- else
- H.ranged_cooldown = bonus_value + world.time
-
-//magmawing watcher
-/obj/item/crusher_trophy/magma_wing
- name = "magmatic sinew"
- desc = "A fuming organ, dropped by beings hotter then lava."
- icon_state = "magma_wing"
- denied_type = /obj/item/crusher_trophy/magma_wing
- gender = NEUTER
- bonus_value = 5
- var/deadly_shot = FALSE
-
-/obj/item/crusher_trophy/magma_wing/effect_desc()
- return "waveform collapse to make the next magnetic pulse deal [bonus_value] damage"
-
-/obj/item/crusher_trophy/magma_wing/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/magma_wing/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
- if(deadly_shot)
- marker.name = "superheated [marker.name]"
- marker.icon_state = "lava"
- marker.damage = bonus_value
- marker.nodamage = FALSE
- marker.speed = 2
- deadly_shot = FALSE
-
-/obj/item/crusher_trophy/magma_wing/on_mark_detonation(mob/living/target, mob/living/user)
- deadly_shot = TRUE
- addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
-
-/obj/item/crusher_trophy/magma_wing/proc/reset_deadly_shot()
- deadly_shot = FALSE
-
-//icewing watcher
-/obj/item/crusher_trophy/ice_wing
- name = "frigid sinew"
- desc = "A carefully-preserved freezing organ, dropped by chilling beings."
- icon_state = "ice_wing"
- bonus_value = 8
- denied_type = /obj/item/crusher_trophy/ice_wing
-
-/obj/item/crusher_trophy/ice_wing/effect_desc()
- return "waveform collapse to prevent certain creatures from using certain attacks for [bonus_value*0.1] second\s"
-
-/obj/item/crusher_trophy/ice_wing/on_mark_detonation(mob/living/target, mob/living/user)
- if(ishostile(target))
- var/mob/living/simple_animal/hostile/H = target
- if(H.ranged) //briefly delay ranged attacks
- if(H.ranged_cooldown >= world.time)
- H.ranged_cooldown += bonus_value
- else
- H.ranged_cooldown = bonus_value + world.time
-
-//forgotten watcher
-/obj/item/crusher_trophy/watcher_wing_forgotten
- name = "forgotten watcher wing"
- desc = "A wing with a terminal infection of the strange crystals."
- icon_state = "watcher_wing_crystal"
- denied_type = /obj/item/crusher_trophy/watcher_wing_forgotten
- gender = NEUTER
- bonus_value = 20
- var/deadly_shot = FALSE
-
-/obj/item/crusher_trophy/watcher_wing_forgotten/effect_desc()
- return "waveform collapse to make the next magnetic pulse deal [bonus_value] damage"
-
-/obj/item/crusher_trophy/watcher_wing_forgotten/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/watcher_wing_forgotten/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
- if(deadly_shot)
- marker.name = "crystal [marker.name]"
- marker.icon_state = "crystal_shard"
- marker.damage = bonus_value
- marker.nodamage = FALSE
- marker.speed = 2
- deadly_shot = FALSE
-
-/obj/item/crusher_trophy/watcher_wing_forgotten/on_mark_detonation(mob/living/target, mob/living/user)
- deadly_shot = TRUE
- addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
-
-/obj/item/crusher_trophy/watcher_wing_forgotten/proc/reset_deadly_shot()
- deadly_shot = FALSE
-
-//legion
-/obj/item/crusher_trophy/legion_skull
- name = "legion skull"
- desc = "A dead and lifeless legion skull. Could be used in crafting."
- icon_state = "legion_skull"
- denied_type = /obj/item/crusher_trophy/legion_skull
- bonus_value = 3
-
-/obj/item/crusher_trophy/legion_skull/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/legion_skull/effect_desc()
- return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster"
-
-/obj/item/crusher_trophy/legion_skull/add_to(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.charge_time -= bonus_value
-
-/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.charge_time += bonus_value
-
-//dwarf legion
-/obj/item/crusher_trophy/dwarf_skull
- name = "shrunken skull"
- desc = "Looks like someone hasn't been drinking their milk. Could be used in crafting."
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
- icon_state = "shrunk_skull"
- denied_type = /obj/item/crusher_trophy/dwarf_skull
- bonus_value = 6
-
-/obj/item/crusher_trophy/dwarf_skull/effect_desc()
- return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster"
-
-/obj/item/crusher_trophy/dwarf_skull/add_to(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.charge_time -= bonus_value
-
-/obj/item/crusher_trophy/dwarf_skull/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.charge_time += bonus_value
-
-
-//disfigured legion
-/obj/item/crusher_trophy/legion_skull_crystal
- name = "disfigured legion skull"
- desc = "A dead and lifeless legion skull. The crystals keep it alive, even in agony."
- icon_state = "legion_skull_crystal"
- denied_type = /obj/item/crusher_trophy/legion_skull_crystal
- bonus_value = 1
-
-/obj/item/crusher_trophy/legion_skull_crystal/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/legion_skull_crystal/effect_desc()
- return "waveform collapse to shoot 3 projectiles that only hits hostile fauna"
-
-/obj/item/crusher_trophy/legion_skull_crystal/on_mark_detonation(mob/living/target, mob/living/user)
- for(var/i in 0 to 5)
- var/obj/projectile/projectile_to_shoot = new /obj/projectile/crystalline_crusher(get_turf(src))
- projectile_to_shoot.preparePixelProjectile(get_step(src, pick(GLOB.alldirs)), get_turf(src))
- projectile_to_shoot.firer = user
- projectile_to_shoot.fire(i*(360/5))
- return ..()
-
-/obj/projectile/crystalline_crusher
- name = "Crystalline Shard"
- icon_state = "crystal_shard"
- damage = 25
- damage_type = BRUTE
- speed = 3
-
-/obj/projectile/crystalline_crusher/on_hit(atom/target, blocked)
- . = ..()
- var/turf/turf_hit = get_turf(target)
- new /obj/effect/temp_visual/goliath_tentacle/crystal/visual_only(turf_hit,firer)
-
-/obj/projectile/crystalline_crusher/can_hit_target(atom/target, list/passthrough, direct_target, ignore_loc)
- if(!(istype(target,/mob/living/simple_animal/hostile/asteroid)))
- if(isturf(target))
- return ..()
- return FALSE
- return ..()
-
-//blood-drunk hunter
-/obj/item/crusher_trophy/miner_eye
- name = "eye of a blood-drunk hunter"
- desc = "Its pupil is collapsed and turned to mush."
- icon_state = "hunter_eye"
- denied_type = /obj/item/crusher_trophy/miner_eye
-
-/obj/item/crusher_trophy/miner_eye/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/miner_eye/effect_desc()
- return "waveform collapse to grant stun immunity and 90% damage reduction for 1 second"
-
-/obj/item/crusher_trophy/miner_eye/on_mark_detonation(mob/living/target, mob/living/user)
- user.apply_status_effect(STATUS_EFFECT_BLOODDRUNK)
-
-//whelp
-/obj/item/crusher_trophy/tail_spike
- desc = "A spike taken from a young dragon's tail. Sharp enough to stab someone with."
- denied_type = /obj/item/crusher_trophy/tail_spike
- bonus_value = 5
- force = 10
- throwforce = 15
- throw_speed = 4
- sharpness = IS_SHARP
- attack_verb = list("cut", "sliced", "diced")
- hitsound = 'sound/weapons/bladeslice.ogg'
-
-/obj/item/crusher_trophy/tail_spike/effect_desc()
- return "waveform collapse to do [bonus_value] damage to nearby creatures and push them back"
-
-/obj/item/crusher_trophy/tail_spike/on_mark_detonation(mob/living/target, mob/living/user)
- for(var/mob/living/L in oview(2, user))
- if(L.stat == DEAD)
- continue
- playsound(L, 'sound/magic/fireball.ogg', 20, TRUE)
- new /obj/effect/temp_visual/fire(L.loc)
- addtimer(CALLBACK(src, PROC_REF(pushback), L, user), 1) //no free backstabs, we push AFTER module stuff is done
- L.adjustFireLoss(bonus_value, forced = TRUE)
-
-/obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user)
- if(!QDELETED(target) && !QDELETED(user) && (!target.anchored || ismegafauna(target))) //megafauna will always be pushed
- step(target, get_dir(user, target))
-
-//ash drake
-/obj/item/crusher_trophy/ash_spike
- desc = "A molten spike taken from an ash drake's tail. Hot to the touch and extremely sharp."
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
- icon_state = "ash_spike"
- denied_type = /obj/item/crusher_trophy/ash_spike
- bonus_value = 15
- force = 15
- throwforce = 20
- throw_speed = 4
- sharpness = IS_SHARP
- attack_verb = list("cut", "braised", "singed")
- hitsound = 'sound/weapons/bladeslice.ogg'
-
-/obj/item/crusher_trophy/ash_spike/effect_desc()
- return "waveform collapse to do [bonus_value] damage to nearby creatures and push them back"
-
-/obj/item/crusher_trophy/ash_spike/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/ash_spike/on_mark_detonation(mob/living/target, mob/living/user)
- for(var/mob/living/L in oview(2, user))
- if(L.stat == DEAD)
- continue
- playsound(L, 'sound/magic/fireball.ogg', 20, TRUE)
- new /obj/effect/temp_visual/fire(L.loc)
- addtimer(CALLBACK(src, PROC_REF(pushback), L, user), 1) //no free backstabs, we push AFTER module stuff is done
- L.adjustFireLoss(bonus_value, forced = TRUE)
-
-/obj/item/crusher_trophy/ash_spike/proc/pushback(mob/living/target, mob/living/user)
- if(!QDELETED(target) && !QDELETED(user) && (!target.anchored || ismegafauna(target))) //megafauna will always be pushed
- step(target, get_dir(user, target))
-
-//bubblegum
-/obj/item/crusher_trophy/demon_claws
- name = "demon claws"
- desc = "A set of blood-drenched claws from a massive demon's hand."
- icon_state = "demon_claws"
- gender = PLURAL
- denied_type = /obj/item/crusher_trophy/demon_claws
- bonus_value = 10
- var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
-
-/obj/item/crusher_trophy/demon_claws/effect_desc()
- return "melee hits to do [bonus_value * 0.2] more damage and heal you for [bonus_value * 0.1], with 5X effect on waveform collapse"
-
-/obj/item/crusher_trophy/demon_claws/add_to(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.force += bonus_value * 0.2
- H.detonation_damage += bonus_value * 0.8
- AddComponent(/datum/component/two_handed, force_wielded=(20 + bonus_value * 0.2))
-
-/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.force -= bonus_value * 0.2
- H.detonation_damage -= bonus_value * 0.8
- AddComponent(/datum/component/two_handed, force_wielded=20)
-
-/obj/item/crusher_trophy/demon_claws/on_melee_hit(mob/living/target, mob/living/user)
- user.heal_ordered_damage(bonus_value * 0.1, damage_heal_order)
-
-/obj/item/crusher_trophy/demon_claws/on_mark_detonation(mob/living/target, mob/living/user)
- user.heal_ordered_damage(bonus_value * 0.4, damage_heal_order)
-
-//colossus
-/obj/item/crusher_trophy/blaster_tubes
- name = "blaster tubes"
- desc = "The blaster tubes from a colossus's arm."
- icon_state = "blaster_tubes"
- gender = PLURAL
- denied_type = /obj/item/crusher_trophy/blaster_tubes
- bonus_value = 15
- var/deadly_shot = FALSE
-
-/obj/item/crusher_trophy/blaster_tubes/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/blaster_tubes/effect_desc()
- return "waveform collapse to make the next magnetic pulse deal [bonus_value] damage but move slower"
-
-/obj/item/crusher_trophy/blaster_tubes/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user)
- if(deadly_shot)
- marker.name = "ominous [marker.name]"
- marker.icon_state = "chronobolt"
- marker.damage = bonus_value
- marker.nodamage = FALSE
- marker.speed = 2
- deadly_shot = FALSE
-
-/obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user)
- deadly_shot = TRUE
- addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
-
-/obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot()
- deadly_shot = FALSE
-
-//hierophant
-/obj/item/crusher_trophy/vortex_talisman
- name = "vortex talisman"
- desc = "A glowing trinket that was originally the Hierophant's beacon."
- icon_state = "vortex_talisman"
- denied_type = /obj/item/crusher_trophy/vortex_talisman
-
-/obj/item/crusher_trophy/vortex_talisman/effect_desc()
- return "waveform collapse to create a barrier you can pass"
-
-/obj/item/crusher_trophy/vortex_talisman/on_mark_detonation(mob/living/target, mob/living/user)
- var/turf/current_location = get_turf(user)
- var/area/current_area = current_location.loc
- if(current_area.area_flags & NOTELEPORT)
- to_chat(user, "[src] fizzles uselessly.")
- return
- var/turf/T = get_turf(user)
- 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)
-
-/obj/effect/temp_visual/hierophant/wall/crusher
- duration = 75
-
-//I am afraid of this code. It also does not function(in terms of doing damage to enemies) as of my last test.
-/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..."
- 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/examine(mob/user)
- . = ..()
- . += "Suitable as a trophy for a proto-kinetic crusher."
-
-/obj/item/crusher_trophy/king_goat/effect_desc()
- return "you also passively recharge pulses 5x as fast while this is 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/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 //it does damage to nobody. Please fix -M
-
-/obj/item/crusher_trophy/king_goat/add_to(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.charge_time = 3
- H.AddComponent(/datum/component/two_handed, force_wielded=5)
-
-/obj/item/crusher_trophy/king_goat/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.charge_time = 15
- H.AddComponent(/datum/component/two_handed, force_wielded=20)
-
-/obj/item/crusher_trophy/shiny
- name = "shiny nugget"
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
- desc = "A glimmering nugget of dull metal. As it turns out, the fools were right- pyrite is a far rarer substance than gold in the space age. You could probably sell this for a fair price."
- icon_state = "nugget"
- gender = PLURAL
- denied_type = /obj/item/crusher_trophy/shiny
-
-/obj/item/crusher_trophy/shiny/effect_desc()
- return "empowered butchering chances"
-
-/obj/item/crusher_trophy/shiny/add_to(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.AddComponent(/datum/component/butchering, 60, 210)
-
-/obj/item/crusher_trophy/shiny/remove_from(obj/item/kinetic_crusher/H, mob/living/user)
- . = ..()
- if(.)
- H.AddComponent(/datum/component/butchering, 60, 110)
-
//outdated Nanotrasen prototype of the crusher. Incredibly heavy, but the blade was made at a premium. //to alter this I had to duplicate some code, big moment.
/obj/item/kinetic_crusher/old
icon_state = "crusherold"
@@ -820,16 +247,3 @@
. = ..()
if(wielded)
. += "[icon_state]_lit"
-
-/obj/item/crusher_trophy/lobster_claw
- name = "lobster claw"
- icon_state = "lobster_claw"
- desc = "A lobster claw."
- denied_type = /obj/item/crusher_trophy/lobster_claw
- bonus_value = 1
-
-/obj/item/crusher_trophy/lobster_claw/effect_desc()
- return "mark detonation to briefly stagger the target for [bonus_value] seconds"
-
-/obj/item/crusher_trophy/lobster_claw/on_mark_detonation(mob/living/target, mob/living/user)
- target.apply_status_effect(/datum/status_effect/stagger, bonus_value SECONDS)
diff --git a/code/modules/mining/equipment/trophies.dm b/code/modules/mining/equipment/trophies.dm
new file mode 100644
index 000000000000..a9631c7ffc15
--- /dev/null
+++ b/code/modules/mining/equipment/trophies.dm
@@ -0,0 +1,184 @@
+//trophies
+/obj/item/mob_trophy
+ name = "tail spike"
+ desc = "A strange spike with no usage."
+ icon = 'icons/obj/lavaland/artefacts.dmi'
+ icon_state = "tail_spike"
+
+//legion
+/obj/item/mob_trophy/legion_skull
+ name = "legion skull"
+ desc = "A dead and lifeless legion skull. Could be used in crafting."
+ icon_state = "legion_skull"
+
+/obj/item/mob_trophy/wolf_ear
+ name = "wolf ear"
+ desc = "The battered remains of a wolf's ear. You could attach it to a crusher, or use the fur to craft a trophy."
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+ icon_state = "torn_ear"
+
+/obj/item/mob_trophy/fang
+ name = "battle-stained fang"
+ desc = "A wolf fang, displaying the wear and tear associated with a long and colorful life. Could be attached to a kinetic crusher or used to make a trophy."
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+ icon_state = "fang"
+
+/*
+//goliath
+/obj/item/mob_trophy/goliath_tentacle
+ name = "goliath tentacle"
+ desc = "A sliced-off goliath tentacle."
+ icon_state = "goliath_tentacle"
+
+//ancient goliath0
+/obj/item/mob_trophy/elder_tentacle
+ name = "elder tentacle"
+ desc = "The barbed tip of a tentacle sliced from an incredibly ancient goliath."
+ icon_state = "elder_tentacle"
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+
+//crystal goliath
+/obj/item/mob_trophy/goliath_crystal
+ name = "goliath crystal"
+ desc = "A crystal ripped off from a goliath infected by the strange crystals. You can see the original skin of the goliath deeply embeded in it."
+ icon_state = "goliath_crystal"
+
+//watcher
+/obj/item/mob_trophy/watcher_wing
+ name = "watcher wing"
+ desc = "A wing ripped from a watcher."
+ icon_state = "watcher_wing"
+
+//magmawing watcher
+/obj/item/mob_trophy/magma_wing
+ name = "magmatic sinew"
+ desc = "A fuming organ, dropped by beings hotter then lava."
+ icon_state = "magma_wing"
+ gender = NEUTER
+
+//icewing watcher
+/obj/item/mob_trophy/ice_wing
+ name = "frigid sinew"
+ desc = "A carefully-preserved freezing organ, dropped by chilling beings."
+ icon_state = "ice_wing"
+
+//forgotten watcher
+/obj/item/mob_trophy/watcher_wing_forgotten
+ name = "forgotten watcher wing"
+ desc = "A wing with a terminal infection of the strange crystals."
+ icon_state = "watcher_wing_crystal"
+ gender = NEUTER
+
+//dwarf legion
+/obj/item/mob_trophy/dwarf_skull
+ name = "shrunken skull"
+ desc = "Looks like someone hasn't been drinking their milk. Could be used in crafting."
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+ icon_state = "shrunk_skull"
+
+//disfigured legion
+/obj/item/mob_trophy/legion_skull_crystal
+ name = "disfigured legion skull"
+ desc = "A dead and lifeless legion skull. The crystals keep it alive, even in agony."
+ icon_state = "legion_skull_crystal"
+
+//blood-drunk hunter
+/obj/item/mob_trophy/miner_eye
+ name = "eye of a blood-drunk hunter"
+ desc = "Its pupil is collapsed and turned to mush."
+ icon_state = "hunter_eye"
+
+//whelp
+/obj/item/mob_trophy/tail_spike
+ desc = "A spike taken from a young dragon's tail. Sharp enough to stab someone with."
+ force = 10
+ throwforce = 15
+ throw_speed = 4
+ sharpness = IS_SHARP
+ attack_verb = list("cut", "sliced", "diced")
+ hitsound = 'sound/weapons/bladeslice.ogg'
+
+//ash drake
+/obj/item/mob_trophy/ash_spike
+ desc = "A molten spike taken from an ash drake's tail. Hot to the touch and extremely sharp."
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+ icon_state = "ash_spike"
+ force = 15
+ throwforce = 20
+ throw_speed = 4
+ sharpness = IS_SHARP
+ attack_verb = list("cut", "braised", "singed")
+ hitsound = 'sound/weapons/bladeslice.ogg'
+
+//bubblegum
+/obj/item/mob_trophy/demon_claws
+ name = "demon claws"
+ desc = "A set of blood-drenched claws from a massive demon's hand."
+ icon_state = "demon_claws"
+ gender = PLURAL
+
+//colossus
+/obj/item/mob_trophy/blaster_tubes
+ name = "blaster tubes"
+ desc = "The blaster tubes from a colossus's arm."
+ icon_state = "blaster_tubes"
+ gender = PLURAL
+
+//hierophant
+/obj/item/mob_trophy/vortex_talisman
+ name = "vortex talisman"
+ desc = "A glowing trinket that was originally the Hierophant's beacon."
+ icon_state = "vortex_talisman"
+
+// Broodmother's loot: Broodmother Tongue
+/obj/item/mob_trophy/broodmother_tongue
+ name = "broodmother tongue"
+ desc = "The tongue of a broodmother. If attached a certain way, makes for a suitable crusher trophy."
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+ icon_state = "broodmother_tongue"
+
+/obj/item/mob_trophy/shiny
+ name = "shiny nugget"
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+ desc = "A glimmering nugget of dull metal. As it turns out, the fools were right- pyrite is a far rarer substance than gold in the space age. You could probably sell this for a fair price."
+ icon_state = "nugget"
+ gender = PLURAL
+
+/obj/item/mob_trophy/lobster_claw
+ name = "lobster claw"
+ icon_state = "lobster_claw"
+ desc = "A lobster claw."
+
+/obj/item/mob_trophy/ice_block_talisman
+ name = "ice block talisman"
+ desc = "A glowing trinket that a demonic miner had on him, it seems he couldn't utilize it for whatever reason."
+ icon_state = "freeze_cube"
+
+/obj/item/mob_trophy/brimdemon_fang
+ name = "brimdemon's fang"
+ icon_state = "brimdemon_fang"
+ desc = "A fang from a brimdemon's corpse."
+
+/obj/item/mob_trophy/ice_crystal
+ name = "frost gem"
+ icon = 'icons/obj/lavaland/elite_trophies.dmi'
+ desc = "The glowing remnant of an ancient ice demon- so cold that it hurts to touch."
+ icon_state = "ice_crystal"
+
+/obj/item/mob_trophy/lobster_claw
+ name = "lobster claw"
+ icon_state = "lobster_claw"
+ desc = "A lobster claw."
+
+/obj/item/mob_trophy/bear_paw
+ name = "polar bear paw"
+ desc = "It's a polar bear paw."
+ icon_state = "bear_paw"
+ icon ='icons/obj/lavaland/elite_trophies.dmi'
+
+/obj/item/mob_trophy/war_paw
+ name = "Armored bear paw"
+ desc = "It's a paw from a true warrior. Still remembers the basics of CQB."
+ icon_state = "armor_paw"
+ icon ='icons/obj/lavaland/elite_trophies.dmi'
+*/
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 42cc2a74d6a4..36d556bc5f42 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -882,6 +882,39 @@
walk(hit_mob, 0) //stops them mid pathing even if they're stunimmune
hit_mob.apply_status_effect(/datum/status_effect/ice_block_talisman, 5 SECONDS)
+/datum/status_effect/ice_block_talisman
+ id = "ice_block_talisman"
+ duration = 40
+ status_type = STATUS_EFFECT_REFRESH
+ alert_type = /atom/movable/screen/alert/status_effect/ice_block_talisman
+ /// Stored icon overlay for the hit mob, removed when effect is removed
+ var/icon/cube
+
+/atom/movable/screen/alert/status_effect/ice_block_talisman
+ name = "Frozen Solid"
+ desc = "You're frozen inside an ice cube, and cannot move!"
+ icon_state = "frozen"
+
+/datum/status_effect/ice_block_talisman/on_apply()
+ RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(owner_moved))
+ if(!owner.stat)
+ to_chat(owner, "You become frozen in a cube!")
+ cube = icon('icons/effects/freeze.dmi', "ice_cube")
+ var/icon/size_check = icon(owner.icon, owner.icon_state)
+ cube.Scale(size_check.Width(), size_check.Height())
+ owner.add_overlay(cube)
+ return ..()
+
+/// Blocks movement from the status effect owner
+/datum/status_effect/ice_block_talisman/proc/owner_moved()
+ return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
+
+/datum/status_effect/ice_block_talisman/on_remove()
+ if(!owner.stat)
+ to_chat(owner, "The cube melts!")
+ owner.cut_overlay(cube)
+ UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
+
//earthquake gauntlets
/obj/item/clothing/gloves/gauntlets
name = "concussive gauntlets"
@@ -1274,13 +1307,6 @@
if(4)
new /obj/item/dragons_blood(src)
-/obj/structure/closet/crate/necropolis/dragon/crusher
- name = "firey dragon chest"
-
-/obj/structure/closet/crate/necropolis/dragon/crusher/PopulateContents()
- ..()
- new /obj/item/crusher_trophy/ash_spike(src)
-
/obj/item/melee/ghost_sword
name = "\improper spectral blade"
desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly."
@@ -1502,13 +1528,6 @@
if(3)
new /obj/item/gun/magic/staff/spellblade(src)
-/obj/structure/closet/crate/necropolis/bubblegum/crusher
- name = "bloody bubblegum chest"
-
-/obj/structure/closet/crate/necropolis/bubblegum/crusher/PopulateContents()
- ..()
- new /obj/item/crusher_trophy/demon_claws(src)
-
/obj/item/mayhem
name = "mayhem in a bottle"
desc = "A magically infused bottle of blood, the scent of which will drive anyone nearby into a murderous frenzy."
@@ -1584,13 +1603,6 @@
new random_crystal(src)
new /obj/item/organ/vocal_cords/colossus(src)
-/obj/structure/closet/crate/necropolis/colossus/crusher
- name = "angelic colossus chest"
-
-/obj/structure/closet/crate/necropolis/colossus/crusher/PopulateContents()
- ..()
- new /obj/item/crusher_trophy/blaster_tubes(src)
-
//Hierophant
/obj/item/hierophant_club
name = "hierophant club"
diff --git a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm
index 4f8c758068ce..3c4ba08ed16d 100644
--- a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm
+++ b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm
@@ -12,10 +12,12 @@
move_force = MOVE_FORCE_DEFAULT
move_resist = MOVE_RESIST_DEFAULT
pull_force = PULL_FORCE_DEFAULT
+ /*
if(prob(15))
- new /obj/item/crusher_trophy/shiny(loc)
+ new /obj/item/mob_trophy/shiny(loc)
visible_message("You notice a glimmering nugget of shiny metal.")
..()
+ */
/mob/living/simple_animal/hostile/human/hermit/survivor
name = "Hermit Wanderer"
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 5bdc5c882214..63519d29c7cd 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -41,7 +41,7 @@ Difficulty: Medium
ranged_cooldown_time = 16
pixel_x = -16
base_pixel_x = -16
- crusher_loot = list(/obj/item/melee/transforming/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator, /obj/item/crusher_trophy/miner_eye)
+ //mob_trophy = /obj/item/mob_trophy/miner_eye
loot = list(/obj/item/melee/transforming/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator)
wander = FALSE
del_on_death = TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index d62d695e1be7..1a0bbc10fac4 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -56,7 +56,7 @@ Difficulty: Hard
pixel_x = -32
base_pixel_x = -32
del_on_death = TRUE
- crusher_loot = list(/obj/structure/closet/crate/necropolis/bubblegum/crusher)
+ //mob_trophy = /obj/item/mob_trophy/demon_claws
loot = list(/obj/structure/closet/crate/necropolis/bubblegum)
blood_volume = BLOOD_VOLUME_MAXIMUM //BLEED FOR ME
var/charging = FALSE
@@ -504,7 +504,7 @@ Difficulty: Hard
health = 1
maxHealth = 1
alpha = 127.5
- crusher_loot = null
+ mob_trophy = null
loot = null
achievement_type = null
crusher_achievement_type = null
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm
index cca8a649353f..77b4544a6dbb 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm
@@ -21,7 +21,6 @@
ranged = TRUE
speed = 4
move_to_delay = 4
- crusher_loot = list(/obj/item/card/id/ert/deathsquad, /obj/item/documents/nanotrasen)
loot = list(/obj/item/card/id/ert/deathsquad, /obj/item/documents/nanotrasen)
wander = FALSE
blood_volume = BLOOD_VOLUME_NORMAL
@@ -59,8 +58,8 @@
speed = 5
move_to_delay = 5
speak_emote = list("verbalizes")
- crusher_loot = list(/obj/effect/spawner/clawloot)
- loot = list(/obj/effect/spawner/clawloot/crusher)
+ mob_trophy = /obj/item/nullrod/armblade/tentacle
+ loot = list(/obj/effect/spawner/clawloot)
health = 2250
maxHealth = 2250
shouldnt_move = TRUE //we want to show the transforming animation
@@ -76,9 +75,6 @@
new /obj/item/gun/energy/pulse/pistol(get_turf(src))
qdel(src)
-/obj/effect/spawner/clawloot/crusher/spawn_loot()
- new /obj/item/nullrod/armblade/tentacle(get_turf(src)) //idk what to put here, memed is the loot person
- return ..()
///LOOT END
//PHASE ONE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index bd09f06f3521..863abf56dad1 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -50,7 +50,7 @@ Difficulty: Very Hard
achievement_type = /datum/award/achievement/boss/colossus_kill
crusher_achievement_type = /datum/award/achievement/boss/colossus_crusher
score_achievement_type = /datum/award/score/colussus_score
- crusher_loot = list(/obj/structure/closet/crate/necropolis/colossus/crusher)
+ //mob_trophy = /obj/item/mob_trophy/blaster_tubes
loot = list(/obj/structure/closet/crate/necropolis/colossus)
deathmessage = "disintegrates, leaving a glowing core in its wake."
deathsound = 'sound/magic/demon_dies.ogg'
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm
index 96fbc8b5c4ec..08ef1a7b21cb 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm
@@ -24,7 +24,7 @@
vision_range = 10
damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 0.5, CLONE = 0.5, STAMINA = 0, OXY = 0.5)
loot = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted)
- crusher_loot = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll)
+ mob_trophy = list(/obj/item/claymore/cursed, /obj/item/clothing/suit/space/hardsuit/cult/enchanted, /obj/item/upgradescroll)
wander = FALSE
del_on_death = TRUE
blood_volume = BLOOD_VOLUME_NORMAL
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
index 550c78532cd6..00a32a8dc449 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm
@@ -28,7 +28,7 @@ Difficulty: Extremely Hard
speed = 20
move_to_delay = 20
ranged = TRUE
- crusher_loot = list(/obj/effect/decal/remains/plasma, /obj/item/crusher_trophy/ice_block_talisman)
+ //mob_trophy = /obj/item/mob_trophy/ice_block_talisman
loot = list(/obj/effect/decal/remains/plasma)
wander = FALSE
del_on_death = TRUE
@@ -323,47 +323,3 @@ Difficulty: Extremely Hard
mineral_scan_pulse(T, world.view + 1)
. = ..()
-/obj/item/crusher_trophy/ice_block_talisman
- name = "ice block talisman"
- desc = "A glowing trinket that a demonic miner had on him, it seems he couldn't utilize it for whatever reason."
- icon_state = "freeze_cube"
- denied_type = /obj/item/crusher_trophy/ice_block_talisman
-
-/obj/item/crusher_trophy/ice_block_talisman/effect_desc()
- return "waveform collapse to freeze a creature in a block of ice for a period, preventing them from moving"
-
-/obj/item/crusher_trophy/ice_block_talisman/on_mark_detonation(mob/living/target, mob/living/user)
- target.apply_status_effect(/datum/status_effect/ice_block_talisman)
-
-/datum/status_effect/ice_block_talisman
- id = "ice_block_talisman"
- duration = 40
- status_type = STATUS_EFFECT_REFRESH
- alert_type = /atom/movable/screen/alert/status_effect/ice_block_talisman
- /// Stored icon overlay for the hit mob, removed when effect is removed
- var/icon/cube
-
-/atom/movable/screen/alert/status_effect/ice_block_talisman
- name = "Frozen Solid"
- desc = "You're frozen inside an ice cube, and cannot move!"
- icon_state = "frozen"
-
-/datum/status_effect/ice_block_talisman/on_apply()
- RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(owner_moved))
- if(!owner.stat)
- to_chat(owner, "You become frozen in a cube!")
- cube = icon('icons/effects/freeze.dmi', "ice_cube")
- var/icon/size_check = icon(owner.icon, owner.icon_state)
- cube.Scale(size_check.Width(), size_check.Height())
- owner.add_overlay(cube)
- return ..()
-
-/// Blocks movement from the status effect owner
-/datum/status_effect/ice_block_talisman/proc/owner_moved()
- return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
-
-/datum/status_effect/ice_block_talisman/on_remove()
- if(!owner.stat)
- to_chat(owner, "The cube melts!")
- owner.cut_overlay(cube)
- UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index 6fcf5ada7f4a..b7a2f0912653 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -54,10 +54,10 @@ Difficulty: Medium
ranged = TRUE
pixel_x = -32
base_pixel_x = -32
- crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/crusher)
+ //mob_trophy = /obj/item/mob_trophy/ash_spike
loot = list(/obj/structure/closet/crate/necropolis/dragon)
butcher_results = list(/obj/item/gem/amber = 1, /obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30)
- guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/crusher_trophy/ash_spike = 1)
+ guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/ashdrake = 10)
var/swooping = NONE
var/player_cooldown = 0
var/dungeon = FALSE //if true, on death will spawn a ghost role at a lank mark and open blast doors with a certain id
@@ -583,7 +583,7 @@ Difficulty: Medium
mouse_opacity = MOUSE_OPACITY_ICON
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
loot = list()
- crusher_loot = list()
+ mob_trophy = list()
butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30)
attack_action_types = list()
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 4df97bac4a6f..ba112bbf5e72 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -59,7 +59,7 @@ Difficulty: Hard
ranged_cooldown_time = 40
aggro_vision_range = 21 //so it can see to one side of the arena to the other
loot = list(/obj/item/hierophant_club)
- crusher_loot = list(/obj/item/hierophant_club, /obj/item/crusher_trophy/vortex_talisman)
+ //mob_trophy = /obj/item/mob_trophy/vortex_talisman
wander = FALSE
gps_name = "Zealous Signal"
achievement_type = /datum/award/achievement/boss/hierophant_kill
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 120b850cf428..37934c0367e5 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -28,7 +28,7 @@
layer = LARGE_MOB_LAYER //Looks weird with them slipping under mineral walls and cameras and shit otherwise
mouse_opacity = MOUSE_OPACITY_OPAQUE // Easier to click on in melee, they're giant targets anyway
flags_1 = PREVENT_CONTENTS_EXPLOSION_1
- var/list/crusher_loot
+ var/mob_trophy
var/achievement_type
var/crusher_achievement_type
var/score_achievement_type
@@ -71,10 +71,10 @@
if(health > 0)
return
else
- var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
+ spawn_mob_trophy()
+ var/datum/status_effect/crusher_damage/crusher = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
var/crusher_kill = FALSE
- if(C && crusher_loot && C.total_damage >= maxHealth * 0.6)
- spawn_crusher_loot()
+ if(crusher && mob_trophy && crusher.total_damage >= maxHealth * 0.6)
crusher_kill = TRUE
if(true_spawn && !(flags_1 & ADMIN_SPAWNED_1))
var/tab = "megafauna_kills"
@@ -85,8 +85,8 @@
SSblackbox.record_feedback("tally", tab, 1, "[initial(name)]")
..()
-/mob/living/simple_animal/hostile/megafauna/proc/spawn_crusher_loot()
- loot = crusher_loot
+/mob/living/simple_animal/hostile/megafauna/proc/spawn_mob_trophy()
+ loot += mob_trophy
/mob/living/simple_animal/hostile/megafauna/gib()
if(health > 0)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
index a2cceb5a3aaa..0c13b9d67f16 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
@@ -39,7 +39,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
for(var/t in swarmerTypes)
. += GLOB.AISwarmerCapsByType[t]
-
+//this should. not be a simple mob i think
/mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon
name = "swarmer beacon"
desc = "That name is a bit of a mouthful, but stop paying attention to your mouth they're eating everything!"
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index 59a58bd48d16..095ad0f8fca2 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -32,7 +32,7 @@ Difficulty: Hard
loot = list()
butcher_results = list()
guaranteed_butcher_results = list(/obj/item/wendigo_blood = 1)
- crusher_loot = list(/obj/item/crusher_trophy/demon_claws)
+ //mob_trophy = /obj/item/mob_trophy/demon_claws
wander = FALSE
del_on_death = FALSE
blood_volume = BLOOD_VOLUME_NORMAL
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
index eb8302536e50..d10b9b86fb9b 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm
@@ -230,7 +230,7 @@
movement_type = FLYING
robust_searching = 1
attack_same = TRUE // So we'll fight basilisks
- crusher_loot = /obj/item/crusher_trophy/watcher_wing
+ //mob_trophy = /obj/item/mob_trophy/watcher_wing
gold_core_spawnable = NO_SPAWN
loot = list()
butcher_results = list(/obj/item/stack/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1)
@@ -294,8 +294,8 @@
light_power = 2.5
light_color = LIGHT_COLOR_LAVA
projectiletype = /obj/projectile/temp/basilisk/magmawing
- crusher_loot = /obj/item/crusher_trophy/magma_wing
- crusher_drop_mod = 75
+ //mob_trophy = /obj/item/mob_trophy/magma_wing
+ trophy_drop_mod = 75
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing
name = "icewing watcher"
@@ -309,8 +309,8 @@
ranged_cooldown_time = 20
projectiletype = /obj/projectile/temp/basilisk/icewing
butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) //No sinew; the wings are too fragile to be usable
- crusher_loot = /obj/item/crusher_trophy/ice_wing
- crusher_drop_mod = 75
+ //mob_trophy = /obj/item/mob_trophy/ice_wing
+ trophy_drop_mod = 75
/obj/projectile/temp/basilisk/magmawing
name = "scorching blast"
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm
index 1d9f6e174660..815bfca00028 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm
@@ -37,7 +37,7 @@
light_color = LIGHT_COLOR_BLOOD_MAGIC
light_power = 5
light_range = 1.4
- crusher_loot = /obj/item/crusher_trophy/brimdemon_fang
+ //mob_trophy = /obj/item/mob_trophy/brimdemon_fang
/// Are we charging/firing? If yes stops our movement.
var/firing = FALSE
/// A list of all the beam parts.
@@ -184,22 +184,6 @@
hit_mob.adjustFireLoss(5)
to_chat(hit_mob, span_danger("You're damaged by [src]!"))
-/obj/item/crusher_trophy/brimdemon_fang
- name = "brimdemon's fang"
- icon_state = "brimdemon_fang"
- desc = "A fang from a brimdemon's corpse."
- denied_type = /obj/item/crusher_trophy/brimdemon_fang
- var/static/list/comic_phrases = list("BOOM", "BANG", "KABLOW", "KAPOW", "OUCH", "BAM", "KAPOW", "WHAM", "POW", "KABOOM")
- var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
-
-/obj/item/crusher_trophy/brimdemon_fang/effect_desc()
- return "mark detonation creates audiosensory effects on the target and slightly heals the wielder"
-
-/obj/item/crusher_trophy/brimdemon_fang/on_mark_detonation(mob/living/target, mob/living/user)
- target.balloon_alert_to_viewers("[pick(comic_phrases)]!")
- playsound(target, 'sound/creatures/brimdemon_crush.ogg', 100)
- user.heal_ordered_damage(bonus_value * 0.4, damage_heal_order)
-
/obj/effect/decal/cleanable/brimdust
name = "brimdust"
desc = "Dust from a brimdemon. It is considered valuable for botanical and heating purposes."
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
index 7e2b1c3d990c..cb7eaad0e988 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
@@ -43,7 +43,7 @@
mob_biotypes = MOB_ORGANIC|MOB_BEAST
mouse_opacity = MOUSE_OPACITY_ICON
deathmessage = "explodes into gore!"
- loot_drop = /obj/item/crusher_trophy/broodmother_tongue
+ //loot_drop = /obj/item/mob_trophy/broodmother_tongue
attack_action_types = list(/datum/action/innate/elite_attack/tentacle_patch,
/datum/action/innate/elite_attack/spawn_children,
@@ -246,22 +246,6 @@
T = get_step(T, i)
new /obj/effect/temp_visual/goliath_tentacle/broodmother(T, spawner)
-// Broodmother's loot: Broodmother Tongue
-/obj/item/crusher_trophy/broodmother_tongue
- name = "broodmother tongue"
- desc = "The tongue of a broodmother. If attached a certain way, makes for a suitable crusher trophy."
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
- icon_state = "broodmother_tongue"
- denied_type = /obj/item/crusher_trophy/broodmother_tongue
- bonus_value = 35
-
-/obj/item/crusher_trophy/broodmother_tongue/effect_desc()
- return "waveform collapse to have a [bonus_value]% chance to summon a patch of goliath tentacles at the target's location"
-
-/obj/item/crusher_trophy/broodmother_tongue/on_mark_detonation(mob/living/target, mob/living/user)
- if(rand(1, 100) <= bonus_value && target.stat != DEAD)
- new /obj/effect/temp_visual/goliath_tentacle/broodmother/patch(get_turf(target), user)
-
/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/rockplanet
name = "baby gruboid"
desc = "A young gruboid recently born. As a defense mechanism, they violently explode if killed."
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
index f0b6dc3e8d54..e6ea404aca09 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
@@ -38,7 +38,7 @@
mouse_opacity = MOUSE_OPACITY_ICON
deathsound = 'sound/magic/curse.ogg'
deathmessage = "'s arms reach out before it falls apart onto the floor, lifeless."
- loot_drop = /obj/item/crusher_trophy/legionnaire_spine
+ loot_drop = /obj/item/mob_trophy/legionnaire_spine
attack_action_types = list(/datum/action/innate/elite_attack/legionnaire_charge,
/datum/action/innate/elite_attack/head_detach,
@@ -278,23 +278,8 @@
transform *= 0.33
// Legionnaire's loot: Legionnaire Spine
-
-/obj/item/crusher_trophy/legionnaire_spine
+/obj/item/mob_trophy/legionnaire_spine
name = "legionnaire spine"
desc = "The spine of a legionnaire. It almost feels like it's moving..."
icon = 'icons/obj/lavaland/elite_trophies.dmi'
icon_state = "legionnaire_spine"
- denied_type = /obj/item/crusher_trophy/legionnaire_spine
- bonus_value = 50//These skulls are a joke, so this bonus value had to be put on steroidal emergency treatment
-
-/obj/item/crusher_trophy/legionnaire_spine/effect_desc()
- return "waveform collapse to have a [bonus_value]% chance to summon a loyal legion skull"
-
-/obj/item/crusher_trophy/legionnaire_spine/on_mark_detonation(mob/living/target, mob/living/user)
- if(!rand(1, 100) <= bonus_value || target.stat == DEAD)
- return
- var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion(user.loc)
- A.flags_1 |= (flags_1 & ADMIN_SPAWNED_1)
- A.GiveTarget(target)
- A.friends = user
- A.faction = user.faction.Copy()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
index ce3850d22f01..d8aedc292ca0 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
@@ -147,7 +147,7 @@
icon_dead = "goliath_dead"
throw_message = "does nothing to the tough hide of the"
pre_attack_icon = "goliath_preattack"
- crusher_loot = /obj/item/crusher_trophy/goliath_tentacle
+ //mob_trophy = /obj/item/mob_trophy/goliath_tentacle
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/goliath = 2, /obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/ore/silver = 10)
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2)
loot = list()
@@ -249,11 +249,11 @@
maxHealth = 180
health = 180
speed = 4
- crusher_loot = /obj/item/crusher_trophy/elder_tentacle
+ //mob_trophy = /obj/item/mob_trophy/elder_tentacle
pre_attack_icon = "ancient_goliath_preattack"
throw_message = "does nothing to the rocky hide of the"
guaranteed_butcher_results = list()
- crusher_drop_mod = 75
+ trophy_drop_mod = 75
wander = FALSE
bonus_tame_chance = 10
var/list/cached_tentacle_turfs
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index 6e6c521fe445..d637b19a2a08 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -50,8 +50,8 @@
OpenFire()
return TRUE
-/mob/living/simple_animal/hostile/asteroid/hivelord/spawn_crusher_loot()
- loot += crusher_loot //we don't butcher
+/mob/living/simple_animal/hostile/asteroid/hivelord/spawn_mob_trophy()
+ loot += mob_trophy //we don't butcher
/mob/living/simple_animal/hostile/asteroid/hivelord/death(gibbed)
mouse_opacity = MOUSE_OPACITY_ICON
@@ -119,7 +119,7 @@
throw_message = "bounces harmlessly off of"
loot = list(/obj/item/organ/regenerative_core/legion)
brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion
- crusher_loot = /obj/item/crusher_trophy/legion_skull
+ mob_trophy = /obj/item/mob_trophy/legion_skull
del_on_death = 1
stat_attack = HARD_CRIT
robust_searching = 1
@@ -131,7 +131,7 @@
move_resist = MOVE_RESIST_DEFAULT
pull_force = PULL_FORCE_DEFAULT
if(prob(15))
- new /obj/item/crusher_trophy/legion_skull(loc)
+ new /obj/item/mob_trophy/legion_skull(loc)
visible_message("One of the [src]'s skulls looks intact.")
..()
@@ -150,7 +150,7 @@
icon_living = "dwarf_legion"
icon_aggro = "dwarf_legion"
icon_dead = "dwarf_legion"
- crusher_loot = /obj/item/crusher_trophy/dwarf_skull
+ //mob_trophy = /obj/item/mob_trophy/dwarf_skull
maxHealth = 150
health = 150
move_to_delay = 2
@@ -182,9 +182,6 @@
move_force = MOVE_FORCE_DEFAULT
move_resist = MOVE_RESIST_DEFAULT
pull_force = PULL_FORCE_DEFAULT
- if(prob(75))
- new /obj/item/crusher_trophy/dwarf_skull(loc)
- visible_message("One of the [src]'s skulls looks like it survived.")
..()
//Legion skull
@@ -334,7 +331,7 @@
icon_living = "snowlegion"
icon_aggro = "snowlegion_alive"
icon_dead = "snowlegion"
- crusher_loot = /obj/item/crusher_trophy/legion_skull
+ mob_trophy = /obj/item/mob_trophy/legion_skull
loot = list(/obj/item/organ/regenerative_core/legion)
brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/snow
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm
index 2315f6e61a4f..786cdaa80966 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm
@@ -74,8 +74,6 @@
new /obj/item/assembly/signaler/anomaly/bluespace(loc)
if(prob(5))
new /obj/item/gem/fdiamond(loc)
- if(prob(10))
- new /obj/item/crusher_trophy/ice_wing(loc)
return ..()
/mob/living/simple_animal/hostile/asteroid/old_demon
@@ -122,7 +120,7 @@
footstep_type = FOOTSTEP_MOB_CLAW
/// Distance the demon will teleport from the target
var/teleport_distance = 3
- crusher_drop_mod = 75
+ trophy_drop_mod = 75
/obj/projectile/temp/basilisk/ice
name = "ice blast"
@@ -157,8 +155,6 @@
new /obj/item/assembly/signaler/anomaly/bluespace(loc)
if(prob(20))
new /obj/item/gem/fdiamond(loc)
- if(prob(50))
- new /obj/item/crusher_trophy/ice_crystal(loc)
return ..()
/mob/living/simple_animal/hostile/asteroid/ice_demon/random/Initialize()
@@ -166,49 +162,3 @@
if(prob(15))
new /mob/living/simple_animal/hostile/asteroid/old_demon(loc)
return INITIALIZE_HINT_QDEL
-
-/obj/item/crusher_trophy/ice_crystal
- name = "frost gem"
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
- desc = "The glowing remnant of an ancient ice demon- so cold that it hurts to touch."
- icon_state = "ice_crystal"
- denied_type = /obj/item/crusher_trophy/ice_crystal
-
-/obj/item/crusher_trophy/ice_crystal/effect_desc()
- return "waveform collapse to freeze a creature in a block of ice for a period, preventing them from moving"
-
-/obj/item/crusher_trophy/ice_crystal/on_mark_detonation(mob/living/target, mob/living/user)
- target.apply_status_effect(/datum/status_effect/ice_crystal)
-
-/datum/status_effect/ice_crystal
- id = "ice_crystal"
- duration = 20
- status_type = STATUS_EFFECT_REFRESH
- alert_type = /atom/movable/screen/alert/status_effect/ice_crystal
- /// Stored icon overlay for the hit mob, removed when effect is removed
- var/icon/cube
-
-/atom/movable/screen/alert/status_effect/ice_crystal
- name = "Frozen Solid"
- desc = "You're frozen inside an ice cube, and cannot move!"
- icon_state = "frozen"
-
-/datum/status_effect/ice_crystal/on_apply()
- RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(owner_moved))
- if(!owner.stat)
- to_chat(owner, "You become frozen in a cube!")
- cube = icon('icons/effects/freeze.dmi', "ice_cube")
- var/icon/size_check = icon(owner.icon, owner.icon_state)
- cube.Scale(size_check.Width(), size_check.Height())
- owner.add_overlay(cube)
- return ..()
-
-/// Blocks movement from the status effect owner
-/datum/status_effect/ice_crystal/proc/owner_moved()
- return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
-
-/datum/status_effect/ice_crystal/on_remove()
- if(!owner.stat)
- to_chat(owner, "The cube melts!")
- owner.cut_overlay(cube)
- UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice whelp.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice whelp.dm
index ceef301b2349..7a4d8cb234c2 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice whelp.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice whelp.dm
@@ -28,7 +28,7 @@
move_resist = MOVE_FORCE_VERY_STRONG
butcher_results = list(/obj/item/stack/ore/diamond = 3, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 10, /obj/item/stack/sheet/animalhide/ashdrake = 1)
loot = list()
- crusher_loot = /obj/item/crusher_trophy/tail_spike
+ //mob_trophy = /obj/item/mob_trophy/tail_spike
deathmessage = "collapses on its side."
deathsound = 'sound/magic/demon_dies.ogg'
stat_attack = HARD_CRIT
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm
index d95c21ec9bbb..074bda5cf91a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm
@@ -33,7 +33,7 @@
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/rawcrab = 2, /obj/item/stack/sheet/bone = 2)
robust_searching = TRUE
footstep_type = FOOTSTEP_MOB_CLAW
- crusher_loot = /obj/item/crusher_trophy/lobster_claw
+ //mob_trophy = /obj/item/mob_trophy/lobster_claw
/mob/living/simple_animal/hostile/asteroid/lobstrosity/beach
name = "tropical lobstrosity"
@@ -42,15 +42,3 @@
icon_living = "lobstrosity"
icon_dead = "lobstrosity_dead"
-/obj/item/crusher_trophy/lobster_claw
- name = "lobster claw"
- icon_state = "lobster_claw"
- desc = "A lobster claw."
- denied_type = /obj/item/crusher_trophy/lobster_claw
- bonus_value = 1
-
-/obj/item/crusher_trophy/lobster_claw/effect_desc()
- return "mark detonation to briefly stagger the target for [bonus_value] seconds"
-
-/obj/item/crusher_trophy/lobster_claw/on_mark_detonation(mob/living/target, mob/living/user)
- target.apply_status_effect(/datum/status_effect/stagger, bonus_value SECONDS)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm
index b66c71fd58b2..eaf546b3f627 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm
@@ -12,7 +12,7 @@
response_harm_simple = "strike"
status_flags = 0
a_intent = INTENT_HARM
- var/crusher_loot
+ var/mob_trophy
var/throw_message = "bounces off of"
var/throw_deflection = 20 //WS edit - Whitesands
var/fromtendril = FALSE
@@ -20,7 +20,7 @@
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
mob_size = MOB_SIZE_LARGE
var/icon_aggro = null
- var/crusher_drop_mod = 25
+ var/trophy_drop_mod = 25
var/datum/armor/armor //WS edit - Whitesands
/mob/living/simple_animal/hostile/asteroid/Initialize(mapload)
@@ -70,13 +70,12 @@
/mob/living/simple_animal/hostile/asteroid/death(gibbed)
SSblackbox.record_feedback("tally", "mobs_killed_mining", 1, type)
- var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING)
- if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 4 creatures before getting the item
- spawn_crusher_loot()
+ if(prob(trophy_drop_mod)) //on average, you'll need to kill 4 creatures before getting the item
+ spawn_mob_trophy()
..(gibbed)
-/mob/living/simple_animal/hostile/asteroid/proc/spawn_crusher_loot()
- butcher_results[crusher_loot] = 1
+/mob/living/simple_animal/hostile/asteroid/proc/spawn_mob_trophy()
+ butcher_results[mob_trophy] = 1
/mob/living/simple_animal/hostile/asteroid/handle_temperature_damage()
if(bodytemperature < minbodytemp)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
index f9d15892f75d..2bcb3fe06f9a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm
@@ -27,7 +27,7 @@
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/bear = 3, /obj/item/stack/sheet/bone = 2)
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 1)
loot = list()
- crusher_loot = /obj/item/crusher_trophy/bear_paw
+ //mob_trophy = /obj/item/mob_trophy/bear_paw
stat_attack = HARD_CRIT
robust_searching = TRUE
footstep_type = FOOTSTEP_MOB_CLAW
@@ -57,24 +57,6 @@
desc = "It seems sentient somehow."
faction = list("neutral")
-/obj/item/crusher_trophy/bear_paw
- name = "polar bear paw"
- desc = "It's a polar bear paw."
- icon_state = "bear_paw"
- icon ='icons/obj/lavaland/elite_trophies.dmi'
- denied_type = /obj/item/crusher_trophy/bear_paw
-
-/obj/item/crusher_trophy/bear_paw/effect_desc()
- return "doubled strikes when below 50% health"
-
-/obj/item/crusher_trophy/bear_paw/on_mark_detonation(mob/living/target, mob/living/user)
- if(user.health / user.maxHealth > 0.5)
- return
- var/obj/item/I = user.get_active_held_item()
- if(!I)
- return
- I.melee_attack_chain(user, target, null)
-
//elite bear
/mob/living/simple_animal/hostile/asteroid/polarbear/warrior
name = "polar warbear"
@@ -91,29 +73,11 @@
icon_state = "warbear"
icon_living = "warbear"
icon_dead = "warbear_dead"
- crusher_loot = /obj/item/crusher_trophy/war_paw
- crusher_drop_mod = 75
+ //mob_trophy = /obj/item/mob_trophy/war_paw
+ trophy_drop_mod = 75
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/bear = 3, /obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 3)
guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 3, /obj/item/bear_armor = 1)
-/obj/item/crusher_trophy/war_paw
- name = "Armored bear paw"
- desc = "It's a paw from a true warrior. Still remembers the basics of CQB."
- icon_state = "armor_paw"
- icon ='icons/obj/lavaland/elite_trophies.dmi'
- denied_type = /obj/item/crusher_trophy/war_paw
-
-/obj/item/crusher_trophy/war_paw/effect_desc()
- return "doubled strikes when below 70% health"
-
-/obj/item/crusher_trophy/war_paw/on_mark_detonation(mob/living/target, mob/living/user)
- if(user.health / user.maxHealth > 0.7)
- return
- var/obj/item/I = user.get_active_held_item()
- if(!I)
- return
- I.melee_attack_chain(user, target, null)
-
/mob/living/simple_animal/hostile/asteroid/polarbear/random/Initialize()
. = ..()
if(prob(15))
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm
index 7df8c04f0cf4..336616dfe110 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm
@@ -30,9 +30,9 @@
move_force = MOVE_FORCE_WEAK
move_resist = MOVE_FORCE_WEAK
pull_force = MOVE_FORCE_WEAK
- butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 2, /obj/item/stack/sheet/bone = 2, /obj/item/crusher_trophy/wolf_ear = 0.5)
+ butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 2, /obj/item/stack/sheet/bone = 2, /obj/item/mob_trophy/wolf_ear = 0.5)
loot = list()
- crusher_loot = /obj/item/crusher_trophy/wolf_ear
+ mob_trophy = /obj/item/mob_trophy/wolf_ear
stat_attack = HARD_CRIT
knockdown_time = 1 SECONDS
robust_searching = TRUE
@@ -108,23 +108,10 @@
move_resist = MOVE_RESIST_DEFAULT
pull_force = PULL_FORCE_DEFAULT
if(prob(15))
- new /obj/item/crusher_trophy/wolf_ear(loc)
+ new /obj/item/mob_trophy/wolf_ear(loc)
visible_message("You notice a damaged ear that might be salvagable.")
..()
-/obj/item/crusher_trophy/wolf_ear
- name = "wolf ear"
- desc = "The battered remains of a wolf's ear. You could attach it to a crusher, or use the fur to craft a trophy."
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
- icon_state = "torn_ear"
- denied_type = /obj/item/crusher_trophy/wolf_ear
-
-/obj/item/crusher_trophy/wolf_ear/effect_desc()
- return "waveform collapse to give the user a slight speed boost"
-
-/obj/item/crusher_trophy/wolf_ear/on_mark_detonation(mob/living/target, mob/living/user)
- user.apply_status_effect(/datum/status_effect/speed_boost, 3 SECONDS)
-
//alpha wolf- smaller chance to spawn, practically a miniboss. Has the ability to do a short, untelegraphed lunge with a stun. Be careful!
/mob/living/simple_animal/hostile/asteroid/wolf/alpha
name = "alpha wolf"
@@ -149,35 +136,12 @@
charge_frequency = 20 SECONDS
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 4, /obj/item/stack/sheet/sinew/wolf = 4, /obj/item/stack/sheet/bone = 5)
loot = list()
- crusher_loot = /obj/item/crusher_trophy/fang
+ mob_trophy = /obj/item/mob_trophy/fang
/mob/living/simple_animal/hostile/asteroid/wolf/alpha/gib()
move_force = MOVE_FORCE_DEFAULT
move_resist = MOVE_RESIST_DEFAULT
pull_force = PULL_FORCE_DEFAULT
- if(prob(75))
- new /obj/item/crusher_trophy/fang(loc)
- visible_message("You find an intact fang that looks salvagable.")
- ..()
-
-/obj/item/crusher_trophy/fang
- name = "battle-stained fang"
- desc = "A wolf fang, displaying the wear and tear associated with a long and colorful life. Could be attached to a kinetic crusher or used to make a trophy."
- icon = 'icons/obj/lavaland/elite_trophies.dmi'
- icon_state = "fang"
- denied_type = /obj/item/crusher_trophy/fang
- var/bleed_stacks_per_hit = 5
-
-/obj/item/crusher_trophy/fang/effect_desc()
- return "waveform collapse to build up a small stack of bleeding, causing a burst of damage if applied repeatedly."
-
-/obj/item/crusher_trophy/fang/on_mark_detonation(mob/living/M, mob/living/user)
- if(istype(M) && (M.mob_biotypes & MOB_ORGANIC))
- var/datum/status_effect/stacking/saw_bleed/bloodletting/B = M.has_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting)
- if(!B)
- M.apply_status_effect(/datum/status_effect/stacking/saw_bleed/bloodletting, bleed_stacks_per_hit)
- else
- B.add_stacks(bleed_stacks_per_hit)
/mob/living/simple_animal/hostile/asteroid/wolf/random/Initialize()
. = ..()
diff --git a/shiptest.dme b/shiptest.dme
index 4226d6068494..b8df46bc4017 100644
--- a/shiptest.dme
+++ b/shiptest.dme
@@ -2421,6 +2421,7 @@
#include "code\modules\mining\equipment\regenerative_core.dm"
#include "code\modules\mining\equipment\resonator.dm"
#include "code\modules\mining\equipment\survival_pod.dm"
+#include "code\modules\mining\equipment\trophies.dm"
#include "code\modules\mining\equipment\wormhole_jaunter.dm"
#include "code\modules\mining\laborcamp\laborstacker.dm"
#include "code\modules\mining\lavaland\ash_flora.dm"