diff --git a/code/modules/antagonists/space_dragon/carp_rift.dm b/code/modules/antagonists/space_dragon/carp_rift.dm index 6299bde9275..e6c21112623 100644 --- a/code/modules/antagonists/space_dragon/carp_rift.dm +++ b/code/modules/antagonists/space_dragon/carp_rift.dm @@ -35,6 +35,7 @@ return if(locate(/obj/structure/carp_rift) in owner.loc) return + owner.remove_movespeed_modifier(/datum/movespeed_modifier/dragon_depression/no_portal) // BUBBER ADDITION var/obj/structure/carp_rift/new_rift = new(get_turf(owner)) playsound(owner.loc, 'sound/vehicles/rocketlaunch.ogg', 100, TRUE) dragon.riftTimer = -1 diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm index 74b0c60a872..6b695e5fca7 100644 --- a/code/modules/antagonists/space_dragon/space_dragon.dm +++ b/code/modules/antagonists/space_dragon/space_dragon.dm @@ -132,7 +132,6 @@ /datum/antagonist/space_dragon/proc/rift_checks() if((rifts_charged == 3 || (SSshuttle.emergency.mode == SHUTTLE_DOCKED && rifts_charged > 0)) && !objective_complete) victory() - return if(riftTimer == -1) return riftTimer = min(riftTimer + 1, maxRiftTimer + 1) @@ -140,11 +139,11 @@ to_chat(owner.current, span_boldwarning("You have a minute left to summon the rift! Get to it!")) return if(riftTimer >= maxRiftTimer) - to_chat(owner.current, span_boldwarning("You've failed to summon the rift in a timely manner! You're being pulled back from whence you came!")) - destroy_rifts() - SEND_SOUND(owner.current, sound('sound/effects/magic/demon_dies.ogg')) - owner.current.death(/* gibbed = */ TRUE) - QDEL_NULL(owner.current) + // BUBBER CHANGE START: dragons don't die to not summoning a rift + to_chat(owner.current, span_boldwarning("You've failed to summon the rift in a timely manner! You will be slowed down until you do so!")) + owner.current.add_movespeed_modifier(/datum/movespeed_modifier/dragon_depression/no_portal) + riftTimer = -1 + // BUBBER CHANGE END /** * Destroys all of Space Dragon's current rifts. diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index aa8c8153e97..46335367763 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -145,6 +145,8 @@ /datum/movespeed_modifier/dragon_depression multiplicative_slowdown = 5 +/datum/movespeed_modifier/dragon_depression/no_portal + /datum/movespeed_modifier/morph_disguised multiplicative_slowdown = -1 diff --git a/code/modules/unit_tests/dragon_expiration.dm b/code/modules/unit_tests/dragon_expiration.dm index 45262dc9d60..e2ea43fa128 100644 --- a/code/modules/unit_tests/dragon_expiration.dm +++ b/code/modules/unit_tests/dragon_expiration.dm @@ -23,9 +23,13 @@ var/datum/antagonist/space_dragon/dragon_antag_datum = dragon_time.mind.add_antag_datum(/datum/antagonist/space_dragon) dragon_time.eat(to_be_consumed) - dragon_antag_datum.riftTimer = dragon_antag_datum.maxRiftTimer + 1 - dragon_antag_datum.rift_checks() + // BUBBER CHANGE START: dragon doesn't have a riftTimer anymore + dragon_time.death(TRUE) + QDEL_NULL(dragon_antag_datum.owner.current) + // dragon_antag_datum.riftTimer = dragon_antag_datum.maxRiftTimer + 1 + // dragon_antag_datum.rift_checks() - TEST_ASSERT(QDELETED(dragon_time), "The space dragon wasn't deleted after having its rift timer exceeded!") - TEST_ASSERT(!QDELETED(to_be_consumed), "After having its rift timer exceeded, the dragon deleted the dummy instead! The dragon should be dead prior to being deleted!") - TEST_ASSERT(isturf(to_be_consumed.loc), "After having its rift timer exceeded, the dragon did not eject the dummy! (Dummy's loc: [to_be_consumed.loc])") + // TEST_ASSERT(QDELETED(dragon_time), "The space dragon wasn't deleted after having its rift timer exceeded!") + TEST_ASSERT(!QDELETED(to_be_consumed), "After eating the dummy and dying, the dragon deleted the dummy instead!") + TEST_ASSERT(isturf(to_be_consumed.loc), "After eating the dummy and dying, the dragon did not eject the dummy! (Dummy's loc: [to_be_consumed.loc])") + // BUBBER CHANGE END