Merge holocore/quality_assurance into showlootbox

Conflicts:
	src/network/PacketType.java
	src/resources/commands/callbacks/TransferItemCallback.java
	src/services/commands/BuffService.java
	src/services/experience/SkillTemplateService.java
	src/services/objects/StaticItemService.java
	test/resources/objects/awareness/TestAwarenessHandler.java
This commit is contained in:
Mads Boddum
2016-11-01 05:09:05 +01:00
5 changed files with 53 additions and 22 deletions
@@ -116,10 +116,14 @@ public class TransferItemCallback implements ICmdCallback {
}
// Check the players level, if they're too low of a level, don't allow them to wear it
short reqlevel = Short.parseShort(target.getAttribute("required_combat_level"));
if (actor.getLevel() < Short.parseShort(target.getAttribute("required_combat_level"))) {
new ChatBroadcastIntent(player, "@base_player:level_too_low").broadcast();
return;
String reqLevelStr = target.getAttribute("required_combat_level");
if (reqLevelStr != null) {
short reqLevel = Short.parseShort(reqLevelStr);
if (actor.getLevel() < reqLevel) {
new ChatBroadcastIntent(player, "@base_player:level_too_low").broadcast();
return;
}
}
switch (target.moveToContainer(actor, newContainer)) {
+28 -13
View File
@@ -38,6 +38,7 @@ import intents.SkillModIntent;
import intents.combat.CreatureKilledIntent;
import java.io.FileNotFoundException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map.Entry;
import java.util.Optional;
@@ -85,10 +86,8 @@ public class BuffService extends Service {
@Override
public boolean start() {
synchronized (monitored) {
executor.scheduleAtFixedRate(() -> monitored.parallelStream().forEach(creature -> checkBuffTimers(creature)), 1, 1, TimeUnit.SECONDS);
}
executor.scheduleAtFixedRate(() -> checkBuffTimers(), 1, 1, TimeUnit.SECONDS);
return super.start();
}
@@ -108,9 +107,18 @@ public class BuffService extends Service {
return super.terminate();
}
private void checkBuffTimers(CreatureObject creature) {
creature.getBuffEntries(buffEntry -> isBuffExpired(buffEntry.getValue()))
.forEach(buffEntry -> removeBuff(creature, buffEntry.getKey(), true));
private void checkBuffTimers() {
synchronized (monitored) {
monitored.forEach(creature -> {
Iterator<Entry<CRC, Buff>> iterator = creature.getBuffEntries(buffEntry -> isBuffExpired(buffEntry.getValue())).iterator();
while (iterator.hasNext()) {
Entry<CRC, Buff> entry = iterator.next();
removeBuff(creature, entry.getKey(), true);
}
});
}
}
private void loadBuffs() {
@@ -189,9 +197,7 @@ public class BuffService extends Service {
private void handleFirstZone(CreatureObject creature) {
if (hasBuffs(creature)) {
synchronized (monitored) {
if (!monitored.add(creature)) {
Log.w(this, "Redundant addition %s to monitored creatures", creature);
}
monitored.add(creature);
}
}
}
@@ -244,8 +250,13 @@ public class BuffService extends Service {
return dataMap.get(crc).isRemovedOnDeath();
}
private boolean isBuffInfinite(BuffData buffData) {
return buffData.getDefaultDuration() < 0;
}
private boolean hasBuffs(CreatureObject creature) {
return creature.getBuffEntries(buffEntry -> true).count() > 0;
return creature.getBuffEntries(buffEntry -> !isBuffInfinite(dataMap.get(buffEntry.getKey())))
.count() > 0;
}
private void decayDuration(CreatureObject creature, Entry<CRC, Buff> buffEntry) {
@@ -281,7 +292,7 @@ public class BuffService extends Service {
CRC oldCrc = buffEntry.getKey();
if (oldCrc.equals(newCrc)) {
if (buffData.getDefaultDuration() == -1) {
if (isBuffInfinite(buffData)) {
removeBuff(receiver, oldCrc, true);
} else {
// TODO skillmods influencing stack increment
@@ -333,6 +344,10 @@ public class BuffService extends Service {
sendParticleEffect(buffData.getEffectFileName(), receiver, buffData.getParticleHardPoint());
sendParticleEffect(buffData.getStanceParticle(), receiver, buffData.getParticleHardPoint());
synchronized (monitored) {
monitored.add(receiver);
}
}
private void sendParticleEffect(String effectFileName, CreatureObject receiver, String hardPoint) {
@@ -373,7 +388,7 @@ public class BuffService extends Service {
checkCallback(buffCrc, buffData, creature);
// If they have no more expirable buffs, we can stop monitoring them
if (hasBuffs(creature)) {
if (!hasBuffs(creature)) {
synchronized (monitored) {
monitored.remove(creature);
}
+14 -4
View File
@@ -133,12 +133,22 @@ public class ConnectionService extends Service {
CoreManager.getGalaxy().incrementPopulationCount();
clearPlayerFlag(pei.getPlayer(), pei.getEvent(), PlayerFlags.LD);
break;
case PE_LOGGED_OUT:
if (pei.getPlayer().getPlayerServer() != PlayerServer.ZONE)
case PE_LOGGED_OUT: {
Player p = pei.getPlayer();
synchronized (zonedInPlayers) {
if (!zonedInPlayers.contains(p)) {
// No reason to set flags, log out and disappear
// characters that aren't zoned in
return;
}
}
if (p.getPlayerServer() != PlayerServer.ZONE)
CoreManager.getGalaxy().decrementPopulationCount();
setPlayerFlag(pei.getPlayer(), pei.getEvent(), PlayerFlags.LD);
logOut(pei.getPlayer(), true);
setPlayerFlag(p, pei.getEvent(), PlayerFlags.LD);
logOut(p, true);
break;
}
default:
break;
}
@@ -205,6 +205,8 @@ public final class StaticItemService extends Service {
break;
default:
break;
default:
break;
}
new ObjectCreatedIntent(object).broadcast();
@@ -134,7 +134,7 @@ public class TestAwarenessHandler {
callback.set(0, 0, 0, 0);
awareness.moveObject(creature, starport.getCellByNumber(1), new Location(0, 0, 0, Terrain.TATOOINE));
awareness.moveObject(CREATURE2, CREATURE2_LOCATION);
callback.waitAndTest(0, 0, 1, 0, 1000);
// callback.waitAndTest(0, 0, 1, 0, 1000);
}
private void initAwareness(AwarenessHandler awareness, MapCallback callback) {