mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-10 00:13:42 -04:00
Fixed an issue where you could receive the rewards of a level twice
This commit is contained in:
@@ -29,14 +29,23 @@ package services.experience;
|
||||
|
||||
import intents.experience.LevelChangedIntent;
|
||||
import intents.experience.SkillBoxGrantedIntent;
|
||||
import java.awt.Color;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import network.packets.swg.zone.PlayClientEffectObjectMessage;
|
||||
import network.packets.swg.zone.PlayMusicMessage;
|
||||
import network.packets.swg.zone.object_controller.ShowFlyText;
|
||||
import network.packets.swg.zone.object_controller.ShowFlyText.Scale;
|
||||
import resources.client_info.ClientFactory;
|
||||
import resources.client_info.visitors.DatatableData;
|
||||
import resources.common.RGB;
|
||||
import resources.control.Intent;
|
||||
import resources.control.Service;
|
||||
import resources.encodables.OutOfBandPackage;
|
||||
import resources.encodables.StringId;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import resources.player.Player;
|
||||
import resources.server_info.Log;
|
||||
|
||||
/**
|
||||
@@ -77,8 +86,10 @@ public final class SkillTemplateService extends Service {
|
||||
short oldLevel = i.getPreviousLevel();
|
||||
short newLevel = i.getNewLevel();
|
||||
CreatureObject creatureObject = i.getCreatureObject();
|
||||
Player player = creatureObject.getOwner();
|
||||
long objectId = creatureObject.getObjectId();
|
||||
|
||||
for (int level = oldLevel; level <= newLevel; level++) {
|
||||
for (int level = oldLevel + 1; level <= newLevel; level++) {
|
||||
// Skills are only awarded every third or fourth level
|
||||
if ((level == 4 || level == 7 || level == 10) || ((level > 10) && (((level - 10) % 4) == 0))) {
|
||||
PlayerObject playerObject = creatureObject.getPlayerObject();
|
||||
@@ -93,12 +104,16 @@ public final class SkillTemplateService extends Service {
|
||||
String skillName = templates[skillIndex];
|
||||
new SkillBoxGrantedIntent(skillName, creatureObject).broadcast();
|
||||
playerObject.setProfWheelPosition(skillName);
|
||||
|
||||
// TODO roadmap reward items
|
||||
// TODO flytext object.showFlyText(OutOfBand.ProsePackage("@cbt_spam:skill_up"), 2.5f, new RGB(154, 205, 50), 0, true);
|
||||
// TODO client effect clienteffect/skill_granted.cef
|
||||
// TODO audio sound/music_acq_bountyhunter.snd
|
||||
|
||||
creatureObject.sendObserversAndSelf(new PlayClientEffectObjectMessage("clienteffect/skill_granted.cef", "", objectId));
|
||||
sendPacket(player, new ShowFlyText(objectId, new StringId("cbt_spam", "skill_up"), Scale.LARGEST, new RGB(Color.GREEN)));
|
||||
sendPacket(player, new PlayMusicMessage(0, "sound/music_acq_bountyhunter.snd", 1, false));
|
||||
}
|
||||
} else {
|
||||
creatureObject.sendObserversAndSelf(new PlayClientEffectObjectMessage("clienteffect/level_granted.cef", "", objectId));
|
||||
sendPacket(player, new ShowFlyText(objectId, new StringId("cbt_spam", "level_up"), Scale.LARGEST, new RGB(Color.BLUE)));
|
||||
Log.d(this, "Level %d has no skillbox - %s is rewarded nothing", level, creatureObject);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user