ABS char skill system

This commit is contained in:
2024-03-27 17:17:34 -05:00
parent 27d869276a
commit aff2a8fa0e
16 changed files with 542 additions and 656 deletions
+16 -12
View File
@@ -9,6 +9,7 @@
package engine.objects;
import engine.Enum;
import engine.gameManager.DbManager;
import engine.gameManager.PowersManager;
import engine.net.ByteBufferWriter;
@@ -97,28 +98,29 @@ public class CharacterPower extends AbstractGameObject {
* This iterates through players runes and adds and removes powers as needed
* Don't Call this directly. Instead call pc.calculateSkills().
*/
public static void calculatePowers(PlayerCharacter pc) {
if (pc == null)
public static void calculatePowers(AbstractCharacter absChar) {
if (absChar == null || absChar.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) == false)
return;
PlayerCharacter pc = (PlayerCharacter) absChar;
// First add powers that don't exist
ConcurrentHashMap<Integer, CharacterPower> powers = pc.getPowers();
// ArrayList<PowerReq> genericPowers = PowerReq.getPowerReqsForAll();
// CharacterPower.grantPowers(genericPowers, powers, pc);
Race race = pc.getRace();
Race race = pc.race;
if (race != null) {
CharacterPower.grantPowers(race.getPowersGranted(), powers, pc);
} else
Logger.error("Failed to find Race for player " + pc.getObjectUUID());
BaseClass bc = pc.getBaseClass();
BaseClass bc = pc.baseClass;
if (bc != null) {
CharacterPower.grantPowers(bc.getPowersGranted(), powers, pc);
} else
Logger.error("Failed to find BaseClass for player " + pc.getObjectUUID());
PromotionClass promo = pc.getPromotionClass();
PromotionClass promo = pc.promotionClass;
if (promo != null)
CharacterPower.grantPowers(promo.getPowersGranted(), powers, pc);
ArrayList<CharacterRune> runes = pc.getRunes();
ArrayList<CharacterRune> runes = pc.runes;
if (runes != null) {
for (CharacterRune rune : runes) {
CharacterPower.grantPowers(rune.getPowersGranted(), powers, pc);
@@ -242,9 +244,11 @@ public class CharacterPower extends AbstractGameObject {
}
}
public static void grantTrains(PlayerCharacter pc) {
if (pc == null)
public static void grantTrains(AbstractCharacter absChar) {
if (absChar == null || absChar.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) == false)
return;
PlayerCharacter pc = (PlayerCharacter) absChar;
ConcurrentHashMap<Integer, CharacterPower> powers = pc.getPowers();
for (CharacterPower cp : powers.values()) {
cp.grantedTrains = cp.getGrantedTrains(pc);
@@ -526,13 +530,13 @@ public class CharacterPower extends AbstractGameObject {
return false;
ConcurrentHashMap<Integer, CharacterPower> powers = pc.getPowers();
Race race = pc.getRace();
Race race = pc.race;
if (race != null) {
if (!canRefine(race.getPowersGranted(), powers, pc))
return false;
} else
return false;
BaseClass bc = pc.getBaseClass();
BaseClass bc = pc.baseClass;
if (bc != null) {
if (!canRefine(bc.getPowersGranted(), powers, pc))
return false;
@@ -585,13 +589,13 @@ public class CharacterPower extends AbstractGameObject {
return false;
int token = this.power.getToken();
boolean valid = false;
Race race = pc.getRace();
Race race = pc.race;
if (race != null) {
if (CharacterPower.powerAllowed(token, race.getPowersGranted(), pc))
return true;
} else
return false;
BaseClass bc = pc.getBaseClass();
BaseClass bc = pc.baseClass;
if (bc != null) {
if (CharacterPower.powerAllowed(token, bc.getPowersGranted(), pc))
return true;