mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-21 11:03:13 -04:00
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:
@@ -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)) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user