/obj/item/device/analyzer/xeno_analyzer name = "exotic biological analyzer" desc = "A device to investigate the genetic data of a biological target." var/form_title var/last_data /obj/item/device/analyzer/xeno_analyzer/proc/print_report_verb() set name = "Print Plant Report" set category = "Object" set src = usr if(usr.stat || usr.restrained() || usr.lying) return print_report(usr) /obj/item/device/analyzer/xeno_analyzer/Topic(href, href_list) if(..()) return if(href_list["print"]) print_report(usr) /obj/item/device/analyzer/xeno_analyzer/proc/print_report(var/mob/living/user) if(!last_data) to_chat(user, "There is no scan data to print.") return var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src)) P.name = "paper - [form_title]" P.info = "[last_data]" if(istype(user,/mob/living/carbon/human)) user.put_in_hands(P) user.visible_message("\The [src] spits out a piece of paper.") return /obj/item/device/analyzer/xeno_analyzer/attack_self(mob/user as mob) print_report(user) return 0 /obj/item/device/analyzer/xeno_analyzer/afterattack(var/target, mob/user, flag) if(!flag) return var/datum/xeno/traits/trait_info var/datum/reagents/prod_reagents var/targetName var/growth_level var/growth_max if(istype(target,/obj/structure/table)) return ..() else if(istype(target,/mob/living/simple_mob/xeno)) var/mob/living/simple_mob/xeno/X = target if(istype(X, /mob/living/simple_mob/xeno/slime)) var/mob/living/simple_mob/xeno/slime/S = X if(S.is_child) growth_level = S.growthcounter growth_max = S.growthpoint targetName = X.name trait_info = X.traitdat else if(istype(target,/obj/item/xenoproduct)) var/obj/item/xenoproduct/P = target trait_info = P.traits targetName = P.name prod_reagents = P.reagents if(!trait_info) to_chat(user, "[src] can tell you nothing about \the [target].") return form_title = "[targetName]" var/dat = "

Biological data for [form_title]

" user.visible_message("[user] runs the scanner over \the [target].") dat += "

General Data

" dat += "Health: [trait_info.get_trait(TRAIT_XENO_HEALTH)]" if(prod_reagents && prod_reagents.reagent_list && prod_reagents.reagent_list.len) dat += "

Reagent Data

" dat += "
This sample contains: " for(var/datum/reagent/R in prod_reagents.reagent_list) dat += "
- [R.name], [prod_reagents.get_reagent_amount(R.id)] unit(s)" dat += "

Other Data

" if(trait_info.get_trait(TRAIT_XENO_EATS)) dat += "This subject requires nutritional intake.
" if(trait_info.get_trait(TRAIT_XENO_HUNGER)) if(trait_info.get_trait(TRAIT_XENO_HUNGER) < 7) dat += "It appears to have a slower metabolism.
" else if(trait_info.get_trait(TRAIT_XENO_HUNGER) > 15) dat += "It appears to have a greater metabolism.
" else dat += "It appears to have an average metabolism.
" if(trait_info.get_trait(TRAIT_IMMUTABLE) == -1) dat += "This plant is highly mutable.
" else if(trait_info.get_trait(TRAIT_IMMUTABLE) > 0) dat += "This plant does not possess genetics that are alterable.
" if(trait_info.get_trait(TRAIT_XENO_HEALTH)) if(trait_info.get_trait(TRAIT_XENO_HEALTH) < 20) dat += "It bears characteristics that indicate resilience to damage.
" else if(trait_info.get_trait(TRAIT_XENO_HEALTH) > 10) dat += "It bears characteristics that indicate susceptibility to damage.
" else dat += "It bears no characters indicating resilience to damage.
" if(growth_max) if(growth_level < 35) dat += "It appears to be far to growing up.
" else if(growth_level > 40) dat += "It appears to be close to growing up.
" else dat += "It appears to be growing.
" else dat += "It appears to be fully grown.
" if(trait_info.get_trait(TRAIT_XENO_COLDRES)) if(trait_info.get_trait(TRAIT_XENO_COLDRES) < 10) dat += "It bears characteristics that indicate resilience to colder temperatures.
" else if(trait_info.get_trait(TRAIT_XENO_COLDRES) > 20) dat += "It bears characteristics that indicate susceptibility to colder temperatures.
" if(trait_info.get_trait(TRAIT_XENO_HEATRES)) if(trait_info.get_trait(TRAIT_XENO_HEATRES) < 10) dat += "It bears characteristics that indicate resilience to warmer temperatures.
" else if(trait_info.get_trait(TRAIT_XENO_HEATRES) > 20) dat += "It bears characteristics that indicate susceptibility to warmer temperatures.
" if(trait_info.get_trait(TRAIT_XENO_SPEED)) if(trait_info.get_trait(TRAIT_XENO_SPEED) < 0) dat += "It appears to be agile.
" else if(trait_info.get_trait(TRAIT_XENO_SPEED) > 0) dat += "It appears to be slower.
" if(trait_info.get_trait(TRAIT_XENO_CANSPEAK)) dat += "
The subject appears to be able to articulate." if(trait_info.get_trait(TRAIT_XENO_SPEAKCHANCE)) if(trait_info.get_trait(TRAIT_XENO_SPEAKCHANCE) < 10) dat += "The subject appears to articulate infrequently.
" else if(trait_info.get_trait(TRAIT_XENO_SPEAKCHANCE) > 20) dat += "The subject appears to articulate frequently.
" if(trait_info.get_trait(TRAIT_XENO_CANLEARN)) dat += "
The subject appears to have process verbal information." if(trait_info.get_trait(TRAIT_XENO_LEARNCHANCE)) if(trait_info.get_trait(TRAIT_XENO_LEARNCHANCE) < 50) dat += "The subject appears to comprehend verbal information infrequently.
" else if(trait_info.get_trait(TRAIT_XENO_LEARNCHANCE) > 51) dat += "The subject appears to comprehend verbal information frequently.
" if(trait_info.get_trait(TRAIT_XENO_STRENGTH) < 5) dat += "It appears to have lower average physical capacity.
" else if(trait_info.get_trait(TRAIT_XENO_STRENGTH) > 7) dat += "It appears to have greater average physical capacity.
" if(trait_info.get_trait(TRAIT_XENO_STR_RANGE)) if(trait_info.get_trait(TRAIT_XENO_STR_RANGE) < 50) dat += "The subject appears to have more consistent attacks.
" else if(trait_info.get_trait(TRAIT_XENO_STR_RANGE) > 51) dat += "The subject appears to have more varied attacks.
" if(trait_info.get_trait(TRAIT_XENO_BIOLUMESCENT)) dat += "
It is [trait_info.get_trait(TRAIT_XENO_BIO_COLOR) ? "bio-luminescent" : "bio-luminescent"]." if(trait_info.get_trait(TRAIT_XENO_HOSTILE)) dat += "
The subject appears to have hostile tendencies." if(trait_info.get_trait(TRAIT_XENO_CHROMATIC)) dat += "
The subject appears to have chromatic particles inside of it." if(dat) last_data = dat dat += "

\[print report\]" user << browse(dat,"window=xeno_analyzer") return