From 8d8113cd9e20d8fcff6dbbb2ec6558d0bda0b2ef Mon Sep 17 00:00:00 2001 From: Majkl-J <49160555+Majkl-J@users.noreply.github.com> Date: Wed, 26 Feb 2025 00:19:25 -0800 Subject: [PATCH] Removes the skyrat crusher overrides for the sake of code stability and because nobody's maintaining it --- code/datums/components/style/style.dm | 10 - code/datums/status_effects/debuffs/debuffs.dm | 5 - .../kinetic_crusher/kinetic_crusher.dm | 5 +- .../kinetic_crusher_trophies.dm | 3 - .../hostile/megafauna/_megafauna.dm | 6 - .../code/datums/actions/items/toggles.dm | 2 - .../code/datums/components/crusher.dm | 224 --------------- .../datums/status_effects/debuffs/debuffs.dm | 36 --- .../orders/order_items/mining/order_mining.dm | 3 - .../mining/equipment/kinetic_crusher.dm | 232 --------------- .../mining/equipment/kinetic_gauntlets.dm | 265 ------------------ .../living/basic/lavaland/watcher/watcher.dm | 3 - .../code/modules/movespeed/modifiers/items.dm | 2 - tgstation.dme | 8 - 14 files changed, 1 insertion(+), 803 deletions(-) delete mode 100644 modular_skyrat/master_files/code/datums/actions/items/toggles.dm delete mode 100644 modular_skyrat/master_files/code/datums/components/crusher.dm delete mode 100644 modular_skyrat/master_files/code/datums/status_effects/debuffs/debuffs.dm delete mode 100644 modular_skyrat/master_files/code/game/machinery/computer/orders/order_items/mining/order_mining.dm delete mode 100644 modular_skyrat/master_files/code/modules/mining/equipment/kinetic_crusher.dm delete mode 100644 modular_skyrat/master_files/code/modules/mining/equipment/kinetic_gauntlets.dm delete mode 100644 modular_skyrat/master_files/code/modules/mob/living/basic/lavaland/watcher/watcher.dm delete mode 100644 modular_skyrat/master_files/code/modules/movespeed/modifiers/items.dm diff --git a/code/datums/components/style/style.dm b/code/datums/components/style/style.dm index 2d60d27ebb8..364db24212f 100644 --- a/code/datums/components/style/style.dm +++ b/code/datums/components/style/style.dm @@ -391,23 +391,13 @@ add_action(ACTION_GIBTONITE_DEFUSED, min(40, 20 * (10 - det_time))) // 40 to 180 points depending on speed -//SKYRAT EDIT START -/* /datum/component/style/proc/on_crusher_detonate(datum/source, mob/living/target, obj/item/kinetic_crusher/crusher, backstabbed) -*/ -/datum/component/style/proc/on_crusher_detonate(datum/component/kinetic_crusher/source, mob/living/target, obj/item/kinetic_crusher/crusher, backstabbed) -//SKYRAT EDIT END SIGNAL_HANDLER if(target.stat == DEAD) return - //SKYRAT EDIT START - /* var/has_brimdemon_trophy = locate(/obj/item/crusher_trophy/brimdemon_fang) in crusher.trophies - */ - var/has_brimdemon_trophy = locate(/obj/item/crusher_trophy/brimdemon_fang) in source.stored_trophies - //SKYRAT EDIT END add_action(ACTION_MARK_DETONATED, round((backstabbed ? 60 : 30) * (ismegafauna(target) ? 1.5 : 1) * (has_brimdemon_trophy ? 1.25 : 1))) diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index dcd565376f4..de9e1bfa5ea 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -347,8 +347,6 @@ if(owner.reagents) owner.reagents.del_reagent(/datum/reagent/water/holywater) //can't be deconverted -//SKYRAT EDIT START - OVERRIDEN IN MODULAR -/* /datum/status_effect/crusher_mark id = "crusher_mark" duration = 300 //if you leave for 30 seconds you lose the mark, deal with it @@ -390,9 +388,6 @@ QDEL_NULL(marked_underlay) return ..() -*/ -//SKYRAT EDIT END - // Object used to apply a underlay to the mob that gets this status applied /obj/effect/abstract/crusher_mark name = "Crusher mark underlay" diff --git a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm index c50e39af38d..7f9fa57e145 100644 --- a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher.dm @@ -1,4 +1,3 @@ -/* SKYRAT EDIT START - OVERRIDEN IN modular_skyrat/master_files/code/modules/mining/equipment/kinetic_crusher.dm /** * Kinetic Crusher * @@ -269,7 +268,6 @@ /obj/item/kinetic_crusher/compact //for admins name = "compact kinetic crusher" w_class = WEIGHT_CLASS_NORMAL -*/ // SKYRAT EDIT END //destablizing force /obj/projectile/destabilizer @@ -327,7 +325,6 @@ // If there is a mind, check for skill modifier to allow them to reload faster. if(carbon_firer.mind && used_crusher) skill_modifier = carbon_firer.mind.get_skill_modifier(/datum/skill/mining, SKILL_SPEED_MODIFIER) - // BUBBER TODO - Fix this - //used_crusher.attempt_recharge_projectile(used_crusher.charge_time * skill_modifier) //If you hit a mineral, you might get a quicker reload. epic gamer style. + used_crusher.attempt_recharge_projectile(used_crusher.charge_time * skill_modifier) //If you hit a mineral, you might get a quicker reload. epic gamer style. return ..() diff --git a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm index 8840d661ab1..be8530a678d 100644 --- a/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm +++ b/code/modules/mining/equipment/kinetic_crusher/kinetic_crusher_trophies.dm @@ -28,8 +28,6 @@ return ..() add_to(attacking_item, user) -// SKYRAT EDIT BEGIN - Moved to modular // BUBBER TODO - Fix the override hell -/* /// Tries to add the trophy to our crusher /obj/item/crusher_trophy/proc/add_to(obj/item/kinetic_crusher/crusher, mob/living/user) for(var/obj/item/crusher_trophy/trophy as anything in crusher.trophies) @@ -46,7 +44,6 @@ /obj/item/crusher_trophy/proc/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user) forceMove(get_turf(crusher)) return TRUE -*/ // SKYRAT EDIT END /// Does an effect when you hit a mob with a crusher /obj/item/crusher_trophy/proc/on_melee_hit(mob/living/target, mob/living/user) //the target and the user 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 57de6d87885..232d7e50836 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/_megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/_megafauna.dm @@ -221,13 +221,7 @@ L.add_mob_memory(/datum/memory/megafauna_slayer, antagonist = src) L.client.give_award(/datum/award/achievement/boss/boss_killer, L) L.client.give_award(achievement_type, L) - //SKYRAT EDIT START - /* if(crusher_kill && istype(L.get_active_held_item(), /obj/item/kinetic_crusher)) - */ - var/obj/item/held_item = L.get_active_held_item() - if(crusher_kill && (istype(held_item, /obj/item/kinetic_gauntlet) || held_item.GetComponent(/datum/component/kinetic_crusher))) //trust me, i hate this just as much as you - //SKYRAT EDIT END L.client.give_award(crusher_achievement_type, L) L.client.give_award(/datum/award/score/boss_score, L) //Score progression for bosses killed in general L.client.give_award(score_achievement_type, L) //Score progression for specific boss killed diff --git a/modular_skyrat/master_files/code/datums/actions/items/toggles.dm b/modular_skyrat/master_files/code/datums/actions/items/toggles.dm deleted file mode 100644 index b4abac4a260..00000000000 --- a/modular_skyrat/master_files/code/datums/actions/items/toggles.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/action/item_action/extend_gauntlets - name = "Extend Gauntlets" diff --git a/modular_skyrat/master_files/code/datums/components/crusher.dm b/modular_skyrat/master_files/code/datums/components/crusher.dm deleted file mode 100644 index 4a23f95a6ea..00000000000 --- a/modular_skyrat/master_files/code/datums/components/crusher.dm +++ /dev/null @@ -1,224 +0,0 @@ -/datum/component/kinetic_crusher - /// The attached trophies. - var/list/stored_trophies = list() - /// How much damage to deal on mark detonation? - var/detonation_damage - /// How much EXTRA damage to deal on a backstab? - var/backstab_bonus - /// Does what you think it does. - var/recharge_speed - /// Callback to check against for most actions. - var/datum/callback/attack_check - /// Callback to check against for mark detonation. - var/datum/callback/detonate_check - /// Callback to execute after a successful mark detonation. - var/datum/callback/after_detonate - - /// Are we ready to shoot another destabilizer shot? - var/charged = TRUE - /// COMSIG_ITEM_ATTACK procs before the damage is applied. Egh. - var/cached_health = null - -/datum/component/kinetic_crusher/Initialize(detonation_damage, backstab_bonus, recharge_speed, datum/callback/attack_check, datum/callback/detonate_check, datum/callback/after_detonate) - if(!isitem(parent)) - return COMPONENT_INCOMPATIBLE - - src.detonation_damage = detonation_damage - src.backstab_bonus = backstab_bonus - src.recharge_speed = recharge_speed - - src.attack_check = attack_check - src.detonate_check = detonate_check - src.after_detonate = after_detonate - -/datum/component/kinetic_crusher/RegisterWithParent(datum/parent = src.parent) - RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) - RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlays)) - RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(on_attackby)) - - RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SECONDARY, PROC_REF(on_attack_secondary)) - RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(on_afterattack)) - RegisterSignal(parent, COMSIG_ITEM_INTERACTING_WITH_ATOM, PROC_REF(on_interact)) - RegisterSignal(parent, COMSIG_ITEM_INTERACTING_WITH_ATOM_SECONDARY, PROC_REF(on_interact_secondary)) - RegisterSignal(parent, COMSIG_RANGED_ITEM_INTERACTING_WITH_ATOM_SECONDARY, PROC_REF(on_interact_secondary)) - -/datum/component/kinetic_crusher/Destroy(force) - QDEL_LIST(stored_trophies) //dont be a dummy - attack_check = null - detonate_check = null - after_detonate = null - return ..() - -/datum/component/kinetic_crusher/proc/on_examine(obj/item/source, mob/user, list/examine_list) - SIGNAL_HANDLER - - var/force - var/datum/component/two_handed/comp = source.GetComponent(/datum/component/two_handed) - if(istype(source, /obj/item/clothing/gloves/kinetic_gauntlets)) //ughhhhh - var/obj/item/clothing/gloves/kinetic_gauntlets/gauntlets = parent - force = gauntlets.right_gauntlet?.force || gauntlets.left_gauntlet.force - else if(comp) - force = comp.force_wielded - else - force = source.force - - examine_list += span_notice("Mark a large creature with a destabilizing force with right-click, then hit them in melee to do [force + detonation_damage] damage.") - examine_list += span_notice("Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage].") - for(var/obj/item/crusher_trophy/trophy as anything in stored_trophies) - examine_list += span_notice("It has \a [trophy] attached, which causes [trophy.effect_desc()].") - -/datum/component/kinetic_crusher/proc/on_update_overlays(atom/source, list/overlays) - SIGNAL_HANDLER - - if(!charged) - overlays += "[source.icon_state]_uncharged" - -/datum/component/kinetic_crusher/proc/on_attackby(datum/source, obj/item/attacking_item, mob/user, params) - SIGNAL_HANDLER - - if(attacking_item.tool_behaviour == TOOL_CROWBAR) - if(!LAZYLEN(stored_trophies)) - to_chat(user, span_warning("There are no trophies on [source].")) - return COMPONENT_NO_AFTERATTACK - - to_chat(user, span_notice("You remove [source]'s trophies.")) - attacking_item.play_tool_sound(src) - for(var/obj/item/crusher_trophy/trophy as anything in stored_trophies) - trophy.remove_from(parent, user, src) - - if(istype(parent, /obj/item/clothing/gloves/kinetic_gauntlets)) - var/obj/item/clothing/gloves/kinetic_gauntlets/gauntlets = parent //CODE DEBT CODE DEBT WOOOOO - gauntlets.left_gauntlet?.force = gauntlets.force * 5 - gauntlets.right_gauntlet?.force = gauntlets.force * 5 - - return COMPONENT_NO_AFTERATTACK - - if(istype(attacking_item, /obj/item/crusher_trophy)) - var/obj/item/crusher_trophy/trophy = attacking_item - trophy.add_to(parent, user, src) - return COMPONENT_NO_AFTERATTACK - -/datum/component/kinetic_crusher/proc/on_trophy_moved(obj/item/crusher_trophy/source, atom/oldloc, direction) - SIGNAL_HANDLER - - source.remove_from(parent, null, src) - -/datum/component/kinetic_crusher/proc/on_attack(obj/item/source, mob/living/target, mob/living/carbon/user) - SIGNAL_HANDLER - - cached_health = target.health - - var/cancel_attack = NONE - if(attack_check && !attack_check.Invoke(user, &cancel_attack)) - return cancel_attack - - if(!target.has_status_effect(/datum/status_effect/crusher_damage)) - target.apply_status_effect(/datum/status_effect/crusher_damage) - - for(var/obj/item/crusher_trophy/trophy as anything in stored_trophies) - trophy.on_melee_hit(target, user) - - -/datum/component/kinetic_crusher/proc/on_attack_secondary(obj/item/source, mob/living/victim, mob/living/user, params) - SIGNAL_HANDLER - - var/cancel_attack = NONE - if(attack_check && !attack_check.Invoke(user, &cancel_attack)) - return cancel_attack - - return COMPONENT_SECONDARY_CONTINUE_ATTACK_CHAIN - -/datum/component/kinetic_crusher/proc/on_afterattack(obj/item/source, mob/living/target, mob/living/user, click_parameters) - SIGNAL_HANDLER - - if(!isliving(target)) - return - - var/datum/status_effect/crusher_damage/damage_effect = target.has_status_effect(/datum/status_effect/crusher_damage) || target.apply_status_effect(/datum/status_effect/crusher_damage) - if(damage_effect && isnum(cached_health)) //legiooooons - damage_effect.total_damage += cached_health - target.health //carry over from the /on_attack() - cached_health = null - - if(detonate_check && !detonate_check.Invoke(user)) - return - - if(!target.remove_status_effect(/datum/status_effect/crusher_mark, src)) - return - - var/backstabbed = FALSE - var/dealt_damage = detonation_damage - if(target.dir & get_dir(user, target)) - backstabbed = TRUE - dealt_damage += backstab_bonus - playsound(user, 'sound/items/weapons/kinetic_accel.ogg', 100, TRUE) - - damage_effect.total_damage += dealt_damage - new /obj/effect/temp_visual/kinetic_blast(get_turf(target)) - - var/past_damage = target.maxHealth - target.health - for(var/obj/item/crusher_trophy/trophy as anything in stored_trophies) - trophy.on_mark_detonation(target, user) - - damage_effect.total_damage += dealt_damage + target.get_total_damage() - past_damage //we did some damage, but let's not assume how much we did - - after_detonate?.InvokeAsync(user, target) - SEND_SIGNAL(user, COMSIG_LIVING_CRUSHER_DETONATE, target, parent, backstabbed) - target.apply_damage(dealt_damage, BRUTE, blocked = target.getarmor(type = BOMB)) - - -/datum/component/kinetic_crusher/proc/on_interact(obj/item/source, mob/living/user, atom/target, modifiers) - SIGNAL_HANDLER - - if(!istype(target, /obj/item/crusher_trophy)) - return - - . = ITEM_INTERACT_SUCCESS - var/obj/item/crusher_trophy/trophy = target - trophy.add_to(parent, user, src) - - if(istype(parent, /obj/item/clothing/gloves/kinetic_gauntlets)) - var/obj/item/clothing/gloves/kinetic_gauntlets/gauntlets = parent //CODE DEBT CODE DEBT WOOOOO - gauntlets.left_gauntlet?.force = gauntlets.force * 5 - gauntlets.right_gauntlet?.force = gauntlets.force * 5 - -/datum/component/kinetic_crusher/proc/on_interact_secondary(obj/item/source, mob/living/user, atom/target, list/modifiers) - SIGNAL_HANDLER - - var/_ = TRUE - if(attack_check && _ /*unused var error*/&& !attack_check.Invoke(user, &_)) - return - - if(!charged) - return - - var/turf/proj_turf = user.loc - if(!isturf(proj_turf)) - return - - var/obj/projectile/destabilizer/destabilizer = new(proj_turf) - for(var/obj/item/crusher_trophy/attached_trophy as anything in stored_trophies) - attached_trophy.on_projectile_fire(destabilizer, user) - - destabilizer.aim_projectile(target, user, modifiers) - destabilizer.hammer_synced = src - destabilizer.firer = user - - // just typing spawn(-1) is faster ugghhh tg - INVOKE_ASYNC(destabilizer, TYPE_PROC_REF(/obj/projectile, fire)) - playsound(user, 'sound/items/weapons/plasma_cutter.ogg', 100, TRUE) - - var/obj/item/crusher = parent - charged = FALSE - crusher.update_appearance() - addtimer(CALLBACK(src, PROC_REF(recharge_shot)), recharge_speed) - return ITEM_INTERACT_SUCCESS - - - -/datum/component/kinetic_crusher/proc/recharge_shot() - var/obj/item/crusher = parent - charged = TRUE - crusher.update_appearance() - playsound(crusher.loc, 'sound/items/weapons/kinetic_reload.ogg', 60, TRUE) - diff --git a/modular_skyrat/master_files/code/datums/status_effects/debuffs/debuffs.dm b/modular_skyrat/master_files/code/datums/status_effects/debuffs/debuffs.dm deleted file mode 100644 index 5dcbba23467..00000000000 --- a/modular_skyrat/master_files/code/datums/status_effects/debuffs/debuffs.dm +++ /dev/null @@ -1,36 +0,0 @@ -/datum/status_effect/crusher_mark - id = "crusher_mark" - duration = 300 //if you leave for 30 seconds you lose the mark, deal with it - status_type = STATUS_EFFECT_MULTIPLE - alert_type = null - var/mutable_appearance/marked_underlay - var/datum/component/kinetic_crusher/hammer_synced - -/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/kinetic_crusher/new_hammer_synced) - hammer_synced = new_hammer_synced - return ..() - -/datum/status_effect/crusher_mark/on_apply() - if(owner.mob_size >= MOB_SIZE_LARGE && !HAS_TRAIT(owner, TRAIT_CRUSHER_MARK_IMMUNE)) - marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2") - marked_underlay.pixel_x = -owner.pixel_x - marked_underlay.pixel_y = -owner.pixel_y - - var/obj/item/crusher_trophy/watcher_eye/eye = locate() in hammer_synced.stored_trophies - if(eye) //we must do this here as adding (and deleting!) to atom.underlays works by value, not reference - marked_underlay.icon_state = "shield-grey" - marked_underlay.color = eye.used_color - - owner.underlays += marked_underlay - return TRUE - return FALSE - -/datum/status_effect/crusher_mark/Destroy() - hammer_synced = null - owner?.underlays -= marked_underlay - QDEL_NULL(marked_underlay) - return ..() - -//we will only clear ourselves if the crusher is the one that owns us. -/datum/status_effect/crusher_mark/before_remove(datum/component/kinetic_crusher/attacking_hammer) - return (attacking_hammer == hammer_synced) diff --git a/modular_skyrat/master_files/code/game/machinery/computer/orders/order_items/mining/order_mining.dm b/modular_skyrat/master_files/code/game/machinery/computer/orders/order_items/mining/order_mining.dm deleted file mode 100644 index 6fdbb80ad77..00000000000 --- a/modular_skyrat/master_files/code/game/machinery/computer/orders/order_items/mining/order_mining.dm +++ /dev/null @@ -1,3 +0,0 @@ -/datum/orderable_item/mining/kinetic_gauntlets - purchase_path = /obj/item/clothing/gloves/kinetic_gauntlets - cost_per_order = 1250 diff --git a/modular_skyrat/master_files/code/modules/mining/equipment/kinetic_crusher.dm b/modular_skyrat/master_files/code/modules/mining/equipment/kinetic_crusher.dm deleted file mode 100644 index df31e2265be..00000000000 --- a/modular_skyrat/master_files/code/modules/mining/equipment/kinetic_crusher.dm +++ /dev/null @@ -1,232 +0,0 @@ -/obj/item/kinetic_crusher - name = "proto-kinetic crusher" - desc = "An early design of the proto-kinetic accelerator, it is little more than a combination of various mining tools cobbled together, forming a high-tech club. \ - While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna." - icon = 'icons/obj/mining.dmi' - icon_state = "crusher" - inhand_icon_state = "crusher0" - lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - resistance_flags = FIRE_PROOF - force = 0 //You can't hit stuff unless wielded - w_class = WEIGHT_CLASS_BULKY - slot_flags = ITEM_SLOT_BACK - throwforce = 5 - throw_speed = 4 - armour_penetration = 10 - custom_materials = list( - /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 1.15, - /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT * 2.075 - ) - hitsound = 'sound/items/weapons/bladeslice.ogg' - attack_verb_continuous = list("smashes", "crushes", "cleaves", "chops", "pulps") - attack_verb_simple = list("smash", "crush", "cleave", "chop", "pulp") - sharpness = SHARP_EDGED - actions_types = list(/datum/action/item_action/toggle_light) - obj_flags = UNIQUE_RENAME - light_color = "#ffff66" - light_on = FALSE - light_power = 1.2 - light_range = 5 - light_system = OVERLAY_LIGHT - - var/charge_time = 1.5 SECONDS - var/detonation_damage = 50 - var/backstab_bonus = 30 - - var/current_inhand_icon_state = "crusher" //variable used by retool kits when changing the crusher's appearance - var/projectile_icon = "pulse1" //variable used by retool kits when changing the crusher's projectile sprite - - /// List of all crusher trophies attached to this. - var/list/obj/item/crusher_trophy/trophies = list() - -/obj/item/kinetic_crusher/Initialize(mapload) - . = ..() - AddComponent(/datum/component/butchering, speed = 6 SECONDS, effectiveness = 110) - AddComponent(/datum/component/kinetic_crusher, detonation_damage, backstab_bonus, charge_time, CALLBACK(src, PROC_REF(attack_check)), CALLBACK(src, PROC_REF(attack_check))) - AddComponent(/datum/component/two_handed, force_wielded = 20, force_unwielded = 0, unwield_callback = CALLBACK(src, PROC_REF(on_unwield))) - RegisterSignal(src, COMSIG_ATOM_SABOTEUR_ACT, PROC_REF(do_saboteur)) - -/obj/item/kinetic_crusher/proc/attack_check(mob/user, cancel_attack) - if(HAS_TRAIT(src, TRAIT_WIELDED)) - return TRUE - - to_chat(user, span_warning("[src] is too heavy to use with one hand! You fumble and drop everything.")) - user.drop_all_held_items() - if(cancel_attack) - *cancel_attack = COMPONENT_CANCEL_ATTACK_CHAIN - return FALSE - -/obj/item/kinetic_crusher/ui_action_click(mob/user, actiontype) - set_light_on(!light_on) - playsound(user, 'sound/items/weapons/empty.ogg', 100, TRUE) - update_appearance() - -////////////////////////////////////////////////////////////////////////////////// -/////// HACK TO WORK AROUND TWOHANDED NOT RESPECTING FORCE_UNWIELDED=0 /////////// -////////////////////////////////////////////////////////////////////////////////// -/obj/item/kinetic_crusher/proc/on_unwield() - SIGNAL_HANDLER - - force = 0 //the abrasive comments is so you notice. seriously, this is BAD. - -////////////////////////////////////////////////////////////////////////////////// -/////// HACK TO WORK AROUND TWOHANDED NOT RESPECTING FORCE_UNWIELDED=0 /////////// -////////////////////////////////////////////////////////////////////////////////// - -/obj/item/kinetic_crusher/proc/do_saboteur(datum/source, disrupt_duration) - set_light_on(FALSE) - playsound(src, 'sound/items/weapons/empty.ogg', 100, TRUE) - return COMSIG_SABOTEUR_SUCCESS - -/obj/item/kinetic_crusher/update_icon_state() - inhand_icon_state = "[current_inhand_icon_state][HAS_TRAIT(src, TRAIT_WIELDED)]" // this is not icon_state and not supported by 2hcomponent - return ..() - -/obj/item/kinetic_crusher/update_overlays() - . = ..() - if(light_on) - . += "[icon_state]_lit" - -/obj/item/kinetic_crusher/compact //for admins - name = "compact kinetic crusher" - w_class = WEIGHT_CLASS_NORMAL - -//stupid to have both crusher and crusher_comp as params but it helps with reducing core code mods -/obj/item/crusher_trophy/proc/add_to(obj/item/crusher, mob/living/user, datum/component/kinetic_crusher/crusher_comp) - for(var/obj/item/crusher_trophy/trophy as anything in crusher_comp.stored_trophies) - if(istype(trophy, denied_type) || istype(src, trophy.denied_type)) - to_chat(user, span_warning("You can't seem to attach [src] to [crusher]. Maybe remove a few trophies?")) - return FALSE - - if(!user.transferItemToLoc(src, crusher)) - return - - crusher_comp.stored_trophies += src - crusher_comp.RegisterSignal(src, COMSIG_MOVABLE_MOVED, TYPE_PROC_REF(/datum/component/kinetic_crusher, on_trophy_moved)) - to_chat(user, span_notice("You attach [src] to [crusher].")) - return TRUE - -/obj/item/crusher_trophy/proc/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user, datum/component/kinetic_crusher/crusher_comp) - crusher_comp.UnregisterSignal(src, COMSIG_MOVABLE_MOVED) - crusher_comp.stored_trophies -= src - forceMove(get_turf(crusher)) - return TRUE - -/obj/projectile/destabilizer - name = "destabilizing force" - damage = 0 //We're just here to mark people. This is still a melee weapon. - damage_type = BRUTE - armor_flag = BOMB - range = 6 - log_override = TRUE - var/datum/component/kinetic_crusher/hammer_synced - -/obj/projectile/destabilizer/Destroy() - hammer_synced = null - return ..() - -/obj/projectile/destabilizer/on_hit(atom/target, blocked = 0, pierce_hit) - if(isliving(target)) - var/mob/living/living = target - var/has_owned_mark = FALSE - for(var/datum/status_effect/crusher_mark/crusher_mark as anything in living.get_all_status_effect_of_id(/datum/status_effect/crusher_mark)) - if(crusher_mark.hammer_synced != hammer_synced) - continue - - has_owned_mark = TRUE - break - - if(!has_owned_mark) - living.apply_status_effect(/datum/status_effect/crusher_mark, hammer_synced) - - var/turf/closed/mineral/target_turf = get_turf(target) //sure i guess - if(istype(target_turf)) - new /obj/effect/temp_visual/kinetic_blast(target_turf) - target_turf.gets_drilled(firer) - - return ..() - -/obj/item/crusher_trophy/legion_skull/add_to(obj/item/kinetic_crusher/crusher, mob/living/user, datum/component/kinetic_crusher/crusher_comp) - . = ..() - if(.) - crusher_comp.recharge_speed -= bonus_value - -/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user, datum/component/kinetic_crusher/crusher_comp) - . = ..() - if(.) - crusher_comp.recharge_speed += bonus_value - - -/obj/item/crusher_trophy/demon_claws/add_to(obj/item/kinetic_crusher/crusher, mob/living/user, datum/component/kinetic_crusher/crusher_comp) - . = ..() - if(!.) - return - - crusher.force += bonus_value * 0.2 - crusher_comp.detonation_damage += bonus_value * 0.8 - - var/datum/component/two_handed/two_handed = crusher.GetComponent(/datum/component/two_handed) - two_handed?.force_wielded += bonus_value * 0.2 - -/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user, datum/component/kinetic_crusher/crusher_comp) - . = ..() - if(!.) - return - - crusher.force -= bonus_value * 0.2 - crusher_comp.detonation_damage -= bonus_value * 0.8 - - var/datum/component/two_handed/two_handed = crusher.GetComponent(/datum/component/two_handed) - two_handed?.force_wielded -= bonus_value * 0.2 - - -/obj/item/crusher_trophy/wendigo_horn/add_to(obj/item/kinetic_crusher/crusher, mob/living/user) - . = ..() - if(!.) - return - - crusher.force *= 2 - - var/datum/component/two_handed/two_handed = crusher.GetComponent(/datum/component/two_handed) - two_handed?.force_wielded *= 2 - -/obj/item/crusher_trophy/wendigo_horn/remove_from(obj/item/kinetic_crusher/crusher, mob/living/user) - . = ..() - if(!.) - return - - crusher.force *= 0.5 - - var/datum/component/two_handed/two_handed = crusher.GetComponent(/datum/component/two_handed) - two_handed?.force_wielded *= 0.5 - - -/obj/item/crusher_trophy/watcher_eye - name = "watcher eye" - desc = "An eye ripped out from some unfortunate watcher's eyesocket. Suitable as a trophy for a kinetic crusher." - icon = 'modular_skyrat/master_files/icons/obj/artifacts.dmi' - icon_state = "watcher_eye" - denied_type = /obj/item/crusher_trophy/watcher_eye - var/used_color = "#ff7777" //gay by default - -/obj/item/crusher_trophy/watcher_eye/effect_desc() - return "very pretty colors to imbue the destabilizer shots" - -/obj/item/crusher_trophy/watcher_eye/attack_self(mob/user, modifiers) - var/chosen_color = tgui_color_picker(user, "Pick a new color", "[src]", used_color) // BUBBERSTATION EDIT: TGUI COLOR PICKER - if(chosen_color) - used_color = chosen_color - to_chat(user, span_notice("You recolor [src].")) - update_appearance() - -/obj/item/crusher_trophy/watcher_eye/update_overlays() - . = ..() - var/mutable_appearance/overlay = mutable_appearance('modular_skyrat/master_files/icons/obj/artifacts.dmi', "watcher_eye_iris") - overlay.color = used_color - . += overlay - -/obj/item/crusher_trophy/watcher_eye/on_projectile_fire(obj/projectile/destabilizer/marker, mob/living/user) - marker.icon = 'modular_skyrat/master_files/icons/obj/weapons/guns/projectiles.dmi' - marker.icon_state = "pulse1_g" - marker.color = used_color diff --git a/modular_skyrat/master_files/code/modules/mining/equipment/kinetic_gauntlets.dm b/modular_skyrat/master_files/code/modules/mining/equipment/kinetic_gauntlets.dm deleted file mode 100644 index d92c6f55309..00000000000 --- a/modular_skyrat/master_files/code/modules/mining/equipment/kinetic_gauntlets.dm +++ /dev/null @@ -1,265 +0,0 @@ -/obj/item/clothing/gloves/kinetic_gauntlets - name = "kinetic gauntlets" - desc = "Nanotrasen's take on the power-fist, originally designed to help the security department but ultimately scrapped due to causing too much collateral damage. \ - Later on, repurposed into a pair of mining tools after a disgruntled shaft miner complained to R&D about mining \"not being metal enough\"." - icon = 'modular_skyrat/master_files/icons/obj/mining.dmi' - icon_state = "kgauntlets" - worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/gloves.dmi' - worn_icon_state = "kgauntlets_off" - - armor_type = /datum/armor/melee_energy - custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT * 2.075) //copied from kc, idk - light_on = FALSE - light_power = 5 - light_range = 4 - light_system = OVERLAY_LIGHT_DIRECTIONAL - resistance_flags = FIRE_PROOF - - force = 3 //i guess? - obj_flags = UNIQUE_RENAME - throwforce = 3 //why doesnt this have an underscore i hate this - throw_speed = 2 - - - actions_types = list(/datum/action/item_action/extend_gauntlets) - attack_verb_continuous = list("slaps", "challenges") - attack_verb_simple = list("slap", "challenge") - equip_delay_self = 2 SECONDS //that's a lot of bulky - hitsound = 'sound/items/weapons/slap.ogg' - slot_flags = ITEM_SLOT_GLOVES - w_class = WEIGHT_CLASS_BULKY - - var/obj/item/kinetic_gauntlet/left/left_gauntlet = null - var/obj/item/kinetic_gauntlet/right_gauntlet = null - -/obj/item/clothing/gloves/kinetic_gauntlets/Initialize(mapload) - . = ..() - left_gauntlet = new(src) - right_gauntlet = new(src) - - var/datum/component/crusher_comp = AddComponent(/datum/component/kinetic_crusher, 50, 30, 1.5 SECONDS, CALLBACK(src, PROC_REF(attack_check)), CALLBACK(src, PROC_REF(detonate_check)), CALLBACK(src, PROC_REF(after_detonate))) - crusher_comp.RegisterWithParent(left_gauntlet) - crusher_comp.RegisterWithParent(right_gauntlet) - -/obj/item/clothing/gloves/kinetic_gauntlets/Destroy() - QDEL_NULL(left_gauntlet) - QDEL_NULL(right_gauntlet) - return ..() - -/obj/item/clothing/gloves/kinetic_gauntlets/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change) - . = ..() - left_gauntlet?.forceMove(src) - right_gauntlet?.forceMove(src) - -/obj/item/clothing/gloves/kinetic_gauntlets/ui_action_click(mob/user, datum/action/actiontype) - toggle_gauntlets() - -/obj/item/clothing/gloves/kinetic_gauntlets/proc/on_gauntlet_qdel() - if(QDELETED(left_gauntlet)) - left_gauntlet = null - if(QDELETED(right_gauntlet)) - right_gauntlet = null - - if(isnull(left_gauntlet) && isnull(right_gauntlet) && !QDELING(src)) - qdel(src) - -/obj/item/clothing/gloves/kinetic_gauntlets/proc/attack_check(mob/living/user, cancel_attack) - return left_gauntlet?.loc == user || right_gauntlet?.loc == user - -/obj/item/clothing/gloves/kinetic_gauntlets/proc/detonate_check(mob/living/user) - var/both_gauntlets_deployed = left_gauntlet?.loc == user && right_gauntlet?.loc == user - if(both_gauntlets_deployed) - return left_gauntlet.next_attack >= world.time || right_gauntlet.next_attack >= world.time - - return FALSE //you WILL glass cannon and you WILL like it. - -/obj/item/clothing/gloves/kinetic_gauntlets/proc/after_detonate(mob/living/user, mob/living/target) - playsound(src, 'sound/items/weapons/resonator_blast.ogg', 40, TRUE) - var/old_dir_user = user.dir - var/old_dir_target = user.dir - step(user, get_dir(target, user)) - step(target, get_dir(user, target)) - user.dir = old_dir_user - target.dir = old_dir_target - - -/obj/item/clothing/gloves/kinetic_gauntlets/proc/toggle_gauntlets() - var/mob/living/carbon/human/wearer = loc - if(!istype(wearer)) - return - - if(left_gauntlet.loc == src || right_gauntlet.loc == src) - deploy_gauntlets() - else - retract_gauntlets() - -/obj/item/clothing/gloves/kinetic_gauntlets/proc/deploy_gauntlets() - var/mob/living/carbon/human/wearer = loc - if(!istype(wearer) || DOING_INTERACTION(wearer, type)) - return - - if(wearer.gloves != src) - to_chat(wearer, span_warning("You must be wearing these to do this!")) - return - - var/left_deployed = isnull(left_gauntlet) || left_gauntlet.loc == wearer - var/right_deployed = isnull(right_gauntlet) || right_gauntlet.loc == wearer - if(left_deployed && right_deployed) - return //nothing to do - - var/can_deploy = TRUE - if(!left_deployed && !wearer.can_put_in_hand(left_gauntlet, 1)) - can_deploy = FALSE - if(!right_deployed && !wearer.can_put_in_hand(right_gauntlet, 2)) - can_deploy = FALSE - - if(!can_deploy) - playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - to_chat(wearer, span_warning("You need both free hands to deploy [src]!")) - return - - // equipping/unequipping shall take time - wearer.add_movespeed_modifier(/datum/movespeed_modifier/equipping_gauntlets) - if(!do_after(wearer, 1.5 SECONDS, src, IGNORE_USER_LOC_CHANGE, interaction_key = type)) - playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - to_chat(wearer, span_warning("You fail to deploy [src]!")) - wearer.remove_movespeed_modifier(/datum/movespeed_modifier/equipping_gauntlets) - return - - wearer.remove_movespeed_modifier(/datum/movespeed_modifier/equipping_gauntlets) - - if(!left_deployed && !wearer.can_put_in_hand(left_gauntlet, 1)) - can_deploy = FALSE - if(!right_deployed && !wearer.can_put_in_hand(right_gauntlet, 2)) - can_deploy = FALSE - - if(!can_deploy) - playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - to_chat(wearer, span_warning("You need both free hands to deploy [src]!")) - return - - if(!left_deployed) - wearer.put_in_l_hand(left_gauntlet) - - if(!right_deployed) - wearer.put_in_r_hand(right_gauntlet) - - ADD_TRAIT(src, TRAIT_NODROP, type) - - playsound(src, 'sound/vehicles/mecha/mechmove03.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - playsound(src, 'sound/vehicles/mecha/mechmove01.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - to_chat(wearer, span_notice("You deploy [src].")) - -/obj/item/clothing/gloves/kinetic_gauntlets/proc/retract_gauntlets() - var/mob/living/carbon/human/wearer = loc - if(!istype(wearer) || DOING_INTERACTION(wearer, type)) - return - - if(wearer.gloves != src) - to_chat(wearer, span_warning("You must be wearing these to do this!")) - return - - if(left_gauntlet?.loc == src && right_gauntlet?.loc == src) - return - - wearer.add_movespeed_modifier(/datum/movespeed_modifier/equipping_gauntlets) - if(!do_after(wearer, 1.5 SECONDS, src, IGNORE_USER_LOC_CHANGE)) - wearer.remove_movespeed_modifier(/datum/movespeed_modifier/equipping_gauntlets) - playsound(src, 'sound/machines/scanner/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) - to_chat(wearer, span_warning("You fail to retract [src]!")) - return - - wearer.remove_movespeed_modifier(/datum/movespeed_modifier/equipping_gauntlets) - - left_gauntlet?.forceMove(src) - right_gauntlet?.forceMove(src) - - REMOVE_TRAIT(src, TRAIT_NODROP, type) - playsound(src, 'sound/vehicles/mecha/powerloader_turn2.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - playsound(src, 'sound/vehicles/mecha/mechmove01.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - to_chat(wearer, span_notice("You retract [src].")) - - -/obj/item/kinetic_gauntlet - name = "kinetic gauntlets" - desc = "Okay, these are pretty metal." - icon = 'modular_skyrat/master_files/icons/obj/mining.dmi' - icon_state = "kgauntlet_r" - inhand_icon_state = "kgauntlet" - lefthand_file = 'modular_skyrat/master_files/icons/mob/inhands/melee_lefthand.dmi' - righthand_file = 'modular_skyrat/master_files/icons/mob/inhands/melee_righthand.dmi' - attack_verb_continuous = list("rams", "fists", "pulverizes", "power-punches") - attack_verb_simple = list("ram", "fist", "pulverize", "power-punch") - - armor_type = /datum/armor/melee_energy - force = 15 // double hit -> 10 more dmg than crusher - obj_flags = DROPDEL - resistance_flags = FIRE_PROOF - - secondary_attack_speed = 0.1 SECONDS - - var/obj/item/clothing/gloves/kinetic_gauntlets/linked_gauntlets = null - var/next_attack = 0 - -/obj/item/kinetic_gauntlet/Initialize(mapload) - . = ..() - if(!istype(loc, /obj/item/clothing/gloves/kinetic_gauntlets)) - return INITIALIZE_HINT_QDEL //le sigh - - linked_gauntlets = loc - ADD_TRAIT(src, TRAIT_NODROP, type) - -/obj/item/kinetic_gauntlet/Destroy(force) - if(linked_gauntlets) //fuck c&d - linked_gauntlets.on_gauntlet_qdel() - linked_gauntlets = null - return ..() - -/obj/item/kinetic_gauntlet/melee_attack_chain(mob/user, atom/target, params) - if(next_attack > world.time) - return - return ..() - -/obj/item/kinetic_gauntlet/attack(mob/living/target_mob, mob/living/user, params) - . = ..() - playsound(src, 'sound/items/weapons/genhit2.ogg', 40, TRUE) - next_attack = world.time + 0.8 SECONDS // same as a crusher - user.changeNext_move(CLICK_CD_HYPER_RAPID) //forgive me - if(istype(user.get_inactive_held_item(), /obj/item/kinetic_gauntlet)) - user.swap_hand() - -/obj/item/kinetic_gauntlet/attack_self(mob/user, modifiers) - if(linked_gauntlets.left_gauntlet) - return linked_gauntlets.left_gauntlet.attack_self(user, modifiers) - return ..() - -/obj/item/kinetic_gauntlet/left - icon_state = "kgauntlet_l" - actions_types = list(/datum/action/item_action/toggle_light) - -/obj/item/kinetic_gauntlet/left/Initialize(mapload) - . = ..() - if(linked_gauntlets) - RegisterSignal(linked_gauntlets, COMSIG_ATOM_SABOTEUR_ACT, PROC_REF(do_saboteur)) - -/obj/item/kinetic_gauntlet/left/Destroy(force) - if(linked_gauntlets) - UnregisterSignal(linked_gauntlets, COMSIG_ATOM_SABOTEUR_ACT) - linked_gauntlets.set_light_on(FALSE) - return ..() - -/obj/item/kinetic_gauntlet/left/update_overlays() - . = ..() - if(linked_gauntlets.light_on) - . += "[icon_state]_lit" - -/obj/item/kinetic_gauntlet/left/attack_self(mob/user, modifiers) - linked_gauntlets.set_light_on(!linked_gauntlets.light_on) - playsound(src, 'sound/items/weapons/empty.ogg', 100, TRUE) - update_appearance() - -/obj/item/kinetic_gauntlet/left/proc/do_saboteur(datum/source, disrupt_duration) - linked_gauntlets.set_light_on(FALSE) - playsound(src, 'sound/items/weapons/empty.ogg', 100, TRUE) - update_appearance() - return COMSIG_SABOTEUR_SUCCESS diff --git a/modular_skyrat/master_files/code/modules/mob/living/basic/lavaland/watcher/watcher.dm b/modular_skyrat/master_files/code/modules/mob/living/basic/lavaland/watcher/watcher.dm deleted file mode 100644 index 3102def462a..00000000000 --- a/modular_skyrat/master_files/code/modules/mob/living/basic/lavaland/watcher/watcher.dm +++ /dev/null @@ -1,3 +0,0 @@ -/mob/living/basic/mining/watcher/Initialize(mapload) - . = ..() - AddElement(/datum/element/crusher_loot, trophy_type = /obj/item/crusher_trophy/watcher_eye, drop_mod = 5, drop_immediately = FALSE) diff --git a/modular_skyrat/master_files/code/modules/movespeed/modifiers/items.dm b/modular_skyrat/master_files/code/modules/movespeed/modifiers/items.dm deleted file mode 100644 index 31dac3faf7d..00000000000 --- a/modular_skyrat/master_files/code/modules/movespeed/modifiers/items.dm +++ /dev/null @@ -1,2 +0,0 @@ -/datum/movespeed_modifier/equipping_gauntlets - multiplicative_slowdown = 0.8 diff --git a/tgstation.dme b/tgstation.dme index d3a49009c64..76d2290b478 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6697,11 +6697,9 @@ #include "modular_skyrat\master_files\code\datums\emotes.dm" #include "modular_skyrat\master_files\code\datums\ert.dm" #include "modular_skyrat\master_files\code\datums\outfit.dm" -#include "modular_skyrat\master_files\code\datums\actions\items\toggles.dm" #include "modular_skyrat\master_files\code\datums\bodypart_overlays\bodypart_overlay.dm" #include "modular_skyrat\master_files\code\datums\bodypart_overlays\mutant_bodypart_overlay.dm" #include "modular_skyrat\master_files\code\datums\components\crafting.dm" -#include "modular_skyrat\master_files\code\datums\components\crusher.dm" #include "modular_skyrat\master_files\code\datums\components\damage_tracker.dm" #include "modular_skyrat\master_files\code\datums\components\fullauto.dm" #include "modular_skyrat\master_files\code\datums\components\grillable.dm" @@ -6725,7 +6723,6 @@ #include "modular_skyrat\master_files\code\datums\mutations\hulk.dm" #include "modular_skyrat\master_files\code\datums\mutations\sight.dm" #include "modular_skyrat\master_files\code\datums\records\record.dm" -#include "modular_skyrat\master_files\code\datums\status_effects\debuffs\debuffs.dm" #include "modular_skyrat\master_files\code\datums\storage\storage.dm" #include "modular_skyrat\master_files\code\datums\storage\subtypes\pockets.dm" #include "modular_skyrat\master_files\code\datums\votes\_vote_datum.dm" @@ -6738,7 +6735,6 @@ #include "modular_skyrat\master_files\code\game\machinery\hologram.dm" #include "modular_skyrat\master_files\code\game\machinery\limbgrower.dm" #include "modular_skyrat\master_files\code\game\machinery\suit_storage.dm" -#include "modular_skyrat\master_files\code\game\machinery\computer\orders\order_items\mining\order_mining.dm" #include "modular_skyrat\master_files\code\game\machinery\doors\firedoor.dm" #include "modular_skyrat\master_files\code\game\objects\items.dm" #include "modular_skyrat\master_files\code\game\objects\objs.dm" @@ -6960,8 +6956,6 @@ #include "modular_skyrat\master_files\code\modules\mapfluff\ruins\objects_and_mobs\necropolis_gate.dm" #include "modular_skyrat\master_files\code\modules\mapfluff\ruins\spaceruin_code\oldstation\oldstation_cytology.dm" #include "modular_skyrat\master_files\code\modules\mining\equipment\explorer_gear.dm" -#include "modular_skyrat\master_files\code\modules\mining\equipment\kinetic_crusher.dm" -#include "modular_skyrat\master_files\code\modules\mining\equipment\kinetic_gauntlets.dm" #include "modular_skyrat\master_files\code\modules\mob\login.dm" #include "modular_skyrat\master_files\code\modules\mob\mob_movement.dm" #include "modular_skyrat\master_files\code\modules\mob\basic\alien\_alien.dm" @@ -6977,7 +6971,6 @@ #include "modular_skyrat\master_files\code\modules\mob\living\living_defines.dm" #include "modular_skyrat\master_files\code\modules\mob\living\living_movement.dm" #include "modular_skyrat\master_files\code\modules\mob\living\basic\alien\alien.dm" -#include "modular_skyrat\master_files\code\modules\mob\living\basic\lavaland\watcher\watcher.dm" #include "modular_skyrat\master_files\code\modules\mob\living\carbon\carbon_defense.dm" #include "modular_skyrat\master_files\code\modules\mob\living\carbon\death.dm" #include "modular_skyrat\master_files\code\modules\mob\living\carbon\human_helpers.dm" @@ -7016,7 +7009,6 @@ #include "modular_skyrat\master_files\code\modules\modular_computers\computers\item\computer.dm" #include "modular_skyrat\master_files\code\modules\modular_computers\computers\item\laptop_presets.dm" #include "modular_skyrat\master_files\code\modules\modular_computers\file_system\programs\maintenance\camera.dm" -#include "modular_skyrat\master_files\code\modules\movespeed\modifiers\items.dm" #include "modular_skyrat\master_files\code\modules\orders\order_mining.dm" #include "modular_skyrat\master_files\code\modules\pai\card.dm" #include "modular_skyrat\master_files\code\modules\paperwork\employment_contract.dm"