docs: def get_turn_delta(self, branch=None, turn=None, tick=None, start_tick=0):
          """Get a dictionary describing changes to the world within a given turn
  
          Defaults to the present turn, and stops at the present tick unless specified.
  
          See the documentation for ``get_delta`` for a detailed description of the
          delta format.
  
          :arg branch: branch of history, defaulting to the present branch
          :arg turn: turn within the branch, defaulting to the present turn
          :arg tick: tick at which to stop the delta, defaulting to the present tick
          :arg start_tick: tick at which to start the delta, defaulting to 0
  
          """
          branch = branch or self.branch
          turn = turn or self.turn
          tick = tick or self.tick
          delta = super().get_turn_delta(branch, turn, start_tick, tick)
          if branch in self._avatarness_cache.settings and turn in self._avatarness_cache.settings[branch]:
              for chara, graph, node, is_av in self._avatarness_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(chara, {}).setdefault('avatars', {}).setdefault(graph, {})[node] = is_av
          if branch in self._things_cache.settings and turn in self._things_cache.settings[branch]:
              for chara, thing, location in self._things_cache.settings[branch][turn][start_tick:tick]:
                  thingd = delta.setdefault(chara, {}).setdefault('node_val', {}).setdefault(thing, {})
                  thingd['location'] = location
          delta['rulebooks'] = rbdif = {}
          if branch in self._rulebooks_cache.settings and turn in self._rulebooks_cache.settings[branch]:
              for _, rulebook, rules in self._rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  rbdif[rulebook] = rules
          delta['rules'] = rdif = {}
          if branch in self._triggers_cache.settings and turn in self._triggers_cache.settings[branch]:
              for _, rule, funs in self._triggers_cache.settings[branch][turn][start_tick:tick]:
                  rdif.setdefault(rule, {})['triggers'] = funs
          if branch in self._prereqs_cache.settings and turn in self._prereqs_cache.settings[branch]:
              for _, rule, funs in self._prereqs_cache.settings[branch][turn][start_tick:tick]:
                  rdif.setdefault(rule, {})['prereqs'] = funs
          if branch in self._actions_cache.settings and turn in self._triggers_cache.settings[branch]:
              for _, rule, funs in self._triggers_cache.settings[branch][turn][start_tick:tick]:
                  rdif.setdefault(rule, {})['actions'] = funs
  
          if branch in self._characters_rulebooks_cache.settings and turn in self._characters_rulebooks_cache.settings[branch]:
              for _, character, rulebook in self._characters_rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(character, {})['character_rulebook'] = rulebook
          if branch in self._avatars_rulebooks_cache.settings and turn in self._avatars_rulebooks_cache.settings[branch]:
              for _, character, rulebook in self._avatars_rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(character, {})['avatar_rulebook'] = rulebook
          if branch in self._characters_things_rulebooks_cache.settings and turn in self._characters_things_rulebooks_cache.settings[branch]:
              for _, character, rulebook in self._characters_things_rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(character, {})['character_thing_rulebook'] = rulebook
          if branch in self._characters_places_rulebooks_cache.settings and turn in self._characters_places_rulebooks_cache.settings[branch]:
              for _, character, rulebook in self._characters_places_rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(character, {})['character_place_rulebook'] = rulebook
          if branch in self._characters_portals_rulebooks_cache.settings and turn in self._characters_portals_rulebooks_cache.settings[branch]:
              for _, character, rulebook in self._characters_portals_rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(character, {})['character_portal_rulebook'] = rulebook
  
          if branch in self._nodes_rulebooks_cache.settings and turn in self._nodes_rulebooks_cache.settings[branch]:
              for character, node, rulebook in self._nodes_rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(character, {}).setdefault('node_val', {}).setdefault(node, {})['rulebook'] = rulebook
          if branch in self._portals_rulebooks_cache.settings and turn in self._portals_rulebooks_cache.settings[branch]:
              for character, orig, dest, rulebook in self._portals_rulebooks_cache.settings[branch][turn][start_tick:tick]:
                  delta.setdefault(character, {}).setdefault('edge_val', {})\
                      .setdefault(orig, {}).setdefault(dest, {})['rulebook'] = rulebook
          return delta