Player subclass list is always initialized.

This commit is contained in:
MobiusDevelopment
2019-05-14 21:16:20 +00:00
parent 5f6aaa1080
commit 574fbd3927
14 changed files with 182 additions and 168 deletions

View File

@ -436,7 +436,7 @@ public final class PlayerInstance extends Playable
private boolean _petItems = false;
/** The list of sub-classes this character has. */
private volatile Map<Integer, SubClass> _subClasses;
private final Map<Integer, SubClass> _subClasses = new ConcurrentHashMap<>();
private static final String ORIGINAL_CLASS_VAR = "OriginalClass";
@ -9795,7 +9795,20 @@ public final class PlayerInstance extends Playable
public boolean isDualClassActive()
{
return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass();
if (!isSubClassActive())
{
return false;
}
if (_subClasses.isEmpty())
{
return false;
}
final SubClass subClass = _subClasses.get(_classIndex);
if (subClass == null)
{
return false;
}
return subClass.isDualClass();
}
public boolean hasDualClass()
@ -9810,17 +9823,6 @@ public final class PlayerInstance extends Playable
public Map<Integer, SubClass> getSubClasses()
{
if (_subClasses == null)
{
synchronized (this)
{
if (_subClasses == null)
{
_subClasses = new ConcurrentHashMap<>();
}
}
}
return _subClasses;
}