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"