описатель объекта

ix+
+0-1 координата n1
+2   7,x знак координаты n1
+3-4 координата n2
+5   7,x знак координаты n2
+6-7 координата n3
+8   7,x знак координаты n3

+9  0 вектор направления оси X x1
+A  
+B  2 вектор направления оси X y1
+C  
+D  4 вектор направления оси X z1
+E  

+F  0 вектор направления оси Y x2
+10 
+11 2 вектор направления оси Y y2
+12
+13 4 вектор направления оси Y z2
+14

+15 0 вектор направления оси Z x3
+16 
+17 2 вектор направления оси Z y3
+18
+19 4 вектор направления оси Z z3
+1A
+1B скорость
+1C ускорение	
    - координата X печати на экране, начало координат центр экрана
+1D =#C0 при установке астероида №6
    - координата Y печати на экране, начало координат центр экрана
    - вращение объекта влево/вправо
   7,=0 у кориолис, станция захвачена пиратами
   ;7,=1 вращение есть всегда на фиксированные углы
   ;6,  - направление вращения
   ;0???0000 вращения нет никогда
   ;0x??nnnn nnnn - кол-во времени вращения
+1E 0,b =0 - центр в левой половине экрана
        =1 - центр в правой половине экрана
    1,b =0 - центр в верхней половине экрана
        =1 - центр в нижней половине экрана
    - вращение объекта вверх/вниз
   ;7,=1 вращение есть всегда на фиксированные углы
   ;6,  - направление вращения
   ;0???0000 вращения нет никогда
   ;0x??nnnn nnnn - кол-во времени вращения

+1F oFlg_5 радиус при печати взрыва объекта
    new сила удара, если это ракета
    new 5-0,=номер груза, если это контейнер
    new для Cargo =#00-#26 номер груза
                  =#40-#66 для minerals/alloys/slaves
                  =Fn cloaking
                  =Fm alien
                  =Fq еще что-то
                  =Fr еще что-то
    new для стационарных объектов:
      0-2,=0000 кольцо прыжка (можно залетать сзади)
           0001 станция
           0010 военная станция
           0011 заправочная станция
           0100 астероид отшельника
           0101 корабль поколений
           0110 портал к случайной звезде
           0111 портал к ракксле
           1000 космическая платформа


+20 oFlg_1	взрыв, стреляет из лазера 0-2,(iy+#0a)->(0-2)
    0-2,=000 запуск ракеты/корабля невозможен
       <>кол-во возможных запусков
    2,=1 при установке ASP для 2й миссии
    3,=1 объект выстрелил из лазера
    4,=1 объект уничтожили (надо обработать, визуал взрыва и т.п.)
    5,=1 объект уничтожили =1
    5-4,=01 объект уничтожили, эффект взрыва не отрисован
        =10 объект уничтожили, эффект взрыва отрисован
        =00 -> db71 (goto589)
        =10 -> 
        =01/11 -> dba3 (goto590)
    5,=1 не уничтожается лазером
      =1 координаты печати взрыва заданы в слоте объекта
    6,=1 при инициализации (=0 объект покинут/не управляется)
    7,=1 есть escape pod

+21 oFlg_2
    0,=1 максимальная скорость *4
    1,=1 объект реагирует на правовой статус, если статус >=#28 атакует
    2,=1 объект агресивен
    3,=1 это тарглет ????
    =00001100 это таргон
    =00000100 это тарглет
    5-6,<>0 что-то связано с агрессией
    5-6,<>0 за уничтожение правовой статус or +#40/#7F

+22 oEnerg
    =0 пустой слот
    <>0 энергия объекта
    =FF неуничтожимый (уже уничтоженный объект)
    =F0 для Coriolis (нельзя уничтожить???)
    если ракета, то энергия удара

+23-24 oAdrDl/oAdrDh  адрес данных объекта

+25 oFlg_3
    =#25 при инициализации
    =#7E при инициализации
    =если ракета/тарглет игрока, то номер цели
    =#00 ракета противника

    0,=1 может включить ECM при критической энергии
    0,=1 при установке 3/4 таргонов
    0,=1 при установке asp для 2й миссии
    если объект ракета, то:
      =#00 ракета запущена по игроку
      =#xx ракета запущена игроком (0-3, обратный номер объекта на который нацелена ракета)
    ????если объект корабль, вероятность проявления агрессии 0..FF
                       , уровень агресии 0..FF 
    если объект корабль, вероятность запуска EscapePod
      (чем меньше число, тем выше шанс, что выпустит escape pod, при критичеки
      малой энергии)

    7,=1 объект улетает от игрока
      =0 объект летит к игроку
+26 oFlg_4
    =#00 при инициализации
    =%00001010 при установке контейнера/спасательной капсулы/обломков/минералов

    0,=1 если это ракета или тарглет запущенный игроком
      =1 на объект нацелена ракета????
    1,=1 это контейнер, можно подобрать
      =0 в этот объект врезаемся
      =1 расстояние до столкновения по X/Y/Z=(0000.B4)
      =0 расстояние до столкновения по X/Y/Z=0000.(iy+1)
    2,=1 это coriolis, либо другой стационарный объект
        =1 не уничтожается электробомбой и сответственно ракетой
        =1 есть ECM???
        =1 при столкновении игрок уничтожается 
          =0 убирается из пространства при удалении по Z >=0060.xx
          =1 убирается из пространства при удалении по Z >=0100.xx
    3,=0 блокирует j-drive
    5,=0 радиус реакции до #200
      =1 радиус реакции до #A00
    6,=1 это ASP для 2й миссии
	new Targon c Alien comp
    7,=1 для coriolis: ---станция близко, но J двигатель можно использовать
                       ---была уничтожена станция в предыдущей системе(миссия 3)
                       станция в данной системе была уничтожена по 3й миссии
         для прочих стационарных объектов (военная база, астероид отшельника,
         заправочная станция, кольцо): в данной системе объект отсутствует

;дополнение слота
+27 oFlgAI
    0-1,=nn фрейм появления объекта
        =00 для полиции
        =11 для таргонов
    2,=1 объект появился рядом со станцией
    3,=1 может использовать невидимость
    4,=1 может собирать грузы
    5,=1 может уйти в гиперпространство
    6,=1 компьютер может атаковать этот объект
    7,=1 это пират/астероид/ракета, за атаку на него агрессия не включается

+28 oSign1
    знаки печатных координат вершины с лазером

+29 oCrdX1
    координата X вершины с лазером

+2A oCrdY1
    координата Y вершины с лазером

+2B oSign2
    знаки печатных координат точки попадлания лазермо противника

+2C oCrdX2
    координата X вершины с лазером xor 3/1

+2D oCrdY2
    координата Y вершины с лазером xor 3/1

+2E oCounter
    счетчик до обработки объекта

+2F oTarget0
    номер первой цели

+30 oTarget1
    номер второй цели

+31 oTarget2
    номер цели-контейнера

+32 oTypeObj
    0-2,=nnn тип объекта
        =000 торговец
        =001 полиция
        =010 пират
        =011 охотник
        =100 таргон
        =101 астероид/камень
        =110 ракета
        =111 контейнер/станция/кольцо (не атакуемые компьютером объекты)
    3,=1 этот корабль можно взять на абордаж
    4,=1 ракетой и бомбой уничтожить нельзя
         можно уничтожить только лазером Naval, Targoid, Mining
    6,=1 объект игрока самоуничтожится при потере цели
    7,=1 это объект запущенный игроком









-------------------------------------------------------------------------------
описатель данных объекта
iy+
+0 =#00 нет cargo/не может сбросить cargo
   7-4,xxxx номер груза-1
   0-3,<>0 есть контейнер с грузом
   new для Cargo =00 случайный груз (не может быть, высчитывается на этапе
                     установки контейнера в пространстве)
                 =#01-#27 номер груза
                 =#40-#66 для minerals/alloys/slaves
                 =Fn cloaking
                 =Fm alien
                 =Fq еще что-то
                 =Fr еще что-то

   new для кораблей 0,=0 нет cargo
                    1-2,=nn кол-во Alloys
                    3-7, - номер функции п/п CallFunctionObj для установки
                           нужного объекта при уничтожении корабля (например
                           установка 2х минералов)
                         =00 нет функции

+1 7,=0 можно пролететь насквозь
   расстояние до столновения по X/Y/Z (0000.xx)

+2 шанс выстрела из лазера для ELITE (если не ELITE делим на два)

+3  кол-во вершин
+4  кол-во рёбер в объекте
+5  кол-во нормалей

+6  максимальная скорость -> (ix+#1B)
    =#27=%00100111 не уничтожается энергобомбой (скорость таргона, группу бомбой не уничтожить)
    =#26 группу не уничтожить Q-бомбой

+7  максимальная энергия
   =#F0 скорость восстановления +4 иначе +1
   для ракет не больше #0F
   не может =#FF объект уничтожен (взрыв)


+8-9 денежный приз за уничтожение

+A  dFlg_1
    0-2,=000 запуск ракеты/корабля невозможен
       <>кол-во возможных запусков
    4-7, если запускает корабль, то его номер
    4-7,=0 запускает ракету

+B геометричскийр размер = расстояние после которого объект отображается точкой 

+C-D   смещение до описания вершин (одна вершина =3 координаты по 2 байта)

+E-F   смещение до описания рёбер (одно ребро =4 байта)

+10-11 смещение до описания нормалей (по 4 байта на нормаль)

+12 dFlg_2   флаги
 4,= не используется
    0,=1 максимальную скорость *4
    2,=1 объект агресивен
    7,=1 есть Escape Pod

     0xx0xxxx -> (ix+#21) 2,=1 агрессивный???
     x....... -> 7,(ix+#20) escape pod
    =#04 это тарглет	3,=0 у станции летит к игроку
    =#0C это таргон	3,=1
    =#8С asp		3,=1
    =#A1 asteroid1	3,=0 у станции летит к игроку
    =#00 asteroid2	3,=0 у станции летит к игроку
    =#00 cargo
    =#A0 cobra1		3,=0 у станции летит к игроку
    =#8C cobra2		3,=1
    =#01 escape pod
    =#82 fer-de-lance	3,=0 у станции летит к игроку
    =#00 missile
    =#00 alloys
    =#A0 python1	3,=0 у станции летит к игроку
    =#8C python2	3,=1
    =#0C sidewinder	3,=1
    =#00 coriolis
    =#00 minerals
    =#8C krait		3,=1
    =#C2 viper		3,=0 у станции летит к игроку

    =#04 это тарглет	6-5,=00
    =#0C это таргон	6-5,=00
    =#8С asp		6-5,=00
    =#A1 asteroid1	6-5,=nz при атаке вкючается агр
    =#00 asteroid2
    =#00 cargo
    =#A0 cobra1		6-5,=nz при атаке вкючается агр
    =#8C cobra2		6-5,=00
    =#01 escape pod
    =#82 fer-de-lance	6-5,=00
    =#00 missile
    =#00 alloys
    =#A0 python1	6-5,=nz при атаке вкючается агр
    =#8C python2	6-5,=00
    =#0C sidewinder	6-5,=00
    =#00 coriolis	6-5,=nz при атаке вкючается агр
    =#00 minerals
    =#8C krait		6-5,=00
    =#C2 viper		6-5,=nz при атаке вкючается агр

+13
+14
+15-16 очки к рейтингу за уничтожение *2

+17 dTypeObj
    0-2,=nnn тип объекта
        =000 торговец
        =001 полиция
        =010 пират
        =011 охотник
        =100 таргон
        =101 астероид/камень
        =110 ракета
        =111 контейнер/станция/кольцо (не атакуемые компьютером объекты)
      3,=1 этот корабль можно взять на абордаж
      4,=1 ракетой и бомбой уничтожить нельзя
           можно уничтожить только лазером Naval, Targoid, Mining

+18 dFlgAI
    0-1,=nn фрейм появления объекта
        =00 для полиции
        =11 для таргонов/тарглетов
    2,=1 фрейм задается в данной переменной
    3,=1 может использовать невидимость
    4,=1 может собирать грузы
    5,=1 есть гиперпривод
    6,=1 компьютер может атаковать этот объект
    7,=1 это пират/астероид/ракета, за атаку на него агрессия не включается

+19 dShipN
    номер корабля для абордажа, если 3,dTypeObj =0 отсутствует
























нормаль
crdX crdY crdZ flg
               xyznnnnn
nnnnn =#1F грань видна при любой дальности
      =#nn дальнось при которой грань не видна


ребро
flg       xxx  yyy  nm
000nnnnn

nnnnn =#1F ребро видно при любой дальности
      =#nn дальнось при которой ребро не видно
nm связанные с ребром 2 грани
xxx номер первой вершины
yyy номер второй вершины


вершина 
crdX crdY crdZ flg        nm nm
               xyznnnnn
xyz - знаки координат
nnnnn =#1F вершина видна при любой дальности
      =#nn дальнось при которой вершина не видна

nm nm связанные с вершиной 4 грани


в таблице адресов
3,=1 можеть быть cloacking device

доп слот:

+0 0,=0 не атакует
   2,= bit2,byte_B456 -> +1 =#FF стреляет по слуайным координатам
   2,=1 агрессивен на игрока -> при выстреле по нему включаем глобальную агрессию

   после печати устанавливаются
   6,=1
   0-1,=11 
   =x0xxxx11 - без установки глобальной агрессии в случае нападения на него
               при выстреле по нему не агрится на игрока
   =x1xxxxxx - с установкой глобальной агрессии в случае нападения на него
   =10100xxx - уходит в гипертоннель
         xxx - счетчик перехода (он же начальный радиус)
   3,=1 включен cloacking device
   6,=1 объект реагирует на атаки
   7,=0 объект не реагирует на атаки
   7-6,=0x объект не реагирует на атаки
       =11 объект реагирует на атаки
       =10 bit2=0 объект не реагирует на атаки
       =10 bit2=1 

   0-1, номер фрейма. если номера фреймов равны 00/11 не нападают друг на друга
        =00 полиция
        =11 не нападают друг на друга
   2,=1 атакован
   3,=1 может использовать невидимость
   4,=1 может подобрать контейнер
   5,=1 может уйти в гипертоннель/является потенциальной целью
   6,=1 может напасть
   7,=0 это текущий объект (нельзя атаковать себя)

;0xxxxxxx цель не подходит
;11xxxxxx цель подходящая loc7BA7
;10xxx0xx цель не подходит
;10xxx1xx цель подходящая уже в фокусе
;x1x1xxxx может найти контейнер целью
;xxxxx0xx может лететь к станции
;xxxxxxx0 z,ReactionObject нет движения
;11xxxxxx обрабатываем объект
;xx0xxxxx нет обработки объекта
;x0xxxxxx уходим в гиперпространство
;xxxxxx11 контейнер/астероид/таргон/тарглет
;xxxx0000 полицейский
;xxxx1111 targon
;xxxx1100 asp/
;xxxx0100 ракета/пират
;xxxx0111 астероид/тарглет
;10000000 станция
;10000100 ракета
;10110000 капсула
;10010011 контейнер
;10000111 астероид
;11010000 отшельник/gecko
;11000000 полицай
;11110000 корабль cobra/python/ferdelance/
:11111100 asp
;11111111 targon
;11000100 sidewinder
:11010100 krait/mamba/adder
;11000111 targlet

 



+1 знаки печатных координат вершины с лазером
+2 координата печати проекции Y
+3 координата печати проекции X
+4 знаки печатных координат вершины с лазером
+5 координата печати проекции Y xor 3/1
+6 координата печати проекции X xor 3/1

   при начале печати PrnObjIfVisible
+1 =#FF
+2 координата печати проекции Y
+3 координата печати проекции X
+4 =#FF
+5 координата печати проекции Y xor 3
+6 координата печати проекции X xor 3

   в п/п objPrintLaser
+1 знаки печатных координат вершины с лазером
+2 координата печати проекции Y
+3 координата печати проекции X
+4 знаки печатных координат вершины с лазером
+5 координата печати проекции Y xor 1
+6 координата печати проекции X xor 1

+7 что-то связанное с невидимостью
   счетчик обработки объекта =#18 при старте

xxxxxxx1 летим за контейнером, если нет других целей

+8 

   0-3,<>0 деньги за уничтожение не добавляются
   0-3,<>0 рейтинг за уничтожение не добавляется, при этом (ix+#21)=(+8 and #0F)
   0-3 - номер слота цели данного объекта
   0-3,<>0 нет коррекции направления движения объекта
   0-3, номер первичной цели =0 игрок
   4-7, номер вторичной цели =0 игрок

+9 7,=1 станция рядом


bit2,byte_B456 =1 установка агрессии при попадании из лазера
               =0 и блокирует J-drive установка агрессии при попадании из лазера
               =1 была проявлена агрессия по отношению к какому-либо объекту





+nn oTypeObj тип и флаги
     0-2, тип данного объекта
--     3,=1 был атакован игроком
--     4,=1 был атакован
     6,=1 летит за контейнером
     7,=1 боевая цель есть (в приоритете)








;таргон/пират/полиция/контейнер
000 - мирный торговец
001 - пират
010 - полиция
101 - таргон

000 торговец
001 полиция
002 пират
003 охотник
004 таргон

000 торговец
001 полиция
010 пират
011 охотник
100 таргон
101 астероид/камень
110 ракета
111 контейнер/станция/кольцо (не атакуемые компьютером объекты)

фрейм появления
00 полиция
11 таргон
01-11 все остальные


+0 oFlgAI
   0-1,=xx фрейм появления
   2,=1 атакует кого-то помимо игрока
   3,=1 может использовать невидимость

   4,=1 может уйти в гипертоннель/является потенциальной целью
   5-7,=xx тип объекта


000 контейнер
010 капсула
110 торговец
110 полиция
110 пират
110 охотник
110 таргон
000 астероид
000 ракета
000 камень/станция/кольцо (не атакуемые компьютером объекты)



000 торговец
001 охотник
010 пират
011 таргон
100 полиция
101 астероид
110 ракета
111 камень/станция/кольцо (не атакуемые компьютером объекты)


oCounter

oTypeObj
 0-2,=nnn тип объекта




///10xxxxxx - для ракеты и астероида


3,=1 есть невидимость
4,=1 есть гиперпривод
7,=1 могут атаковать
00hс..00 станция/кольцо/военная станция
00hс..00 ракета
00hс..00 контейнер
00hс..00 капсула
00hс..00 астероид/камень
10hс..11 targon
10hс..11 targlet
10hс..00 полицай
10hс..00 мирные без гипердрайва Tranporter/Shuttle/Asteroid1
10hс..00 мирные без грузового отсека Worm
10hс..00 мирные с гипердрайвом и грузовым отсеком Python1/CobraMk31/Anaconda/Boa/CobraMk1
10hс..01 пираты без гипердрайва
10hс..01 пираты без грузового отсека
10hс..01 пираты
10hс..10 asp
10hс..10 охотнки: FerDeLance






TypeObjTrader	equ 0
TypeObjPolice	equ 0
TypeObjPirate	equ 0
TypeObjHunter	equ 0
TypeObjTargon	equ 0 100 таргон

