EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
DestinyManager.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, Aknor Jaden
24  Updates: Allan
25 */
26 
27 #ifndef __DESTINYMANAGER_H_INCL__
28 #define __DESTINYMANAGER_H_INCL__
29 
30 #include "eve-compat.h"
31 #include "PyCallable.h"
32 #include "destiny/DestinyStructs.h"
33 #include "inventory/ItemRef.h"
34 
35 //0=no orbit, >0=in orbit, 1=at distance 2=too close , 3=too far, 4=way too close, 5=way too far
36 namespace Destiny {
37  namespace Ball {
38  struct stateStamp {
41  };
42  struct timeStamp {
45  };
46  namespace Orbit {
47  enum {
48  None = 0,
49  Orbiting = 1,
50  Close = 2,
51  Far = 3,
52  TooClose = 4,
53  TooFar = 5
54  };
55  }
56  }
57 }
58 
59 class InventoryItem;
60 class Missile;
61 class PyRep;
62 class PyList;
63 class PyTuple;
64 class ShipSE;
65 class SystemBubble;
66 class SystemEntity;
67 class SystemManager;
68 
69 // common variables to denote accpetable alignment deviations
70 static const float TURN_ALIGNMENT = 4.0f;
71 static const float WARP_ALIGNMENT = 6.0f;
72 static const uint16 BUMP_DISTANCE = 50; //in meters. < this = hit.
73 
74 /*
75 namespace Destiny {
76  namespace Warp {
77  struct State {
78  uint32 start_time; //from sEntityList::GetStamp()
79  double total_distance; //in m
80  double warpSpeed; //in m/s
81  double accelDist; //in m
82  double cruiseDist; //in m
83  double decelDist; //in m
84  float warpTime; //in s
85  bool accel;
86  bool cruise;
87  bool decel;
88  GVector warp_vector; //target direction based on ship's initial position
89  };
90  }
91 }
92 */
93 
94 //this object manages an entity's position and movement in a system.
95 
97 public:
100 
101  void Process();
102 
103  void SendSingleDestinyEvent(PyTuple** ev, bool self_only=false) const;
104  void SendSingleDestinyUpdate(PyTuple** up, bool self_only=false) const;
105  void SendDestinyUpdate(std::vector<PyTuple*> &updates, bool self_only=false) const;
106  void SendDestinyUpdate(std::vector<PyTuple*> &updates, std::vector<PyTuple*> &events, bool self_only=false) const;
107 
108  /* Informational query functions: */
109  const GPoint &GetPosition() const { return m_position; }
110  const GVector &GetVelocity() const { return m_velocity; }
113 
114  // this is only used by my bubble debug command
115  uint8 GetState() { return m_ballMode; }
116 
117  void EntityRemoved(SystemEntity* pSE);
118 
119  /* Configuration methods */
120  void WebbedMe(InventoryItemRef modRef, bool apply=false);
121  void SetBubble(bool set = false) { m_inBubble = set; }
122  void SpeedBoost(bool deactivate=false); // reset speed variables and bubblecast ship's AB/MWD modified speed (module activate/deactivate)
123  void SetPosition(const GPoint& pt, bool update = false);
124  void SetMaxVelocity(float maxVelocity);
125  void UpdateShipVariables();
126 
127  /* Global Actions */
128  void Stop();
129  void Halt(); // puts entity at 0 velocity
130  void Eject(); // avoid numerous other redirect calls
131  void SetCloak(bool set=false) { m_cloaked = set; }
132 
133  /* TractorBeam */
134  void TractorBeamStop();
135  void TractorBeamStart(SystemEntity* pShipSE, EvilNumber speed);
136 
137  /* Local Movement */
138  void Orbit(SystemEntity* pSE, uint32 distance=0);
139  void Follow( SystemEntity* pSE, uint32 distance );
140  void AlignTo(SystemEntity* pSE);
141  void GotoPoint(const GPoint &point);
142  void GotoDirection(const GPoint &direction);
143  void SetSpeedFraction(float fraction=1.0f, bool startMovement=false);
144 
145  /* Larger movement */
146  void WarpTo(const GPoint& where, int32 distance = 0, bool autoPilot = false, SystemEntity* pSE = nullptr);
147 
148  /* Ship State Query functions */
149  bool IsMoving() { return (m_currentSpeedFraction > 0); }
150 
151  /* Movement checks */
152  bool IsAligned(GPoint &targetPoint);
157  //bool IsJumping() { return (m_ballMode == Destiny::Ball::Mode::STOP); }
158  bool IsWarping() { return (m_warpState ? true : false); }
159  bool IsCloaked() { return m_cloaked; }
160  bool IsTurning() { return m_turning; }
161  bool IsTractored() { return m_tractored; }
162 
163  //Destiny Update stuff:
164  void Jump(bool showCloak=true);
165  void Cloak();
166  void UnCloak();
167 
169  void Undock(GPoint dir);
170  void SetUndockSpeed();
171  void DockingAccepted();
172  void SendSetState() const;
173  void SendJumpOut(uint32 gateID) const;
174  void SendGateActivity(uint32 gateID) const;
175  void SendJumpInEffect(std::string JumpEffect) const;
176  void SendJumpOutEffect(std::string JumpEffect, uint32 locationID) const;
177  void SendTerminalExplosion(uint32 shipID, uint32 bubbleID, bool isGlobal=false) const;
178  void SendBallInteractive(const ShipItemRef shipRef, bool set = false) const;
179  void UpdateNewShip(const ShipItemRef newShipRef);
180  void UpdateOldShip(ShipSE* pShipSE);
181  void SendJettisonPacket() const;
182  void SendAnchorDrop() const;
183  void SendAnchorLift() const;
184  void SendCloakFx(bool apply=false, bool module=false) const;
185  void SendSpecialEffect10(uint32 entityID, uint32 targetID, std::string guid, bool isOffensive, bool start, bool isActive) const;
186  void SendSpecialEffect(uint32 entityID, uint32 moduleID, uint32 moduleTypeID, uint32 targetID, uint32 chargeTypeID, std::string guid, bool isOffensive, bool start, bool isActive, int32 duration, uint32 repeat, int32 graphicInfo = 0) const;
187 
188  // functions to return protected variables for SystemBubble exclusive WarpTo updates and other methods that need Destiny Variables
190  int32 GetWarpSpeed() { return static_cast<int32>(m_shipWarpSpeed * 10); }
191  uint32 GetTargetID() { return m_targetEntity.first; }
194  double GetMaxVelocity() { return m_maxShipSpeed; }
195  double GetFollowDistance() { return m_targetDistance; }
196  double GetMass() { return m_mass; }
197  double GetAgility() { return m_shipAgility; }
198  double GetInertia() { return m_shipInertia; }
201 
202  float GetAlignTime() { return m_alignTime; }
203  float GetAccelTime() { return m_shipMaxAccelTime; }
204  float GetWarpTime() { return m_timeToEnterWarp; }
206  double GetRadius() { return m_radius; }
207  double GetCapNeed() { return m_warpCapacitorNeed; }
208 
209  float GetRadTic() { return m_orbitRadTic; }
210 
211  // set all movement vars for missile and add to system
212  // this is used by all entities (pc, npc, drone, sentry, pos, etc)
213  void MakeMissile(Missile* missile);
214 
215  bool IsFrozen() { return m_frozen; }
216  void SetFrozen(bool set=false) { m_frozen = set; }
217 
218 protected:
219  void ProcessState();
220 
221  SystemEntity* const mySE; //we do not own this.
222  SystemBubble* m_targBubble; //we do not own this.
223 
224  bool IsTargetInvalid(); //performs common target checks
225 
227 
228  //things dictated by our entity's configuration:
229  uint8 m_warpAccelTime; //in s - calculated internally for warp stages
230  uint8 m_warpDecelTime; //in s - calculated internally for warp stages
231 
232  float m_mass; //in kg
233  float m_massMKg; //in mg - Millionths of kg (mg)
234  float m_alignTime; //in s - align and enter warp are same (for our purposes)
235  float m_prevSpeed; //in m/s - used by decel when deactivating prop mod
236  float m_maxShipSpeed; //in m/s
237  float m_shipWarpSpeed; //in au/s
238  float m_timeToEnterWarp; //in s
239  float m_speedToLeaveWarp; //in m/s - this is set to 75% of m_maxShipSpeed
240 
241  double m_radius; //in m
242  double m_capNeeded; //in GJ - variable to drain cap during warp init
243  double m_warpCapacitorNeed; //in GJ - capacitor charged needed to initiate warp
244  // ship motion factors for complicated maths
245  double m_shipAgility; //in s/Mkg - time-constant of movement for objects in eve physics (and 't' in Dr. SS's calculations)
246  // - characteristic of time that governs the rate of change in motion of an object
247  double m_shipInertia; //in s/Mkg - reciprocal of drag constant in EvE
248  // - the drag coefficient is 1/I and in Mkg/s
249 
250  //derived from above params:
251  float m_maxSpeed; //in m/s
252  float m_degPerTic; //in deg/s - used to determine rate of direction change
253  float m_shipMaxAccelTime; //in s - used to determine accel rate, and total accel time
254 
255  double m_radians; //in rad - radians left in an ongoing turn
256 
258  GVector m_velocity; //in m/s
259 
260  //User controlled information used by a state to determine what to do.
261  bool m_stop; //used to denote Stop() has been called to avoid multiple stops (and associated decel)
262  bool m_accel; //used for raising ship speed via speedo
263  bool m_decel; //used for lowering ship speed via speedo
264  bool m_cloaked;
265  bool m_turning; //used to denote ship turning for associated checks
266  bool m_inBubble; //used to tell if client is in bubble or not.
269 
270  uint8 m_ballMode; //current state of ball
271 
272  int32 m_stopDistance; //from destination, in m
273 
274  uint8 m_turnTic; //time into turn
275  int8 m_orbiting; // 0=no orbit, >0=in orbit, 1=at distance, 2=too close , 3=too far, 4=way too close, 5=way too far
276  //Destiny::Ball::stateStamp m_stateStamp; //state and count of current state since beginning, in seconds
277  //Destiny::Ball::timeStamp m_timeStamp; //mode and timestamp of when current mode began
278  uint32 m_stateStamp; //statestamp of when current state began, in seconds
279 
280  float m_orbitTime; //in s - time to complete one orbit using current variables
281  float m_orbitRadTic; //in rad/sec - radians around orbit per tic
282  float m_turnFraction; //fuzzy logic - speed % - used for turn accel/decel checks
283  float m_prevSpeedFraction; //fuzzy logic - speed % - previous speed fraction used for decel checks when (m_userSpeedFraction == 0)
284  float m_userSpeedFraction; //fuzzy logic - speed % - set by user command
285  float m_currentSpeedFraction; //fuzzy logic - speed % - holds current euler value for time
286  float m_activeSpeedFraction; //fuzzy logic - speed % - ship's current speed setting as ratio of CSF to USF (or OSF)
287  float m_maxOrbitSpeedFraction; //fuzzy logic - speed % - ship's max speed based on orbit data
288 
291  double m_moveTime; //in ms - movement timestamp container for calculating csf
292 
294  GVector m_shipHeading; //direction ship is facing
295  GVector m_targetHeading; //direction to target from current heading -- should this be the *actual* heading of our current target??
296  std::pair<uint32, SystemEntity*> m_targetEntity; //we do not own the SystemEntity*
297 
298  // movement methods
299  void MoveObject(); //apply velocity to our position for this round of movement
300  void Orbit();
301  void Follow(); //follow or approach object in space
302  void BeginMovement(); //set initial variables for all movement (common code)
303  void UpdateVelocity(bool isMoving=false);
304 
305 private:
306  bool m_frozen; // hack to keep ship from moving when using modules that prevent movement
307  bool m_changeDelay; // this is to try to sync destiny with client, as client has a delay when changing destiny states.
308 
309  // Internal Collision Methods -allan Nov 2015
310  bool m_bump;
311  void CheckBump(); //iterate thru objects in current bubble to check for collisions
312  void Bump(SystemEntity* who); //math methods for determining direction and speed of bumped ships
313  void Bounce(GVector direction, float speed); //packet sending for ships after bounce
314 
315  // Internal Turn Methods -allan Aug - Oct, 2015
316  bool IsTurn(); //check for current heading vs target direction. return true if degrees > 2 for warp align and > 0.8 for normal movement
317  void Turn(); //apply velocity and heading updates as needed for turning
318  void ClearTurn();
319 
320  // Internal Orbit shit -allan Jan 2020
321  GPoint ComputePosition(double curRad); // currently testing...wip
322  double m_inclination; //inclination of orbit
323  double m_longAscNode; //longitude of ascending node
324  void ClearOrbit();
325 
326  // Internal Warp Methods
328  void InitWarp();
329  void WarpAccel(uint16 sec_into_warp);
330  void WarpCruise(uint16 sec_into_warp);
331  void WarpDecel(uint16 sec_into_warp);
332  void WarpStop(double currentShipSpeed);
333  void WarpUpdate(double currentShipSpeed);
334 
335  // Variables used during Warp.
336  class WarpState {
337  public:
339  uint32 start_time_,
340  double total_distance_,
341  double warp_speed_,
342  double accel_dist_,
343  double cruise_dist_,
344  double decel_dist_,
345  float warp_time_,
346  bool accel_,
347  bool cruise_,
348  bool decel_,
349  const GVector &warp_vector_)
350  : start_time(start_time_),
351  total_distance(total_distance_),
352  warpSpeed(warp_speed_),
353  accelDist(accel_dist_),
354  cruiseDist(cruise_dist_),
355  decelDist(decel_dist_),
356  warpTime(warp_time_),
357  accel(accel_),
358  cruise(cruise_),
359  decel(decel_),
360  warp_vector(warp_vector_)
361  {}
362  uint32 start_time; //from sEntityList::GetStamp()
363  double total_distance; //in m
364  double warpSpeed; //in m/s
365  double accelDist; //in m
366  double cruiseDist; //in m
367  double decelDist; //in m
368  float warpTime; //in s
369  bool accel;
370  bool cruise;
371  bool decel;
372  GVector warp_vector; //target direction based on ship's initial position
373  };
374  WarpState* m_warpState; //we own this.
375 };
376 
377 #endif
378 
379 /*#Embedded file name: c:/depot/games/branches/release/EVE-TRANQUILITY/eve/client/script/environment/effects/Repository.py
380  * import effects
381  * FX_MERGE_NONE = 0
382  * FX_MERGE_GUID = 2
383  * FX_MERGE_SHIP = 4
384  * FX_MERGE_MODULE = 8
385  * FX_MERGE_TARGET = 16
386  * FX_TF_NONE = 0
387  * FX_TF_POSITION_BALL = 2
388  * FX_TF_POSITION_TARGET = 4
389  * FX_TF_ROTATION_BALL = 8
390  * FX_TF_SCALE_SYMMETRIC = 16
391  * FX_TF_SCALE_BOUNDING = 32
392  * FX_TF_SCALE_RADIUS = 64
393  * definitions = {'effects.AnchorDrop': (effects.AnchorDrop,
394  * FX_TF_NONE,
395  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
396  * None,
397  * 1,
398  * 10000),
399  * 'effects.AnchorLift': (effects.AnchorLift,
400  * FX_TF_NONE,
401  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
402  * None,
403  * 1,
404  * 10000),
405  * 'effects.ArmorHardening': (effects.ShipRenderEffect,
406  * FX_TF_NONE,
407  * FX_MERGE_SHIP | FX_MERGE_GUID,
408  * 'res:/dx9/Model/Effect/ArmorHardening.red',
409  * 1,
410  * 10000),
411  * 'effects.ArmorRepair': (effects.ShipRenderEffect,
412  * FX_TF_NONE,
413  * FX_MERGE_SHIP | FX_MERGE_GUID,
414  * 'res:/dx9/Model/Effect/ArmorRepair.red',
415  * 1,
416  * 10000),
417  * 'effects.Barrage': (effects.StandardWeapon,
418  * FX_TF_NONE,
419  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
420  * None,
421  * 1,
422  * 10000),
423  * 'effects.CargoScan': (effects.StretchEffect,
424  * FX_TF_NONE,
425  * FX_MERGE_SHIP | FX_MERGE_GUID,
426  * 'res:/Model/Effect3/CargoScan.red',
427  * 1,
428  * 10000),
429  * 'effects.Cloak': (effects.Cloak,
430  * FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
431  * FX_MERGE_SHIP | FX_MERGE_GUID,
432  * 'res:/Model/Effect3/Cloaking.red',
433  * 1,
434  * 6000),
435  * 'effects.CloakNoAmim': (effects.CloakNoAmim,
436  * FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
437  * FX_MERGE_SHIP | FX_MERGE_GUID,
438  * 'res:/Model/Effect3/Cloaking.red',
439  * 1,
440  * 6000),
441  * 'effects.CloakRegardless': (effects.CloakRegardless,
442  * FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
443  * FX_MERGE_SHIP | FX_MERGE_GUID,
444  * 'res:/Model/Effect3/Cloaking.red',
445  * 1,
446  * 6000),
447  * 'effects.Cloaking': (effects.Cloaking,
448  * FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
449  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
450  * None,
451  * 1,
452  * 10000),
453  * 'effects.CloudMining': (effects.CloudMining,
454  * FX_TF_NONE,
455  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
456  * None,
457  * 1,
458  * 10000),
459  * 'effects.ECMBurst': (effects.ShipEffect,
460  * FX_TF_POSITION_BALL,
461  * FX_MERGE_SHIP | FX_MERGE_GUID,
462  * 'res:/Model/Effect3/EcmBurst.red',
463  * 1,
464  * 10000),
465  * 'effects.EMPWave': (effects.EMPWave,
466  * FX_TF_NONE,
467  * FX_MERGE_SHIP | FX_MERGE_MODULE,
468  * None,
469  * 1,
470  * 10000),
471  * 'effects.ElectronicAttributeModifyActivate': (effects.ShipEffect,
472  * FX_TF_SCALE_RADIUS | FX_TF_POSITION_BALL,
473  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
474  * 'res:/Model/Effect3/ECM.red',
475  * 1,
476  * 10000),
477  * 'effects.ElectronicAttributeModifyTarget': (effects.StretchEffect,
478  * FX_TF_NONE,
479  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
480  * 'res:/Model/Effect3/SensorBoost.red',
481  * 1,
482  * 10000),
483  * 'effects.EnergyDestabilization': (effects.StretchEffect,
484  * FX_TF_NONE,
485  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
486  * 'res:/Model/Effect3/EnergyDestabilization.red',
487  * 1,
488  * 10000),
489  * 'effects.EnergyTransfer': (effects.StretchEffect,
490  * FX_TF_NONE,
491  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
492  * 'res:/Model/Effect3/EnergyTransfer.red',
493  * 1,
494  * 10000),
495  * 'effects.EnergyVampire': (effects.StretchEffect,
496  * FX_TF_NONE,
497  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
498  * 'res:/Model/Effect3/EnergyVampire.red',
499  * 1,
500  * 10000),
501  * 'effects.GateActivity': (effects.GateActivity,
502  * FX_TF_NONE,
503  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
504  * None,
505  * 1,
506  * 10000),
507  * 'effects.HybridFired': (effects.StandardWeapon,
508  * FX_TF_NONE,
509  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
510  * None,
511  * 1,
512  * 10000),
513  * 'effects.Jettison': (effects.ShipEffect,
514  * FX_TF_POSITION_BALL,
515  * FX_MERGE_SHIP | FX_MERGE_GUID,
516  * 'res:/Model/Effect3/Jettison.red',
517  * 1,
518  * 10000),
519  * 'effects.JumpDriveIn': (effects.JumpDriveIn,
520  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
521  * FX_MERGE_SHIP | FX_MERGE_GUID,
522  * 'res:\\Model\\Effect3\\JumpDrive_in.red',
523  * 1,
524  * 10000),
525  * 'effects.JumpDriveInBO': (effects.JumpDriveInBO,
526  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
527  * FX_MERGE_SHIP | FX_MERGE_GUID,
528  * 'res:\\Model\\Effect3\\JumpDriveBO_in.red',
529  * 1,
530  * 10000),
531  * 'effects.JumpDriveOut': (effects.JumpDriveOut,
532  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL,
533  * FX_MERGE_SHIP | FX_MERGE_GUID,
534  * 'res:\\Model\\Effect3\\JumpDrive_out.red',
535  * 1,
536  * 10000),
537  * 'effects.JumpDriveOutBO': (effects.JumpDriveOutBO,
538  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL,
539  * FX_MERGE_SHIP | FX_MERGE_GUID,
540  * 'res:\\Model\\Effect3\\JumpDriveBO_out.red',
541  * 1,
542  * 10000),
543  * 'effects.JumpIn': (effects.JumpIn,
544  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
545  * FX_MERGE_SHIP | FX_MERGE_GUID,
546  * 'res:/Model/Effect3/warpEntry.red',
547  * 1,
548  * 10000),
549  * 'effects.JumpOut': (effects.JumpOut,
550  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
551  * FX_MERGE_SHIP | FX_MERGE_GUID,
552  * 'res:\\Model\\Effect3\\Jump_out.red',
553  * 1,
554  * 10000),
555  * 'effects.JumpOutWormhole': (effects.JumpOutWormhole,
556  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
557  * FX_MERGE_SHIP | FX_MERGE_GUID,
558  * 'res:\\Model\\Effect3\\WormJump.red',
559  * 1,
560  * 10000),
561  * 'effects.JumpPortal': (effects.JumpPortal,
562  * FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
563  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
564  * 'res:/Model/Effect3/JumpPortal.red',
565  * 1,
566  * 10000),
567  * 'effects.JumpPortalBO': (effects.JumpPortalBO,
568  * FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
569  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
570  * 'res:/Model/Effect3/JumpPortal_BO.red',
571  * 1,
572  * 10000),
573  * 'effects.Laser': (effects.StandardWeapon,
574  * FX_TF_NONE,
575  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
576  * None,
577  * 1,
578  * 10000),
579  * 'effects.Mining': (effects.StandardWeapon,
580  * FX_TF_NONE,
581  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
582  * None,
583  * 1,
584  * 10000),
585  * 'effects.MissileDeployment': (effects.ShipEffect,
586  * FX_TF_POSITION_BALL,
587  * FX_MERGE_SHIP | FX_MERGE_GUID,
588  * 'res:/Model/Effect3/missileLaunch.red',
589  * 1,
590  * 12000),
591  * 'effects.ModifyShieldResonance': (effects.ShipRenderEffect,
592  * FX_TF_NONE,
593  * FX_MERGE_SHIP | FX_MERGE_GUID,
594  * 'res:/dx9/Model/Effect/ShieldHardening.red',
595  * 1,
596  * 10000),
597  * 'effects.ModifyTargetSpeed': (effects.ShipEffect,
598  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_TARGET,
599  * FX_MERGE_TARGET | FX_MERGE_GUID,
600  * 'res:/Model/Effect3/StasisWeb.red',
601  * 1,
602  * 10000),
603  * 'effects.ProjectileFired': (effects.StandardWeapon,
604  * FX_TF_NONE,
605  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
606  * None,
607  * 1,
608  * 10000),
609  * 'effects.ProjectileFiredForEntities': (effects.StandardWeapon,
610  * FX_TF_NONE,
611  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
612  * None,
613  * 1,
614  * 10000),
615  * 'effects.RemoteArmourRepair': (effects.StretchEffect,
616  * FX_TF_NONE,
617  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
618  * 'res:/Model/Effect3/RemoteArmorRepair.red',
619  * 1,
620  * 10000),
621  * 'effects.RemoteECM': (effects.StretchEffect,
622  * FX_TF_NONE,
623  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
624  * 'res:/Model/Effect3/RemoteECM.red',
625  * 1,
626  * 10000),
627  * 'effects.Salvaging': (effects.StandardWeapon,
628  * FX_TF_NONE,
629  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
630  * None,
631  * 1,
632  * 10000),
633  * 'effects.ScanStrengthBonusActivate': (effects.ShipEffect,
634  * FX_TF_SCALE_RADIUS | FX_TF_POSITION_BALL,
635  * FX_MERGE_SHIP | FX_MERGE_GUID,
636  * 'res:/Model/Effect3/ECCM.red',
637  * 1,
638  * 10000),
639  * 'effects.ScanStrengthBonusTarget': (effects.ShipEffect,
640  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL,
641  * FX_MERGE_SHIP | FX_MERGE_GUID,
642  * 'res:/Model/Effect3/ECCM.red',
643  * 1,
644  * 10000),
645  * 'effects.ShieldBoosting': (effects.ShipRenderEffect,
646  * FX_TF_NONE,
647  * FX_MERGE_SHIP | FX_MERGE_GUID,
648  * 'res:/dx9/Model/Effect/ShieldBoosting.red',
649  * 0,
650  * 10000),
651  * 'effects.ShieldTransfer': (effects.StretchEffect,
652  * FX_TF_NONE,
653  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
654  * 'res:/Model/Effect3/ShieldTransfer.red',
655  * 1,
656  * 10000),
657  * 'effects.ShipScan': (effects.StretchEffect,
658  * FX_TF_NONE,
659  * FX_MERGE_SHIP | FX_MERGE_GUID,
660  * 'res:/Model/Effect3/ShipScan.red',
661  * 1,
662  * 10000),
663  * 'effects.SiegeMode': (effects.SiegeMode,
664  * FX_TF_NONE,
665  * FX_MERGE_SHIP,
666  * None,
667  * 1,
668  * 10000),
669  * 'effects.SpeedBoost': (effects.GenericEffect,
670  * FX_TF_NONE,
671  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
672  * None,
673  * 1,
674  * 10000),
675  * 'effects.StructureOffline': (effects.StructureOffline,
676  * FX_TF_NONE,
677  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
678  * None,
679  * 1,
680  * 10000),
681  * 'effects.StructureOnline': (effects.StructureOnline,
682  * FX_TF_NONE,
683  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
684  * None,
685  * 1,
686  * 10000),
687  * 'effects.StructureOnlined': (effects.StructureOnlined,
688  * FX_TF_NONE,
689  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
690  * None,
691  * 1,
692  * 10000),
693  * 'effects.StructureRepair': (effects.ShipRenderEffect,
694  * FX_TF_NONE,
695  * FX_MERGE_SHIP | FX_MERGE_GUID,
696  * 'res:/dx9/Model/Effect/HullRepair.red',
697  * 1,
698  * 10000),
699  * 'effects.SuperWeaponAmarr': (effects.StretchEffect,
700  * FX_TF_NONE,
701  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
702  * 'res:/Model/Effect3/Superweapon/A_DoomsDay.red',
703  * False,
704  * 10000),
705  * 'effects.SuperWeaponCaldari': (effects.StretchEffect,
706  * FX_TF_NONE,
707  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
708  * 'res:/Model/Effect3/Superweapon/C_DoomsDay.red',
709  * False,
710  * 10000),
711  * 'effects.SuperWeaponGallente': (effects.StretchEffect,
712  * FX_TF_NONE,
713  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
714  * 'res:/Model/Effect3/Superweapon/G_DoomsDay.red',
715  * False,
716  * 10000),
717  * 'effects.SuperWeaponMinmatar': (effects.StretchEffect,
718  * FX_TF_NONE,
719  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
720  * 'res:/Model/Effect3/Superweapon/M_DoomsDay.red',
721  * False,
722  * 10000),
723  * 'effects.SurveyScan': (effects.ShipEffect,
724  * FX_TF_SCALE_SYMMETRIC | FX_TF_POSITION_BALL,
725  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
726  * 'res:/Model/Effect3/SurveyScan.red',
727  * 1,
728  * 10000),
729  * 'effects.TargetPaint': (effects.StretchEffect,
730  * FX_TF_NONE,
731  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
732  * 'res:/Model/Effect3/TargetPaint.red',
733  * 1,
734  * 10000),
735  * 'effects.TargetScan': (effects.StretchEffect,
736  * FX_TF_NONE,
737  * FX_MERGE_SHIP | FX_MERGE_TARGET | FX_MERGE_GUID,
738  * 'res:/Model/Effect3/SurveyScan2.red',
739  * 1,
740  * 10000),
741  * 'effects.TorpedoDeployment': (effects.GenericEffect,
742  * FX_TF_NONE,
743  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
744  * None,
745  * 1,
746  * 10000),
747  * 'effects.TractorBeam': (effects.StandardWeapon,
748  * FX_TF_NONE,
749  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
750  * None,
751  * 1,
752  * 10000),
753  * 'effects.TriageMode': (effects.ShipRenderEffect,
754  * FX_TF_NONE,
755  * FX_MERGE_SHIP | FX_MERGE_GUID,
756  * 'res:/dx9/Model/Effect/TriageMode.red',
757  * 0,
758  * 10000),
759  * 'effects.TurretWeaponRangeTrackingSpeedMultiplyActivate': (effects.ShipEffect,
760  * FX_TF_POSITION_BALL,
761  * FX_MERGE_SHIP | FX_MERGE_GUID,
762  * 'res:/Model/Effect3/TrackingBoost.red',
763  * 1,
764  * 10000),
765  * 'effects.TurretWeaponRangeTrackingSpeedMultiplyTarget': (effects.StretchEffect,
766  * FX_TF_NONE,
767  * FX_MERGE_SHIP | FX_MERGE_GUID,
768  * 'res:/Model/Effect3/TrackingBoostTarget.red',
769  * 1,
770  * 10000),
771  * 'effects.Uncloak': (effects.Uncloak,
772  * FX_TF_POSITION_BALL | FX_TF_ROTATION_BALL,
773  * FX_MERGE_SHIP | FX_MERGE_GUID,
774  * 'res:/Model/Effect3/Cloaking.red',
775  * 1,
776  * 7500),
777  * 'effects.WarpDisruptFieldGenerating': (effects.WarpDisruptFieldGenerating,
778  * FX_TF_POSITION_BALL,
779  * FX_MERGE_SHIP | FX_MERGE_GUID,
780  * 'res:/Model/effect3/WarpDisruptorBubble.red',
781  * 0,
782  * 10000),
783  * 'effects.WarpGateEffect': (effects.WarpGateEffect,
784  * FX_TF_NONE,
785  * FX_MERGE_SHIP | FX_MERGE_GUID,
786  * None,
787  * 0,
788  * 10000),
789  * 'effects.WarpScramble': (effects.StretchEffect,
790  * FX_TF_NONE,
791  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
792  * 'res:/Model/Effect3/WarpScrambler.red',
793  * 1,
794  * 10000),
795  * 'effects.Warping': (effects.Warping,
796  * FX_TF_NONE,
797  * FX_MERGE_SHIP | FX_MERGE_GUID,
798  * 'res:/Model/Effect3/warpTunnel2.red',
799  * False,
800  * 1200000),
801  * 'effects.WormholeActivity': (effects.WormholeActivity,
802  * FX_TF_NONE,
803  * FX_MERGE_SHIP | FX_MERGE_MODULE | FX_MERGE_GUID,
804  * None,
805  * 1,
806  * 10000)}
807  * if const.useNewMissileSystem_removeThisSoon:
808  * definitions['effects.MissileDeployment'] = (effects.MissileDeployment,
809  * 0,
810  * 0,
811  * None,
812  * 1,
813  * 12000)
814  *
815  * def GetGuids():
816  * return definitions.keys()
817  *
818  *
819  * def GetClassification(guid):
820  * return definitions.get(guid, None)
821  *
822  *
823  * exports = {'effects.GetClassification': GetClassification,
824  * 'effects.GetGuids': GetGuids,
825  * 'effects.FX_MERGE_NONE': FX_MERGE_NONE,
826  * 'effects.FX_MERGE_GUID': FX_MERGE_GUID,
827  * 'effects.FX_MERGE_SHIP': FX_MERGE_SHIP,
828  * 'effects.FX_MERGE_MODULE': FX_MERGE_MODULE,
829  * 'effects.FX_MERGE_TARGET': FX_MERGE_TARGET,
830  * 'effects.FX_TF_NONE': FX_TF_NONE,
831  * 'effects.FX_TF_POSITION_BALL': FX_TF_POSITION_BALL,
832  * 'effects.FX_TF_POSITION_TARGET': FX_TF_POSITION_TARGET,
833  * 'effects.FX_TF_ROTATION_BALL': FX_TF_ROTATION_BALL,
834  * 'effects.FX_TF_SCALE_SYMMETRIC': FX_TF_SCALE_SYMMETRIC,
835  * 'effects.FX_TF_SCALE_BOUNDING': FX_TF_SCALE_BOUNDING,
836  * 'effects.FX_TF_SCALE_RADIUS': FX_TF_SCALE_RADIUS}
837  */
Base Python wire object.
Definition: PyRep.h:66
GVector GetHeading()
unsigned __int8 uint8
Definition: eve-compat.h:46
float m_currentSpeedFraction
bool IsAligned(GPoint &targetPoint)
double GetFollowDistance()
void WarpCruise(uint16 sec_into_warp)
void SendAnchorLift() const
float GetAccelTime()
void SendGateActivity(uint32 gateID) const
float GetWarpDropSpeed()
double GetAgility()
void GotoDirection(const GPoint &direction)
void SendJettisonPacket() const
void MakeMissile(Missile *missile)
static const float TURN_ALIGNMENT
void SendCloakFx(bool apply=false, bool module=false) const
void SendJumpInEffect(std::string JumpEffect) const
void SendJumpOutEffect(std::string JumpEffect, uint32 locationID) const
float m_prevSpeedFraction
uint32 GetStateStamp()
void SetCloak(bool set=false)
const GVector & GetVelocity() const
void SendDestinyUpdate(std::vector< PyTuple * > &updates, bool self_only=false) const
void SetMaxVelocity(float maxVelocity)
WarpState * m_warpState
float GetAlignTime()
double GetRadius()
this is a class that kinda mimics how python polymorph's numbers.
Definition: EvilNumber.h:59
Python tuple.
Definition: PyRep.h:567
SystemEntity *const mySE
Definition: Ship.h:301
signed __int8 int8
Definition: eve-compat.h:45
uint32 GetTargetID()
void SendSetState() const
float m_maxOrbitSpeedFraction
void Bounce(GVector direction, float speed)
float m_activeSpeedFraction
void UpdateOldShip(ShipSE *pShipSE)
signed __int32 int32
Definition: eve-compat.h:49
void WarpStop(double currentShipSpeed)
SystemEntity * GetTargetEntity()
WarpState(uint32 start_time_, double total_distance_, double warp_speed_, double accel_dist_, double cruise_dist_, double decel_dist_, float warp_time_, bool accel_, bool cruise_, bool decel_, const GVector &warp_vector_)
float GetSpeedFraction()
std::pair< uint32, SystemEntity * > m_targetEntity
void SendSpecialEffect(uint32 entityID, uint32 moduleID, uint32 moduleTypeID, uint32 targetID, uint32 chargeTypeID, std::string guid, bool isOffensive, bool start, bool isActive, int32 duration, uint32 repeat, int32 graphicInfo=0) const
void WarpDecel(uint16 sec_into_warp)
Definition: gpoint.h:33
void SendAnchorDrop() const
int32 GetWarpSpeed()
float m_speedToLeaveWarp
void SendJumpOut(uint32 gateID) const
void AlignTo(SystemEntity *pSE)
double GetMaxVelocity()
GVector m_shipHeading
double GetInertia()
void SetSpeedFraction(float fraction=1.0f, bool startMovement=false)
void EntityRemoved(SystemEntity *pSE)
void WarpAccel(uint16 sec_into_warp)
void UpdateVelocity(bool isMoving=false)
void UpdateNewShip(const ShipItemRef newShipRef)
void Jump(bool showCloak=true)
unsigned __int32 uint32
Definition: eve-compat.h:50
uint32 m_followDistance
void SetPosition(const GPoint &pt, bool update=false)
void SendSingleDestinyUpdate(PyTuple **up, bool self_only=false) const
void Bump(SystemEntity *who)
void SetFrozen(bool set=false)
void GotoPoint(const GPoint &point)
GVector m_targetHeading
GPoint GetTargetPoint()
void WarpTo(const GPoint &where, int32 distance=0, bool autoPilot=false, SystemEntity *pSE=nullptr)
void SendSpecialEffect10(uint32 entityID, uint32 targetID, std::string guid, bool isOffensive, bool start, bool isActive) const
double GetCapNeed()
signed __int64 int64
Definition: eve-compat.h:51
void SendTerminalExplosion(uint32 shipID, uint32 bubbleID, bool isGlobal=false) const
void SendSingleDestinyEvent(PyTuple **ev, bool self_only=false) const
void Undock(GPoint dir)
void TractorBeamStart(SystemEntity *pShipSE, EvilNumber speed)
float m_shipMaxAccelTime
double m_warpCapacitorNeed
void WarpUpdate(double currentShipSpeed)
GPoint ComputePosition(double curRad)
const GPoint & GetPosition() const
void SpeedBoost(bool deactivate=false)
DestinyManager(SystemEntity *self)
uint32 m_targetDistance
void SendBallInteractive(const ShipItemRef shipRef, bool set=false) const
Definition: gpoint.h:70
Definition: timer.h:30
SystemBubble * m_targBubble
PyResult AttemptDockOperation()
static const uint16 BUMP_DISTANCE
static const float WARP_ALIGNMENT
unsigned __int16 uint16
Definition: eve-compat.h:48
float m_userSpeedFraction
Python list.
Definition: PyRep.h:639
void WebbedMe(InventoryItemRef modRef, bool apply=false)
void SetBubble(bool set=false)