Giter Club home page Giter Club logo

src's Introduction

Star Wars Galaxies Source Code (C++) Repository

This is the main server code for SWGSource 1.2 as originally forked from the https://bitbucket.org/stellabellumswg/ repository. Please see that repository for original publication and alteration credit.

Works in progress

  • 64-bit-types - fully 64 bit version that builds and runs completely.

Building

For local testing, and non-live builds set MODE=Release or MODE=Debug in the build.properties file in swg-main.

For production, user facing builds, set MODE=MINSIZEREL for profile built, heavily optimized versions of the binaries.

Profiling and Using Profiles (IN-WORK)

To generate new profiles, build SWG with MODE=RELWITHDEBINFO.

Add export LLVM_PROFILE_FILE="output-%p.profraw" to your startServer.sh file.

WHILE THE SERVER IS RUNNING do a ps -a to get the pid's of each SWG executable. And take note of which ones are which.

After you cleanly exit (shutdown) the server, and ctrl+c the LoginServer, move each output-pid.profraw to a folder named for it's process.

Then, proceed to combine them into usable profiles for the compiler:

llvm-profdata merge -output=code.profdata output-*.profraw

Finally, then replace the profdata files with the updated versions, within the src/ tree.

See http://clang.llvm.org/docs/UsersManual.html#profiling-with-instrumentation for more information.

More Information

See https://swg-source.github.io/ for more information on the SWG Source project.

Join the SWGSource Discord if you would like to contribute: https://discord.gg/j53cMj9

src's People

Contributors

aconitex avatar alech92 avatar apathyboy avatar cekis avatar darthargus avatar erusman avatar geit avatar hackeranonymousdeepweb avatar irishdarkshadow avatar omegaswg avatar phoenixviridian avatar rohvani avatar swgnoobs avatar tekaoh avatar unusedaccount avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

src's Issues

Space related compile errors

start:
     [exec] CentralServer not launching starting processes because m_clusterId is 0 - not received from the LoginServer yet
     [exec] Cluster Tarkin is not ready for players.
     [exec] CentralServer now launching starting processes because has a connection to the TaskManager *AND* has received cluster Id (1) from the LoginServer
     [exec] New Central Server connection active
     [exec] New Database Server connection active
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] Cluster Tarkin is not ready for players.
     [exec] [Commodities Server] : 0 locations loaded to memory from database in (2) seconds.
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] [Commodities Server] : 0 auctions loaded to memory from database in (1) seconds.
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] [Commodities Server] : 0 auction attributes loaded to memory from database in (0) seconds.
     [exec] New Planet Server connection active
     [exec] [Commodities Server] : 0 bids loaded to memory from database in (0) seconds.
     [exec] CommoditiesLoadDone Message received on connection with the database server
     [exec] 0 rows received on Auction_Locations
     [exec] 0 rows received on Market_Auctions
     [exec] 0 rows received on Market_Auction_Attributes
     [exec] 0 rows received on Market_Auction_Bids
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Planet Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] New Game Server connection active
     [exec] ERROR calling dictionary.put(Object, Vector): empty resizeable array value
     [exec] java.lang.Exception: Stack trace
     [exec] 	at java.base/java.lang.Thread.dumpStack(Thread.java:1388)
     [exec] 	at script.dictionary.put(dictionary.java:418)
     [exec] 	at script.systems.gcw.space.battle_spawner.endBattle(battle_spawner.java:411)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [exec] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [exec] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     [exec] 	at script.script_entry.callMessageHandler(script_entry.java:745)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:954)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:875)
     [exec] WARNING: script.internal_script_exception: JavaLibrary::getTransform_o2p could not resolve object
     [exec] java.lang.reflect.InvocationTargetException
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [exec] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [exec] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     [exec] 	at script.script_entry.callMessageHandler(script_entry.java:745)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:954)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:875)
     [exec] Caused by: script.internal_script_exception: JavaLibrary::getTransform_o2p could not resolve object
     [exec] 	at script.base_class._getTransform_o2p(Native Method)
     [exec] 	at script.base_class.getTransform_o2p(base_class.java:9673)
     [exec] 	at script.systems.gcw.space.battle_spawner.createUnit(battle_spawner.java:383)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnStandardShip(battle_spawner.java:315)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnSupportShips(battle_spawner.java:292)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnSupportCraft(battle_spawner.java:254)
     [exec] 	... 7 more
     [exec] ERROR calling dictionary.put(Object, Vector): empty resizeable array value
     [exec] java.lang.Exception: Stack trace
     [exec] 	at java.base/java.lang.Thread.dumpStack(Thread.java:1388)
     [exec] 	at script.dictionary.put(dictionary.java:418)
     [exec] 	at script.systems.gcw.space.battle_spawner.endBattle(battle_spawner.java:411)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [exec] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [exec] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     [exec] 	at script.script_entry.callMessageHandler(script_entry.java:745)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:954)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:875)
     [exec] ERROR calling dictionary.put(Object, Vector): empty resizeable array value
     [exec] java.lang.Exception: Stack trace
     [exec] 	at java.base/java.lang.Thread.dumpStack(Thread.java:1388)
     [exec] 	at script.dictionary.put(dictionary.java:418)
     [exec] 	at script.systems.gcw.space.battle_spawner.endBattle(battle_spawner.java:411)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [exec] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [exec] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     [exec] 	at script.script_entry.callMessageHandler(script_entry.java:745)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:954)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:875)
     [exec] WARNING: script.internal_script_exception: JavaLibrary::getTransform_o2p could not resolve object
     [exec] java.lang.reflect.InvocationTargetException
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [exec] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [exec] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     [exec] 	at script.script_entry.callMessageHandler(script_entry.java:745)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:954)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:875)
     [exec] Caused by: script.internal_script_exception: JavaLibrary::getTransform_o2p could not resolve object
     [exec] 	at script.base_class._getTransform_o2p(Native Method)
     [exec] 	at script.base_class.getTransform_o2p(base_class.java:9673)
     [exec] 	at script.systems.gcw.space.battle_spawner.createUnit(battle_spawner.java:383)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnStandardShip(battle_spawner.java:315)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnSupportShips(battle_spawner.java:292)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnSupportCraft(battle_spawner.java:254)
     [exec] 	... 7 more
     [exec] WARNING: script.internal_script_exception: JavaLibrary::getTransform_o2p could not resolve object
     [exec] java.lang.reflect.InvocationTargetException
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [exec] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [exec] 	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     [exec] 	at script.script_entry.callMessageHandler(script_entry.java:745)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:954)
     [exec] 	at script.script_entry.callMessageHandlers(script_entry.java:875)
     [exec] Caused by: script.internal_script_exception: JavaLibrary::getTransform_o2p could not resolve object
     [exec] 	at script.base_class._getTransform_o2p(Native Method)
     [exec] 	at script.base_class.getTransform_o2p(base_class.java:9673)
     [exec] 	at script.systems.gcw.space.battle_spawner.createUnit(battle_spawner.java:383)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnStandardShip(battle_spawner.java:315)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnSupportShips(battle_spawner.java:292)
     [exec] 	at script.systems.gcw.space.battle_spawner.spawnSupportCraft(battle_spawner.java:254)
     [exec] 	... 7 more

`

GU 22.0 - Atmo - Ground PvP

Atmospheric Flight Air <-> Ground PvP pt.2:
- The missile launcher is now on permanent Weapon Overload - Two-And-A-Half (1.85x damage increase).
- The ship must be moving above a certain speed threshold for the hit on the ground character to count. The speed threshold is approximately the same as a character's normal run speed. If you keep shooting at ground characters while below the speed threshold, you will eventually get a system message reminding you of the errors of your way.
- Combat spam is now generated when the ship is hit by missile fired by a ground character.

Character sometimes gets created incorrectly

I've seen this issue quite a few times. I thought it was just me, but @AlecH92 mentioned that he saw it too.

Sometimes, when creating a new character, the toon will spawn in Mos Eisley with no clothes or hair. When that happens, the following also shows up on the server's console:
(where Player 13021818 is the one I just made)

Verify and lock name requested for stationId 652293343
WARNING:     (f5966200): Player 13021818 has lost their datapad
    (f5966200): Player 13021818 has lost their datapad
WARNING:     (1940b2db): Player 13021818 has lost their mission bag
    (1940b2db): Player 13021818 has lost their mission bag
WARNING:     (db8185f6): Player 13021818 has lost their bank
    (db8185f6): Player 13021818 has lost their bank

If I then immediately shut down the server and restart it and log in again, my clothes and hair appear, but now the following is in the console:

WARNING STRICT FATAL:     (cce20ac4): Could not depersist item [13021844] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
    (cce20ac4): Could not depersist item [13021844] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
WARNING STRICT FATAL:     (cce20ac4): Could not depersist item [13021825] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
    (cce20ac4): Could not depersist item [13021825] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
WARNING STRICT FATAL:     (cce20ac4): Could not depersist item [13021822] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
    (cce20ac4): Could not depersist item [13021822] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
WARNING STRICT FATAL:     (cce20ac4): Could not depersist item [13021821] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
    (cce20ac4): Could not depersist item [13021821] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
WARNING STRICT FATAL:     (cce20ac4): Could not depersist item [13021820] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.
    (cce20ac4): Could not depersist item [13021820] into container [13021818] because there was no good arrangement, ContainerErrorCode=4.  See previous warning.  We then attempted to find a different arrangement to put the item into, because the item really belongs in this container, but could not because it was either already occupied or the arrangement of the item was changed so that it cannot be placed in this container anymore.   This is typically bad, and may result in the item being in an invalid state or even moved to 0 0 0 in the world.  This might happen because the arrangement file was changed for this object and existing objects could no longer be persisted into their containers.

These errors will appear every time I start the server and then log in.

In SQL Developer, I can see that those 5 objects got created twice. They are my datapad, bank, mission_bag, appearance_inventory, and default_weapon.

problem1

Also sometimes starting items like Jabba's Comlink are missing.

Reported Chat Server Issues

Some reports needing investigating

  • Inability to use /addFriend and/or it not working in some way
  • If you're online you'll see your friends come online, if they come online after you. But if they're online before you then you won't see them online

Idle Logout Timer Issue

Reported by Nifenap via Discord:

really weird stuff going on with the idle logout time... did some further testing...

yesterday, before going to bed I set up the server with timeout set to 900s (which should result in 15 minutes after going auto afk after 10 minutes). I let the PC run and had two clients logged in. one with anti afk script (simply spamming an emoute every minute) and one without.
This morning both were still logged in.

next try was setting the timer variable to 60 - which shouldLD the char 60s after the AFK is set. well - it doesn't. The char went LD after 5 Minutes (300s).

next try was the default setting from the GIT repo again (300). should be 5 Minutes. But it's about 15 Minutes.

next try was setting the variable 600 - which seem to have same effect as 900 - no LD.

./ponder

I also tried to dig through the C++ files which seem to be related to the variable. But I'm not really that C++ guy. I did not find a calculation or something which could explain this strange behaviour. shrug

For now it seems to work with my 900 setting as "no LD" , but it's something which is not working as intended, I'd say.

Update all calling methods of SessionApiClient::OnSessionValidate()

This likely needs updating a bit deeper. It's being cast as a uint64 because the calling method has userData as a void * type. Because of 64 bits, a void * becomes a 64 bit value. The calling method needs to be updated to not accept a void if at all possible and all callers of the calling method should also be updated. Great catch!

Originally posted by @Cekis in #23 (comment)

GU 21.0 - Atmo Flight

  • The ship owner can kick passengers/gunners off the ship using the existing /kickFromShip command.
    • You can launch directly into space from atmospheric flight. Once the ship is above 6000m altitude, an "ENTER SPACE" button will be displayed on the pilot's HUD that will allow direct launch into the corresponding space zone. Clicking the button will display a popup menu to select the space zone's hyperspace point to launch to.
    • If the ship hits the terrain while flying, it will sustain damage proportionate to the ship's current mass and speed.
    • All forms of ship-to-ship PvP are available while in atmospheric flight - factional and privateer factional helper (/spacepvprebel, /spacepvpimperial, /spacefaction), player bounty system, guild war, guild squad PvP, duel.
    • Player bounty system and guild war exemption/exclusive status fall under the "space" ruleset while in atmospheric flight.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.