Files
mcpacker/tungston/generator/markdown/mobreport.py
T
2025-10-06 22:44:46 -06:00

50 lines
1.9 KiB
Python

from tungston.core.world import World
from tungston.core.ecology.biometrait import BiomeTrait
from tungston.generator.markdown.report import Report
# Class ############################################################################################
class MobReport(Report):
def __init__(self, world:World):
super().__init__("mobs.md", world)
def build(self):
for placement in self.world.mobs.all():
self.line(f"# Mob: {placement.mob.name} <{placement.mob.gameId}>")
self.line()
self.indent()
for index, habitat in enumerate(placement.habitats, start=1):
self.text("* habitat ").line(index)
self.indent()
self.text("* altitude: ").line(habitat.altitude)
self.line("* biomeFilter:")
self.indent()
for trait in habitat.biomeFilter.required:
if isinstance(trait, BiomeTrait):
self.text("* ").line(trait)
else:
category = type(trait[0]).__name__
self.text("* ").\
text(category).\
text(": any of: ").\
line(", ".join([t.name for t in trait]))
for trait in habitat.biomeFilter.prohibited:
category = type(trait[0]).__name__
self.text("* ").text(category).text(": not: ").line(trait.name)
self.outdent()
self.text("* seasons: ").line(", ".join([s.name for s in habitat.seasons]))
self.text("* group: ").line(habitat.group.name)
self.text("* location: ").line(habitat.location.name)
self.text("* scarcity: ").line(habitat.scarcity.name)
self.outdent()
self.outdent()
self.line()