Версия 3.0.8

20.10.2007

  • Добавлены классы: AbstractContainer, Container, Surface, Underface.
  • В NerealAbstract добавлены вирт.свойства Weight и Volume - собственные вес и объем объекта.
  • В NerealAbstract добавлены свойства ChildWeight и ChildVolume - суммарные вес и объем всех вложенных объектов.
  • В Item и ItemTemplate реализованы свойства Weight и Volume.
  • В TemplateBlock метод NewBlock заменен на ConstructItem - шаблонным блокам теперь позволены более широкие действия по созданию предметов. Метод так же переписан во всех блоках-наследниках.
  • Метод NewItem в ItemTemplate и конструктор в Item переделаны под использование нового способа конструирования.
  • Добавлены классы: AbstractContainerTemplateBlock, ContainerTemplateBlock, SurfaceTemplateBlock, UnderfaceTemplateBlock.
  • В классах-потомках AbstractContainer добавлены свойства (Capacity, IsSoft, CanClose), получающие соответствующие значения из шаблонных блоков.
  • Добавлен класс ContainerTemplates - набор текстов для операций с контейнером.
  • В Item добавлены методы: GetContainer, GetSurface, GetUnderface.
  • В AbstractContainer добавлено вычисляемое свойство FreeVolume.
  • Команда "положить" доработана для работы с контейнером.
  • Команда "осмотреть" доработана для осмотра контейнера, поверхности и подповерхности.

22.10.2007

  • Добавлен класс LocationType.
  • В Location добавлено свойство LocType - тип локации с прилагающимися к нему данными.
  • В Location свойство Name помечено как nillable - при его отсутствии имя берется из типа локации.
  • В Location добавлен метод GetSurface.
  • Добавлен класс LocationTypes.Town.
  • Добавлена структура Sizes.
  • В NerealAbstract добавлено вирт.свойство Size.
  • В классах Item, ItemTemplate, ItemStructure добавлено перекрытие свойства Size.
  • Добавлены классы SizeItemStructure и VolumeItemStructure - оба наследуемые от SimpleItemStructure, и отличаются данными, хранимыми в качестве основы.
  • В ComplexItemStructure добавлено поле Size.
  • В классы ItemStructure добавлено свойство MinVolume.
  • В Material добавлено свойство Density.

23.10.2007

  • В NerealAbstract добавлено вычисляемое свойство ChildSquare - сумма площади всех вложенных объектов.
  • В AbstractContainer вместо свойств Capacity и FreeVolume добавлен метод IsSpaceEnoughFor - проверка достаточности места для объекта.
  • Sizes считается измеряемым в метрах.
  • Вместимость Surface и Underface считается как площадь, а не объем.
  • В Location добавлено перекрытие свойства Size.
  • В Location добавлен перекрытый метод GetEntities - берущий объекты и с поверхности локации.
  • В AbstractContainer добавлены вирт.свойства PutPrep и TakePrep - предлоги для соответствующих операций с этим контейнером. Во всех потомках эти свойства перекрыты.
  • Команда "положить" доработана для работы со всеми видами контейнеров.
  • В ContainerTemplates добавлено свойство NotFound - шаблон текста ошибки об отсутствии искомого.
  • Команда "взять" доработана для работы со всеми видами контейнеров.
  • Добавлен псевдо-падеж Case.Position.
  • В Names добавлено bool-свойство PositionCase - при false Position равен Prepositional (предложному), при true равен Dative (дательному).
  • В текстовых шаблонах разрешен падеж 6, соответствующий Case.Position.
  • Команда "осмотреть" доработана для осмотра предметов напрямую в контейнерах.
  • Некоторые шаблоны исправлены на использование падежа 6.
  • В текстовых шаблонах в команде '?' разрешен 5-й вариант выбора, соответствующий имени "вы". Необходим для разделения множественного числа и имени "вы".
  • Добавлены классы: Position, StaticPosition, StaticRefPosition.
  • Добавлены статические данные Positions.
  • В AbstractCharacter добавлено свойство Position.
  • В классах AbstractCharacter (и его потомках) и Form добавлен метод GetDefaultPosition.
  • Добавлен класс ObserverPosition.
  • В AbstractCharacter (и его потомках) удален метод GetPositionTemplate.
  • В Position добавлены методы: GetLookTemplate, BuildPrefix, BuildLook.
  • Команда "осмотреть" поправлена на использование нового метода получения шаблона положения.

25.10.2007

  • Добавлен класс EchoBuilder - построитель Echo-шаблонов с автоматической расстановкой параметров.
  • В NerealAbstract добавлен перегруженный метод Echo с параметром типа EchoBuilder.
  • Добавлен статик-класс EchoTpl с набором констант - команд текстовых шаблонов. Все эти команды в классе EchoBuilder и в методах Echo заменены на использование констант.
  • В EchoBuilder исправлены параметры у метода AppendName и добавлены некоторые новые методы.
  • Система построения шаблонов в классе Position переделана на использование EchoBuilder.

27.10.2007

  • Добавлен тип PositionType - перечисление базовых типов позиций.
  • В Race добавлены вирт.методы GetDefaultPosition и GetPosition.
  • В Form метод GetDefaultPosition теперь вызывает аналогичный метод в Race.
  • Добавлен класс Races.BodyLimits. В Race добавлено свойство BodyLimits.
  • В Character добавлены свойства StatureCoeff и WeightCoeff.
  • В Position добавлено вирт.свойство PosType.
  • В Character реализованы вычисляемые свойства: Stature, Weight, BodyWeight, Size.
  • В BodyLimits добавлены свойство SitSize и метод GetSizes.
  • В AbstractContainer и его потомки добавлен метод BuildLook.
  • Добавлены классы: StandPosition, SitPosition, RestPosition.
  • В AbstractContainer добавлены виртуальные защищенные методы GetSpaceFree и GetSpaceEnoughFor.
  • В AbstractContainer метод IsSpaceEnoughFor изменен с виртуального на обычный.
  • В AbstractContainer добавлен перегруженный метод IsSpaceEnoughFor с параметрами Character и Position - достаточно ли будет места в указанном положении.
  • В Position добавлены вирт.методы GetNewPosition и GetChangeTemplate.
  • Добавлены команды: встать, сесть, лечь (отдохнуть).

28.10.2007

  • В проект добавлена ссылка на сборку Python.Runtime.
  • Добавлен класс ScriptEngine.
  • В методах Load/Unload класса NerealServer добавлен вызов Initialize/Shutdown из ScriptEngine.
  • Добавлен контекст ScriptConsoleContext.
  • Добавлена команда "!скрипт".
  • В BaseContext добавлен вирт.метод ProcessPulse, вызывается по окончанию обработки пульса персонажа.
  • В ScriptConsoleContext сделано накопление строк скрипта, и их выполнение при ProcessPulse.

29.10.2007

  • В BaseState индекс словаря состояний изменен с int на Type.
  • В вычислении веса персонажа в BodyLimits коэффициент веса теперь считается от 0 до 1, и потому умножается на значение максимального коэффициента.
  • В Character добавлен метод GenerateRandomStatureAndWeight.
  • В контексте регистрации добавлен вопрос о росте и весе персонаже.
  • При загрузке персонажа, если его коэффициенты роста и веса равны 0, то они устанавливаются случайными.
  • В контексте регистрации в последний вопрос о подтверждении регистрации добавлен вывод всей информации о персонаже.
  • В Sizes добавлены свойство IsEmpty и оператор * (умножение на число или другие размеры).
  • В ContainerTemplateBlock добавлены свойство InnerSize и метод GetInnerSize. По умолчанию внутренний размер контейнера равен 90% от внешнего.
  • В Container перекрыто свойство Size - оно берется из ContainerTemplateBlock.InnerSize.
  • В Sizes добавлены методы: RotateByLength, RotateByWidth, RotateByHeight, Contains, ContainsAny.
  • В NerealAbstract добавлен вирт.метод CanContainInto. По умолчанию использует Sizes.Contains, в Item он перекрыт на использование метода ContainsAny.
  • В AbstractContainer добавлен вирт.метод CanContain. По умолчанию всегда true, в Container перекрыт на вызов CanContainInto.
  • В ContainerTemplates добавлено свойство TooLarge.
  • Добавлена проверка на вместимость по размерам в командах: положить, встать, сесть, лечь.
  • Исправлена ошибка в контексте скриптовой консоли.

30.10.2007

  • Добавлены классы: Request, RequestGroup, RequestStorage.
  • В World добавлено свойство Requests.
  • Добавлены контексты: RequestContext, RequestWriteContext.
  • Добавлена команда "заявка".
  • Контекст RequestContext доработан до рабочего состояния.
  • В BaseContext: свойство previous переименовано в Previous, свойство State добавлено в схему данных как nodef/property.
  • В InputArgs методы Empty, Eol, и Exists заменены на свойства.
  • Реализована подписка на разделы заявок и уведомление по ней при получении новой заявки.
  • В AbstractCharacter добавлен еще один вариант метода HasRole - с предикатом.
  • В InputError добавлен метод выдачи ошибки NotRole.
  • В AbstractCharacter добавлены методы TestRole - с выводом ошибки, если такой роли нет.
  • Добавлена роль RequestReader - читатель заявок. Контекст RequestContext адаптирован к новой роли.
  • Исправлена работа метода GetEntities в классе World - теперь нормально запрашивает персонажей на весь мир.
  • Исправлено имя параметра в автогенерируемых методах Load.

31.10.2007

  • Команда "встать" без параметров теперь всегда перемещает персонажа в локацию.
  • При завершении регистрации и в команде "идти" персонаж по возможности ставится сразу на поверхность локации, а не в саму локацию.
  • Добавлен флаг IteratorSource.Look.
  • В NerealAbstract добавлен вирт.метод GetSubEntities.
  • Метод Utility.GetExemplarIttems удален.
  • В ItemTemplate метод IsTemplateOf переименован в IsTemplateFor.
  • Удалено свойство FullId и методы его построения.
  • В AbstractContainer и AbstractContainerTemplateBlock добавлено свойство Visible.
  • Метод GetSubEntities перекрыт в классах Character, Item, и AbstractContainer.
  • В метод Position.GetNewPosition добавлен параметр newPlace.
  • Файл Position.cs разделен на несколько отдельных файлов.
  • Реорганизация системы положений.

02.11.2007

  • Класс Group переименован в AbstractGroup.
  • Добавлен тип с флагами EntitySource.
  • Пробная реализация новых методов GetEntities.
  • В AbstractCharacter добавлен вариант метода GetEntities, подразумевающего что looker = this.
  • Добавлен класс LocationSurface.
  • Пробная реализация перекрытых новых методов GetEntities и адаптация к ним команды "осмотреть".
  • Удален тип IteratorSource и старые методы GetEntities.
  • Весь код адаптирован к новым методам GetEntities.

03.11.2007

  • В Item и AbstractContainer добавлен метод EchoDescription.
  • Поправлены методы GetSubEntities.
  • Добавлен вывод ревизии сервера, если таковая есть в соответствующем файле.