diff --git a/code/modules/heavy_vehicle/components/legs.dm b/code/modules/heavy_vehicle/components/legs.dm index fec92ba0156..fa72714378d 100644 --- a/code/modules/heavy_vehicle/components/legs.dm +++ b/code/modules/heavy_vehicle/components/legs.dm @@ -8,6 +8,7 @@ var/obj/item/robot_parts/robot_component/actuator/motivator var/mech_turn_sound = 'sound/mecha/mechturn.ogg' var/mech_step_sound = 'sound/mecha/mechstep.ogg' + var/trample_damage = 5 /obj/item/mech_component/propulsion/Destroy() QDEL_NULL(motivator) diff --git a/code/modules/heavy_vehicle/mech_interaction.dm b/code/modules/heavy_vehicle/mech_interaction.dm index bfc59af6f85..f1d60a50ce4 100644 --- a/code/modules/heavy_vehicle/mech_interaction.dm +++ b/code/modules/heavy_vehicle/mech_interaction.dm @@ -462,4 +462,31 @@ if(!new_name || new_name == name || (user != src && !(user in pilots))) return name = new_name - to_chat(user, "You have redesignated this exosuit as \the [name].") \ No newline at end of file + to_chat(user, "You have redesignated this exosuit as \the [name].") + +/mob/living/heavy_vehicle/proc/trample(var/mob/living/H) + if(!LAZYLEN(pilots)) + return + if(!isliving(H)) + return + + if(legs) + if(ishuman(H)) + var/mob/living/carbon/human/D = H + if(D.lying) + D.attack_log += "\[[time_stamp()]\] Was trampled by [src]" + attack_log += text("\[[time_stamp()]\] trampled [D.name] ([D.ckey]) with \the [src].") + msg_admin_attack("[src] trampled [key_name(D)] at (JMP)" ) + src.visible_message("\The [src] runs over \the [D]!") + D.apply_damage(legs.trample_damage, BRUTE) + return TRUE + + else + var/mob/living/L = H + src.visible_message("\The [src] runs over \the [L]!") + if(isanimal(L)) + if(issmall(L) && (L.stat == DEAD)) + L.gib() + return TRUE + L.apply_damage(legs.trample_damage, BRUTE) + return TRUE diff --git a/code/modules/heavy_vehicle/mecha.dm b/code/modules/heavy_vehicle/mecha.dm index 7698a282643..758c7271997 100644 --- a/code/modules/heavy_vehicle/mecha.dm +++ b/code/modules/heavy_vehicle/mecha.dm @@ -7,6 +7,7 @@ status_flags = PASSEMOTES a_intent = I_HURT mob_size = MOB_LARGE + mob_push_flags = ALLMOBS var/decal var/emp_damage = 0 diff --git a/code/modules/heavy_vehicle/premade/combat.dm b/code/modules/heavy_vehicle/premade/combat.dm index 5aeaaba6ac8..ab48f0b666c 100644 --- a/code/modules/heavy_vehicle/premade/combat.dm +++ b/code/modules/heavy_vehicle/premade/combat.dm @@ -39,6 +39,7 @@ move_delay = 3 turn_delay = 3 power_use = 5000 + trample_damage = 35 /obj/item/mech_component/sensors/combat name = "combat sensors" diff --git a/code/modules/heavy_vehicle/premade/heavy.dm b/code/modules/heavy_vehicle/premade/heavy.dm index 8e9e3ba4040..9822335e85b 100644 --- a/code/modules/heavy_vehicle/premade/heavy.dm +++ b/code/modules/heavy_vehicle/premade/heavy.dm @@ -36,11 +36,12 @@ /obj/item/mech_component/propulsion/heavy name = "heavy legs" exosuit_desc_string = "heavy hydraulic legs" - desc = "Oversized actuators struggle to move these armoured legs. " + desc = "Oversized actuators struggle to move these armoured legs." icon_state = "heavy_legs" move_delay = 5 max_damage = 90 power_use = 5000 + trample_damage = 45 /obj/item/mech_component/sensors/heavy name = "heavy sensors" diff --git a/code/modules/heavy_vehicle/premade/light.dm b/code/modules/heavy_vehicle/premade/light.dm index 2362782087e..417105a3f55 100644 --- a/code/modules/heavy_vehicle/premade/light.dm +++ b/code/modules/heavy_vehicle/premade/light.dm @@ -33,7 +33,7 @@ action_delay = 15 max_damage = 40 power_use = 3000 - desc = "As flexible as they are fragile, these Vey-Med manipulators can follow a pilot's movements in close to real time." + desc = "As flexible as they are fragile, these Bishop Cybernetics manipulators can follow a pilot's movements in close to real time." punch_sound = 'sound/mecha/mech_punch_fast.ogg' /obj/item/mech_component/propulsion/light diff --git a/code/modules/heavy_vehicle/premade/misc.dm b/code/modules/heavy_vehicle/premade/misc.dm index b0dbc89afcc..f08b611d8a1 100644 --- a/code/modules/heavy_vehicle/premade/misc.dm +++ b/code/modules/heavy_vehicle/premade/misc.dm @@ -1,12 +1,13 @@ /obj/item/mech_component/propulsion/spider name = "quadlegs" exosuit_desc_string = "hydraulic quadlegs" - desc = "Xion Industrial's arachnid series boasts more leg per leg than the leading competitor." + desc = "Xion Manufacturing Group's arachnid series boasts more leg per leg than the leading competitor." icon_state = "spiderlegs" max_damage = 80 move_delay = 4 turn_delay = 1 power_use = 2500 + trample_damage = 10 /obj/item/mech_component/propulsion/tracks name = "tracks" @@ -19,6 +20,7 @@ power_use = 7500 color = COLOR_WHITE mech_step_sound = 'sound/mecha/tanktread.ogg' + trample_damage = 25 /obj/item/mech_component/chassis/pod name = "spherical exosuit chassis" diff --git a/code/modules/heavy_vehicle/premade/powerloader.dm b/code/modules/heavy_vehicle/premade/powerloader.dm index 82c27598602..678855056d0 100644 --- a/code/modules/heavy_vehicle/premade/powerloader.dm +++ b/code/modules/heavy_vehicle/premade/powerloader.dm @@ -31,7 +31,7 @@ max_damage = 70 power_use = 2000 melee_damage = 40 - desc = "The Xion Industrial Digital Interaction Manifolds allow you poke untold dangers from the relative safety of your cockpit." + desc = "The Xion Manufacturing Group Digital Interaction Manifolds allow you poke untold dangers from the relative safety of your cockpit." punch_sound = 'sound/mecha/mech_punch_slow.ogg' /obj/item/mech_component/propulsion/ripley @@ -42,6 +42,7 @@ move_delay = 4 turn_delay = 4 power_use = 2000 + trample_damage = 10 /obj/item/mech_component/sensors/ripley name = "exosuit sensors" diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 8f508774153..11d60aa69e8 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -864,12 +864,17 @@ default behaviour is: /mob/living/proc/get_digestion_product() return null - /proc/is_valid_for_devour(var/mob/living/test, var/eat_types) //eat_types must contain all types that the mob has. For example we need both humanoid and synthetic to eat an IPC. var/test_types = test.find_type() . = (eat_types & test_types) == test_types - + +/mob/living/Crossed(var/atom/movable/AM) + if(istype(AM, /mob/living/heavy_vehicle)) + var/mob/living/heavy_vehicle/MB = AM + MB.trample(src) + ..() + #define PPM 9 //Protein per meat, used for calculating the quantity of protein in an animal /mob/living/proc/calculate_composition() if (!composition_reagent)//if no reagent has been set, then we'll set one diff --git a/html/changelogs/alberyk-mechleg.yml b/html/changelogs/alberyk-mechleg.yml new file mode 100644 index 00000000000..90090a4096e --- /dev/null +++ b/html/changelogs/alberyk-mechleg.yml @@ -0,0 +1,7 @@ +author: Alberyk + +delete-after: True + +changes: + - rscadd: "Mechs will now trample, dealing brute damaged based on their leg types, mobs that they run over." + - rscadd: "Mechs can now push most mobs."