diff --git a/code/defines/mob/living/carbon/alien_humanoid.dm b/code/defines/mob/living/carbon/alien_humanoid.dm index 6a880121b4d..4dd505c9d0d 100644 --- a/code/defines/mob/living/carbon/alien_humanoid.dm +++ b/code/defines/mob/living/carbon/alien_humanoid.dm @@ -45,7 +45,7 @@ health = 250 icon_state = "queen_s" - + relentless = 1 /mob/living/carbon/alien/humanoid/rpbody update_icon = 0 diff --git a/code/defines/obj/clothing/costume.dm b/code/defines/obj/clothing/costume.dm index 0aefb4b6a16..9ddf0b26083 100644 --- a/code/defines/obj/clothing/costume.dm +++ b/code/defines/obj/clothing/costume.dm @@ -12,6 +12,11 @@ new /obj/item/clothing/suit/chickensuit(src.loc) del(src) +/obj/effect/landmark/costume/gladiator/New() + new /obj/item/clothing/under/gladiator(src.loc) + new /obj/item/clothing/head/gladiator(src.loc) + del(src) + /obj/effect/landmark/costume/madscientist/New() new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) new /obj/item/clothing/head/flatcap(src.loc) diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 330b3b2ecbc..c012a59eddd 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -30,9 +30,10 @@ var/mob/tmob = AM if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT) if(prob(70)) - for(var/mob/M in viewers(src, null)) - if(M.client) - M << "\red [src] fails to push [tmob]'s fat ass out of the way." + src << "\red You fail to push [tmob]'s fat ass out of the way." + now_pushing = 0 + return + if(tmob.relentless) now_pushing = 0 return tmob.LAssailant = src diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7e567f6de26..63c20fc9f0a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -145,10 +145,12 @@ if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT) if(prob(40) && !(mutations & FAT)) - visible_message("\red [src] fails to push [tmob]'s fat ass out of the way.", \ - "\red You fail to push [tmob]'s fat ass out of the way.") + src << "\red You fail to push [tmob]'s fat ass out of the way." now_pushing = 0 return + if(tmob.relentless) + now_pushing = 0 + return tmob.LAssailant = src diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index a18e5cbb3b9..cfe9c04ca3c 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -49,11 +49,12 @@ var/mob/tmob = AM if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT) if(prob(70)) - for(var/mob/M in viewers(src, null)) - if(M.client) - M << "\red [src] fails to push [tmob]'s fat ass out of the way." + usr << "\red You fail to push [tmob]'s fat ass out of the way." now_pushing = 0 return + if(tmob.relentless) + now_pushing = 0 + return tmob.LAssailant = src now_pushing = 0 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 7b2b243b4ca..9fe0fdaf5cb 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -242,12 +242,13 @@ var/mob/tmob = AM if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT) if(prob(20)) - for(var/mob/M in viewers(src, null)) - if(M.client) - M << M << "\red [src] fails to push [tmob]'s fat ass out of the way." + usr << "\red You fail to push [tmob]'s fat ass out of the way." now_pushing = 0 //unlock_medal("That's No Moon, That's A Gourmand!", 1) return + if(tmob.relentless) + now_pushing = 0 + return now_pushing = 0 ..() if (istype(AM, /obj/machinery/recharge_station)) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 4e9839ddd40..7d089127923 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -253,6 +253,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i var/canstun = 1 // determines if this mob can be stunned by things var/canweaken = 1 // determines if this mob can be weakened/knocked down by things - + var/relentless = 0 //Can they be shoved? var/area/lastarea = null \ No newline at end of file diff --git a/code/modules/mob/simple_animal/constructs.dm b/code/modules/mob/simple_animal/constructs.dm index d7be017f3fe..de15ec75d34 100644 --- a/code/modules/mob/simple_animal/constructs.dm +++ b/code/modules/mob/simple_animal/constructs.dm @@ -22,6 +22,9 @@ max_tox = 0 speed = 3 destroyer = 1 + relentless = 1 + a_intent = "harm" + stop_automated_movement = 1 Life() ..() @@ -48,4 +51,41 @@ usr << "\red This weapon is ineffective, it does no damage." for(var/mob/M in viewers(src, null)) if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with the [O]. ") \ No newline at end of file + M.show_message("\red [user] gently taps [src] with the [O]. ") + + +/mob/living/simple_animal/constructarmoured/Bump(atom/movable/AM as mob|obj, yes) + + spawn( 0 ) + if ((!( yes ) || now_pushing)) + return + now_pushing = 1 + if(ismob(AM)) + var/mob/tmob = AM + if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT) + if(prob(5)) + src << "\red You fail to push [tmob]'s fat ass out of the way." + now_pushing = 0 + return + if(tmob.relentless) + now_pushing = 0 + return + + tmob.LAssailant = src + now_pushing = 0 + ..() + if (!( istype(AM, /atom/movable) )) + return + if (!( now_pushing )) + now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + if (istype(AM, /obj/structure/window)) + if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST) + for(var/obj/structure/window/win in get_step(AM,t)) + now_pushing = 0 + return + step(AM, t) + now_pushing = null + return + return \ No newline at end of file diff --git a/code/modules/mob/simple_animal/corgi.dm b/code/modules/mob/simple_animal/corgi.dm index 68a43ecabf2..bf675df2e73 100644 --- a/code/modules/mob/simple_animal/corgi.dm +++ b/code/modules/mob/simple_animal/corgi.dm @@ -341,11 +341,12 @@ var/mob/tmob = AM if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT) if(prob(70)) - for(var/mob/M in viewers(src, null)) - if(M.client) - M << "\red [src] fails to push [tmob]'s fat ass out of the way." + src << "\red You fail to push [tmob]'s fat ass out of the way." now_pushing = 0 return + if(tmob.relentless) + now_pushing = 0 + return tmob.LAssailant = src now_pushing = 0 diff --git a/code/modules/mob/simple_animal/shade.dm b/code/modules/mob/simple_animal/shade.dm index 8f3c4cc3388..bbcce11a4f4 100644 --- a/code/modules/mob/simple_animal/shade.dm +++ b/code/modules/mob/simple_animal/shade.dm @@ -21,6 +21,7 @@ max_co2 = 0 max_tox = 0 speed = -1 + stop_automated_movement = 1 Life() diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 60421e56b77..57bf2896fa4 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/tgstation.dme b/tgstation.dme index c1bdf000bf3..84cd008a907 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -162,7 +162,6 @@ #define FILE_DIR "icons/vending_icons" #define FILE_DIR "interface" #define FILE_DIR "maps" -#define FILE_DIR "maps/backup" #define FILE_DIR "sound" #define FILE_DIR "sound/ambience" #define FILE_DIR "sound/announcer" @@ -311,6 +310,7 @@ #include "code\defines\procs\command_alert.dm" #include "code\defines\procs\command_name.dm" #include "code\defines\procs\dbcore.dm" +#include "code\defines\procs\forum_activation.dm" #include "code\defines\procs\gamehelpers.dm" #include "code\defines\procs\helpers.dm" #include "code\defines\procs\icon_procs.dm" @@ -718,6 +718,7 @@ #include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminsay.dm" #include "code\modules\admin\verbs\atmosdebug.dm" +#include "code\modules\admin\verbs\BrokenInhands.dm" #include "code\modules\admin\verbs\deadsay.dm" #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\diagnostics.dm"