diff --git a/code/datums/atom_huds/alternate_apperance.dm b/code/datums/atom_huds/alternate_apperance.dm index be9fd5fbc5a0..60777a3bcf1d 100644 --- a/code/datums/atom_huds/alternate_apperance.dm +++ b/code/datums/atom_huds/alternate_apperance.dm @@ -188,6 +188,27 @@ var/global/list/active_alternate_appearances = list() return TRUE return FALSE +// Fake-image can see only xenomorph +/datum/atom_hud/alternate_appearance/basic/xenomorphs/New() + ..() + for(var/list_key in global.alien_list) + for(var/mob in global.alien_list[list_key]) + if(mobShouldSee(mob)) + add_hud_to(mob) + +/datum/atom_hud/alternate_appearance/basic/xenomorphs/mobShouldSee(mob/M) + return isxeno(M) + +// Fake-image can see only zombie +/datum/atom_hud/alternate_appearance/basic/zombies/New() + ..() + for(var/mob in global.zombie_list) + if(mobShouldSee(mob)) + add_hud_to(mob) + +/datum/atom_hud/alternate_appearance/basic/zombies/mobShouldSee(mob/M) + return iszombie(M) + // Fake-image can see only observers /datum/atom_hud/alternate_appearance/basic/observers add_ghost_version = FALSE //just in case, to prevent infinite loops diff --git a/code/game/gamemodes/factions.dm b/code/game/gamemodes/factions.dm index 980c0d258fab..d06f70d75fb3 100644 --- a/code/game/gamemodes/factions.dm +++ b/code/game/gamemodes/factions.dm @@ -415,7 +415,7 @@ continue . += M -/datum/faction/proc/check_crew() +/datum/faction/proc/check_crew(for_alien = FALSE) var/total_human = 0 for(var/mob/living/carbon/human/H as anything in human_list) var/turf/human_loc = get_turf(H) @@ -425,5 +425,8 @@ continue if(!H.mind || !H.client) continue + if(for_alien) + if(!H.species.flags[FACEHUGGABLE]) + continue total_human++ return total_human diff --git a/code/game/gamemodes/factions/infestation.dm b/code/game/gamemodes/factions/infestation.dm index b968db6331d4..825479412b66 100644 --- a/code/game/gamemodes/factions/infestation.dm +++ b/code/game/gamemodes/factions/infestation.dm @@ -122,7 +122,7 @@ /datum/faction/infestation/proc/count_alien_percent() - var/total_human = check_crew() + var/total_human = check_crew(for_alien = TRUE) var/total_alien = count_hive_power() var/alien_percent = 0 if(total_human && total_alien) diff --git a/code/game/gamemodes/objectives/reproduct.dm b/code/game/gamemodes/objectives/reproduct.dm index fc5ca49192d1..6780b51eefd3 100644 --- a/code/game/gamemodes/objectives/reproduct.dm +++ b/code/game/gamemodes/objectives/reproduct.dm @@ -1,12 +1,12 @@ /datum/objective/reproduct - explanation_text = "Улей должен жить и размножаться. Ваша численность должна превосходить экипаж станции в X раз." + explanation_text = "Улей должен жить и размножаться. Ваша численность должна превосходить число возможных разумных носителей в X раз." /datum/objective/reproduct/PostAppend() ..() var/datum/faction/infestation/aliens = faction if(!istype(aliens)) return FALSE - explanation_text = "Улей должен жить и размножаться. Ваша численность должна превосходить экипаж станции в [WIN_PERCENT/100] раз." + explanation_text = "Улей должен жить и размножаться. Ваша численность должна превосходить число возможных разумных носителей в [WIN_PERCENT/100] раз." return TRUE /datum/objective/reproduct/check_completion() diff --git a/code/modules/mob/living/carbon/human/zombie.dm b/code/modules/mob/living/carbon/human/zombie.dm index dfb3d5a72ddf..6cf8ace264a7 100644 --- a/code/modules/mob/living/carbon/human/zombie.dm +++ b/code/modules/mob/living/carbon/human/zombie.dm @@ -290,6 +290,8 @@ Теперь ты зомби! Не пытайся вылечиться, не вреди своим собратьям мёртвым, не помогай какому бы то ни было не-зомби. \ Теперь ты - воплощение голода, смерти и жестокости. Распространяй болезнь и УБИВАЙ.") + update_alt_apperance_by(/datum/atom_hud/alternate_appearance/basic/zombies) + var/global/list/zombie_list = list() /proc/add_zombie(mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 9adbf38163f9..a5e8f004ac2a 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -840,6 +840,35 @@ var/regen_mod = 1.0 // Podmen don't. var/regen_limbs = TRUE + var/list/signature_plant = list( + /obj/structure/flora/ausbushes/genericbush, + /obj/structure/flora/ausbushes/grassybush, + /obj/structure/flora/ausbushes/pointybush, + /obj/structure/flora/junglebush/b, + /obj/item/weapon/flora/floorleaf, + /obj/item/weapon/flora/pottedplant/aquatic, + /obj/item/weapon/flora/pottedplant/decorative, + /obj/item/weapon/flora/pottedplant/ficus, + /obj/item/weapon/flora/pottedplant/minitree, + /obj/item/weapon/flora/pottedplant/palm, + /obj/item/weapon/flora/pottedplant/stoutbush, + /obj/item/weapon/flora/pottedplant/thinbush, + /obj/item/weapon/flora/pottedplant/tropical_2) + +/datum/species/diona/on_gain(mob/living/carbon/human/H) + ..() + // initialize hud_list for alt_appearance + H.prepare_huds() + var/obj/signature_obj = pick(signature_plant) + var/image/I = image(signature_obj.icon, H, signature_obj.icon_state) + I.override = 1 + H.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/xenomorphs, "DIONA_xeno", I) + H.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/zombies, "DIONA_zombie", I) + +/datum/species/diona/on_loose(mob/living/carbon/human/H, new_species) + H.remove_alt_appearance("DIONA_xeno") + H.remove_alt_appearance("DIONA_zombie") + ..() /datum/species/diona/regen(mob/living/carbon/human/H) var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing @@ -1072,6 +1101,20 @@ default_mood_event = /datum/mood_event/machine + var/list/signature_machinery = list( + /obj/machinery/pdapainter, + /obj/machinery/computer/security/wooden_tv/miami, + /obj/machinery/message_server, + /obj/machinery/blackbox_recorder, + /obj/machinery/vending/cigarette, + /obj/machinery/kitchen_machine/microwave, + /obj/machinery/kitchen_machine/oven, + /obj/machinery/media/jukebox, + /obj/machinery/washing_machine, + /obj/machinery/telecomms/relay, + /obj/machinery/portable_atmospherics/powered/pump, + /obj/machinery/chem_master) + /datum/species/machine/on_gain(mob/living/carbon/human/H) ..() H.verbs += /mob/living/carbon/human/proc/IPC_change_screen @@ -1081,6 +1124,14 @@ if(BP) H.set_light(BP.screen_brightness) + // initialize hud_list for alt_appearance + H.prepare_huds() + var/obj/signature_obj = pick(signature_machinery) + var/image/I = image(signature_obj.icon, H, signature_obj.icon_state) + I.override = 1 + H.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/xenomorphs, "IPC_xeno", I) + H.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/zombies, "IPC_zombie", I) + /datum/species/machine/on_loose(mob/living/carbon/human/H, new_species) H.verbs -= /mob/living/carbon/human/proc/IPC_change_screen H.verbs -= /mob/living/carbon/human/proc/IPC_toggle_screen @@ -1088,6 +1139,9 @@ var/obj/item/organ/external/head/robot/ipc/BP = H.bodyparts_by_name[BP_HEAD] if(BP && BP.screen_toggle) H.set_light(0) + + H.remove_alt_appearance("IPC_xeno") + H.remove_alt_appearance("IPC_zombie") ..() /datum/species/machine/handle_death(mob/living/carbon/human/H, gibbed) diff --git a/tools/midi2piano/midi2piano/obj/x86/Debug/midi2piano.csproj.AssemblyReference.cache b/tools/midi2piano/midi2piano/obj/x86/Debug/midi2piano.csproj.AssemblyReference.cache new file mode 100644 index 000000000000..9712183e5332 Binary files /dev/null and b/tools/midi2piano/midi2piano/obj/x86/Debug/midi2piano.csproj.AssemblyReference.cache differ