diff --git a/code/game/gamemodes/blob/blobs/captured_nuke.dm b/code/game/gamemodes/blob/blobs/captured_nuke.dm new file mode 100644 index 00000000000..1ed4620903a --- /dev/null +++ b/code/game/gamemodes/blob/blobs/captured_nuke.dm @@ -0,0 +1,28 @@ +/obj/structure/blob/captured_nuke //alternative to blob just straight up destroying nukes + name = "blob captured nuke" + icon_state = "blob" + desc = "A Nuclear Warhead tangled in blob tendrils pulsating with a horrific green glow." + max_integrity = 100 + armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 65, ACID = 90) + point_return = 0 + +/obj/structure/blob/captured_nuke/Initialize(mapload, obj/machinery/nuclearbomb/N) + . = ..() + START_PROCESSING(SSobj, src) + N?.forceMove(src) + +/obj/structure/blob/captured_nuke/update_icon() + ..() + cut_overlays() + var/image/nuke_overlay = image('icons/mob/blob.dmi', "blob_nuke_overlay") + nuke_overlay.appearance_flags = RESET_COLOR + add_overlay(nuke_overlay) + +/obj/structure/blob/captured_nuke/Destroy() + for(var/obj/machinery/nuclearbomb/O in contents) + O.forceMove(loc) + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/structure/blob/captured_nuke/Life(seconds, times_fired) + obj_integrity = min(max_integrity, obj_integrity + 1) diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 103427d2089..57f65d3b860 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -201,7 +201,6 @@ /obj/structure/blob/proc/adjustcolors(a_color) if(a_color) color = a_color - return /obj/structure/blob/examine(mob/user) . = ..() diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 1c9f0a40e8e..71051d2b19c 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -415,7 +415,16 @@ GLOBAL_VAR(bomb_set) if(timing) //boom INVOKE_ASYNC(src, .proc/explode) return - qdel(src) + + //if no boom then we need to let the blob capture our nuke + var/turf/T = get_turf(src) + if(!T) + return + if(locate(/obj/structure/blob) in T) + return + var/obj/structure/blob/captured_nuke/N = new(T, src) + N.overmind = B.overmind + N.adjustcolors(B.color) /obj/machinery/nuclearbomb/zap_act(power, zap_flags) . = ..() diff --git a/icons/mob/blob.dmi b/icons/mob/blob.dmi index 76c9a030c1d..ecb9ff43d62 100644 Binary files a/icons/mob/blob.dmi and b/icons/mob/blob.dmi differ diff --git a/paradise.dme b/paradise.dme index 91cd745fe11..3679e569266 100644 --- a/paradise.dme +++ b/paradise.dme @@ -542,6 +542,7 @@ #include "code\game\gamemodes\blob\powers.dm" #include "code\game\gamemodes\blob\theblob.dm" #include "code\game\gamemodes\blob\blobs\blob_mobs.dm" +#include "code\game\gamemodes\blob\blobs\captured_nuke.dm" #include "code\game\gamemodes\blob\blobs\core.dm" #include "code\game\gamemodes\blob\blobs\factory.dm" #include "code\game\gamemodes\blob\blobs\node.dm"