diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 6b60486f537..dac0cbe5a69 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -66,10 +66,12 @@ var/list/teleportlocs = list() for(var/area/AR in world) if(istype(AR, /area/shuttle) || istype(AR, /area/syndicate_station) || istype(AR, /area/wizard_station)) continue if(teleportlocs.Find(AR.name)) continue - var/turf/picked = pick(get_area_turfs(AR.type)) - if (picked.z == 1) - teleportlocs += AR.name - teleportlocs[AR.name] = AR + var/list/turfs = get_area_turfs(AR.type) + if(turfs.len) + var/turf/picked = pick(turfs) + if (picked.z == 1) + teleportlocs += AR.name + teleportlocs[AR.name] = AR teleportlocs = sortAssoc(teleportlocs) @@ -83,10 +85,12 @@ var/list/ghostteleportlocs = list() if(istype(AR, /area/turret_protected/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome)) ghostteleportlocs += AR.name ghostteleportlocs[AR.name] = AR - var/turf/picked = pick(get_area_turfs(AR.type)) - if (picked.z == 1 || picked.z == 5 || picked.z == 3) - ghostteleportlocs += AR.name - ghostteleportlocs[AR.name] = AR + var/list/turfs = get_area_turfs(AR.type) + if(turfs.len) + var/turf/picked = pick(turfs) + if (picked.z == 1 || picked.z == 5 || picked.z == 3) + ghostteleportlocs += AR.name + ghostteleportlocs[AR.name] = AR ghostteleportlocs = sortAssoc(ghostteleportlocs) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 70fdf303858..27bae141374 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -9,6 +9,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" config_tag = "changeling" restricted_jobs = list("AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Blueshield", "Nanotrasen Representative", "Security Pod Pilot", "Magistrate", "Brig Physician", "Internal Affairs Agent") + protected_species = list("Machine") required_players = 2 required_players_secret = 10 required_enemies = 1 diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index e8a7f68c5da..b1f78d98a1c 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -268,6 +268,9 @@ src.dna = chosen_dna.Clone() src.real_name = chosen_dna.real_name src.flavor_text = "" + if(ishuman(src)) + var/mob/living/carbon/human/H = src + H.set_species() src.UpdateAppearance() domutcheck(src, null) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 04c8dc27ae0..b8f930ef4a6 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -22,7 +22,8 @@ var/explosion_in_progress = 0 //sit back and relax var/list/datum/mind/modePlayer = new var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist - var/list/protected_jobs = list() // Jobs that can't be trators + var/list/protected_jobs = list() // Jobs that can't be traitors + var/list/protected_species = list() // Species that can't be traitors var/required_players = 0 var/required_players_secret = 0 //Minimum number of players for that game mode to be chose in Secret var/required_enemies = 0 @@ -356,9 +357,9 @@ Implants; // Shuffle the players list so that it becomes ping-independent. players = shuffle(players) - // Get a list of all the people who want to be the antagonist for this round + // Get a list of all the people who want to be the antagonist for this round, except those with incompatible species for(var/mob/new_player/player in players) - if(player.client.prefs.be_special & role) + if(player.client.prefs.be_special & role && !(player.client.prefs.species in protected_species)) log_debug("[player.key] had [roletext] enabled, so we are drafting them.") candidates += player.mind players -= player diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bb437ff959c..51d33edde47 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1338,6 +1338,17 @@ spawn(0) update_icons() + if(species && species.flags & NO_BLOOD) //We want the var for safety but we can do without the actual blood. + if(vessel.has_reagent("water") || vessel.has_reagent("blood")) + var/water = vessel.get_reagent_amount("water") + var/blood = vessel.get_reagent_amount("blood") + vessel.remove_reagent("water",water) + vessel.remove_reagent("blood",blood) + if(species.bloodflags & BLOOD_SLIME) + vessel.add_reagent("water",560-vessel.total_volume) + else + vessel.add_reagent("blood",560-vessel.total_volume) + fixblood() if(species) return 1 diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 624c2f19e19..8e0a92338f8 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -19,9 +19,13 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 vessel = new/datum/reagents(600) vessel.my_atom = src - if(species && species.flags & NO_BLOOD) //We want the var for safety but we can do without the actual blood. - return - if(species.bloodflags &BLOOD_SLIME) + if(species && species.flags & NO_BLOOD) //In case of transformation to IPC + if(vessel.has_reagent("water") || vessel.has_reagent("blood")) + var/water = vessel.get_reagent_amount("water") + var/blood = vessel.get_reagent_amount("blood") + vessel.remove_reagent("water",water) + vessel.remove_reagent("blood",blood) + if(species.bloodflags & BLOOD_SLIME) vessel.add_reagent("water",560) else vessel.add_reagent("blood",560) diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index 6143595c360..2b6efbff3fb 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -45,7 +45,7 @@ category = list("Misc","Power") /datum/design/pacman - name = "Machien Board (PACMAN-type Generator)" + name = "Machine Board (PACMAN-type Generator)" desc = "The circuit board that for a PACMAN-type portable generator." id = "pacman" req_tech = list("programming" = 3, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3)