EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
DestinyStructs.h
Go to the documentation of this file.
1 /*
2  ------------------------------------------------------------------------------------
3  LICENSE:
4  ------------------------------------------------------------------------------------
5  This file is part of EVEmu: EVE Online Server Emulator
6  Copyright 2006 - 2021 The EVEmu Team
7  For the latest information visit https://evemu.dev
8  ------------------------------------------------------------------------------------
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13 
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
17 
18  You should have received a copy of the GNU Lesser General Public License along with
19  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
20  Place - Suite 330, Boston, MA 02111-1307, USA, or go to
21  http://www.gnu.org/copyleft/lesser.txt.
22  ------------------------------------------------------------------------------------
23  Author: Zhur
24  Rewrite: Allan
25 */
26 
27 #ifndef __DESTINY_STRUCTS_H__
28 #define __DESTINY_STRUCTS_H__
29 
30 namespace Destiny {
31 
32  static const uint8 MAX_DSTBALL = 12;
33 
34  namespace Ball {
35  namespace Mode {
36  enum {
37  GOTO = 0, // Also used for AlignTo
38  FOLLOW = 1,
39  STOP = 2,
40  WARP = 3,
41  ORBIT = 4,
42  MISSILE = 5,
43  MUSHROOM = 6, //Expanding gravity wall (bomb?)
44  BOID = 7, //Swarm-like behavior, based on birds (flocks) but could also be herds, and schools
45  TROLL = 8, //used for jetcans and wrecks (only?). Free ball that will become fixed after a while.
46  MINIBALL = 9, //Guns/Sentry
47  FIELD = 10, //Force field ball
48  RIGID = 11, //A ball that will never move, stations, etc..
49  FORMATION = 12
50  };
51  }
52 
53  namespace Flag {
54  enum {
55  IsFree = 0x01, // ball is free to move, has DataSector
56  IsGlobal = 0x02, // ball is be visible system-wide (shows in overview like static items)
57  IsMassive = 0x04, // ball is solid (collidable)
58  IsInteractive = 0x08, // ball is interactive - piloted ships, containers in space
59  IsMoribund = 0x10, // ball is dying.
60  HasMiniBalls = 0x40, // if set, the client expects mini balls...not sure *what* miniballs are....collision data maybe?
61  };
62  }
63  /*
64  * not sure what these are for yet. calls in destiny.dll ?
65 DST_CREATE = 1
66 DST_DESTROY = 2
67 DST_PROXIMITY = 3
68 DST_PRETICK = 4
69 DST_POSTTICK = 5
70 DST_COLLISION = 6
71 DST_RANGE = 7
72 DST_MODECHANGE = 8
73 DST_PARTITION = 9
74 DST_WARPACTIVATION = 10
75 DST_WARPEXIT = 11
76 */
77  }
78 
83 #pragma pack(1)
84 
86  uint8 packet_type; /* 0 = full state, 1 = balls */
87  uint32 stamp; /* statestamp */
88 };
89 
90 struct NameSector {
91  uint8 name_len; //in 16 bit increments
92  uint16 name[0]; //utf16
93 };
94 
95 struct BallHeader {
98  float radius;
99  double posX;
100  double posY;
101  double posZ;
103 };
104 
105 //included if not a RIGID body
106 struct MassSector {
107  double mass;
108  uint8 cloak; // indicates cloak
112 };
113 
114 //only included if the thing can move...
115 struct DataSector {
116  float maxSpeed;
117  double velX; // these *MAY* be heading in degrees
118  double velY;
119  double velZ;
120  float inertia;
122 };
123 
124 struct MiniBall {
125  double posX;
126  double posY;
127  double posZ;
128  float radius;
129 };
130 
131 struct MiniBallList {
134 };
135 
136 struct GOTO_Struct {
138  double x; //object+0xD0 (as a set of 3)
139  double y;
140  double z;
141 };
142 
146  float followRange;
147 };
148 
149 struct STOP_Struct {
151 };
152 
153 struct WARP_Struct {
155  double targX; //object+0xD0 (as a set of 3)
156  double targY;
157  double targZ;
158  int32 effectStamp; //statestamp of when warp started
159  int64 followRange; //unknown -4616189618054758400 when warp is initiated. calculation unknown for other values (used during warp)
160  int64 followID; //unknown 4669471951536783360 when warp is initiated or ship enters new bubble (AddBalls), 0 otherwise
162 };
163 
164 struct ORBIT_Struct {
167  double followRange;
168 };
169 
173  float followRange;
176  double x;
177  double y;
178  double z;
179 };
180 
183  float followRange;
184  double unknown125;
187 };
188 
189 struct TROLL_Struct {
191  uint32 effectStamp; //statestamp of when effect started
192 };
193 
194 struct FIELD_Struct {
196 };
197 
198 struct RIGID_Struct {
200 /* there is an optional 2 byte thing here, if it is non-zero. not sure what it
201  is yet. */
202 };
203 
207  float followRange;
208  int32 effectStamp; //statestamp of when warp started
209 };
210 
223 };
224 
225 struct TotalStruct {
226  struct BallHeader head;
227  struct MassSector mass;
228  struct DataSector ship;
230 };
231 
232 
233 #pragma pack()
234 
235 
236 } //end Destiny
237 
238 #endif
struct FOLLOW_Struct FOLLOW
unsigned __int8 uint8
Definition: eve-compat.h:46
struct MUSHROOM_Struct MUSHROOM
union SpecificSectors specific
struct WARP_Struct WARP
static const uint8 MAX_DSTBALL
struct DataSector ship
struct BallHeader head
struct GOTO_Struct GOTO
signed __int32 int32
Definition: eve-compat.h:49
struct MISSILE_Struct MISSILE
struct RIGID_Struct RIGID
struct STOP_Struct STOP
struct TROLL_Struct TROLL
unsigned __int32 uint32
Definition: eve-compat.h:50
struct FORMATION_Struct FORMATION
signed __int64 int64
Definition: eve-compat.h:51
struct ORBIT_Struct ORBIT
unsigned __int16 uint16
Definition: eve-compat.h:48
Mode
Definition: EVE_LSC.h:91
struct MassSector mass
struct FIELD_Struct FIELD