diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index 0983a19881..d47740f370 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -71,8 +71,8 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_SENTIENCE,
ROLE_GANG = /datum/game_mode/gang,
ROLE_HERETIC = /datum/game_mode/heretics,
- ROLE_SPACE_DRAGON,
- ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker
+ ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker,
+ ROLE_SPACE_DRAGON
//ROLE_MONSTERHUNTER Disabled for now
))
diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm
index 330cb2a62a..d77e86e1ec 100644
--- a/code/modules/antagonists/space_dragon/space_dragon.dm
+++ b/code/modules/antagonists/space_dragon/space_dragon.dm
@@ -14,7 +14,6 @@
Today, we will snuff out one of those lights.")
to_chat(owner, "You have five minutes to find a safe location to place down the first rift. If you take longer than five minutes to place a rift, you will be returned from whence you came.")
owner.announce_objectives()
- owner.announce_objectives()
SEND_SOUND(owner.current, sound('sound/magic/demon_attack1.ogg'))
/datum/antagonist/space_dragon/proc/forge_objectives()
diff --git a/code/modules/events/space_dragon.dm b/code/modules/events/space_dragon.dm
index 58e0dbdc58..7b242f1dfe 100644
--- a/code/modules/events/space_dragon.dm
+++ b/code/modules/events/space_dragon.dm
@@ -12,7 +12,6 @@
/datum/round_event/ghost_role/space_dragon/announce(fake)
priority_announce("A large organic energy flux has been recorded near of [station_name()], please stand-by.", "Lifesign Alert")
-
/datum/round_event/ghost_role/space_dragon/spawn_role()
var/list/spawn_locs = list()
@@ -25,11 +24,11 @@
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
- var/list/candidates = get_candidates(ROLE_SPACE_DRAGON, ROLE_SPACE_DRAGON)
+ var/list/candidates = get_candidates(ROLE_SPACE_DRAGON, null, ROLE_SPACE_DRAGON)
if(!candidates.len)
return NOT_ENOUGH_PLAYERS
- var/mob/dead/selected = pick(candidates)
+ var/mob/dead/selected = pick_n_take(candidates)
var/datum/mind/player_mind = new /datum/mind(selected.key)
player_mind.active = TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
index b25c2db052..15e04e0953 100644
--- a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm
@@ -495,7 +495,7 @@
to_chat(S, "Your death has left you unable to summon rifts!")
return
var/area/A = get_area(S)
- if(!(A.area_flags & VALID_TERRITORY))
+ if(!(A.area_flags & (VALID_TERRITORY | BLOBS_ALLOWED)))
to_chat(S, "You can't summon a rift here! Try summoning somewhere secure within the station!")
return
for(var/obj/structure/carp_rift/rift in S.rift_list)
diff --git a/sound/creatures/space_dragon_roar.ogg b/sound/creatures/space_dragon_roar.ogg
index 67ea7a6759..f7f4503b89 100644
Binary files a/sound/creatures/space_dragon_roar.ogg and b/sound/creatures/space_dragon_roar.ogg differ