diff --git a/.gitignore b/.gitignore index de39aaf3..b9cbf8fe 100644 --- a/.gitignore +++ b/.gitignore @@ -78,7 +78,8 @@ odb/cities/je.info.* .buildpath # Log files -debuglogs/ +debuglogs/ +logs/ ################# ## Visual Studio diff --git a/scripts/object/weapon/ranged/carbine/weapon_npe_commando_carbine_03_01.py b/scripts/object/weapon/ranged/carbine/weapon_npe_commando_carbine_03_01.py index ffeb530b..019a20c2 100644 --- a/scripts/object/weapon/ranged/carbine/weapon_npe_commando_carbine_03_01.py +++ b/scripts/object/weapon/ranged/carbine/weapon_npe_commando_carbine_03_01.py @@ -13,5 +13,5 @@ def setup(core, object): object.setDamageType("energy"); object.setMinDamage(20); object.setMaxDamage(40); - object.setWeaponType(Weapon.Type.CARBINE); + object.setWeaponType(WeaponType.CARBINE); return \ No newline at end of file diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 348dc54f..a23d5d75 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -137,6 +137,7 @@ import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; import engine.resources.service.InteractiveJythonAcceptor; import engine.resources.service.NetworkDispatch; +import engine.resources.service.UncaughtExceptionLogger; import engine.servers.InteractiveJythonServer; import engine.servers.MINAServer; import engine.servers.PingServer; @@ -145,6 +146,8 @@ import engine.servers.PingServer; public class NGECore { + private static boolean logUnhandledExceptions = false; + public static boolean didServerCrash = false; private static NGECore instance; @@ -246,6 +249,7 @@ public class NGECore { public void start() { instance = this; + final ThreadMonitor deadlockDetector = new ThreadMonitor(); Thread deadlockMonitor = new Thread(new Runnable() { @Override @@ -618,7 +622,9 @@ public class NGECore { } public static void main(String[] args) { - + //With this class, we are overwriting the JVM's way of handling exceptions that are never caught. Very handy so no try/catch spam for every method. + if (logUnhandledExceptions) Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionLogger("./logs/uncaught")); + NGECore core = new NGECore(); core.start(); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index a321f74c..7ede2796 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -1174,6 +1174,13 @@ public class ObjectService implements INetworkDispatch { }); } + // New players that skip tutorial + if (creature.getLevel() <= (short) 1) { + core.playerService.grantLevel(creature, 5); + TangibleObject inventory = (TangibleObject) creature.getSlottedObject("inventory"); + if (inventory != null) inventory.add(core.objectService.createObject("object/tangible/npe/shared_npe_uniform_box.iff", creature.getPlanet())); + } + core.playerService.postZoneIn(creature); }