Browse Source

PLayerCharacter.java Cleanup

lakebane
FatBoy-DOTC 5 days ago
parent
commit
031fd24842
  1. 397
      src/engine/objects/PlayerCharacter.java

397
src/engine/objects/PlayerCharacter.java

@ -3133,26 +3133,8 @@ public class PlayerCharacter extends AbstractCharacter {
public void calculateSpeedMod() { public void calculateSpeedMod() {
// get base race speed modifer // get base race speed modifer
//this is retarded. *** Refactor
// if (this.race != null) {
// int ID = this.race.getObjectUUID();
// if (ID == 2004 || ID == 2005)
// this.raceRunMod = 1.21f; // centaur run bonus 22%
//// else if (ID == 2017)
//// this.raceRunMod = 1.14f; // mino run bonus 15%
// else
// this.raceRunMod = 1;
// } else
// this.raceRunMod = 1;
float bonus = 1f; float bonus = 1f;
// // TODO: hardcoded, as didnt have time to introduce DB column to base object
// if (baseClass.getName().equals("Fighter") || baseClass.getName().equals("Rogue"))
// bonus += .05f;
// get running skill // get running skill
if (this.skills != null) { if (this.skills != null) {
CharacterSkill running = this.skills.get("Running"); CharacterSkill running = this.skills.get("Running");
@ -3205,14 +3187,6 @@ public class PlayerCharacter extends AbstractCharacter {
return this.follow; return this.follow;
} }
public int getLastGroupToInvite() {
return this.lastGroupToInvite;
}
public void setLastGroupToInvite(int value) {
this.lastGroupToInvite = value;
}
@Override @Override
public float getAltitude() { public float getAltitude() {
if (this.altitude < 0) if (this.altitude < 0)
@ -3261,10 +3235,6 @@ public class PlayerCharacter extends AbstractCharacter {
return this.loadedStaticObjects; return this.loadedStaticObjects;
} }
public void setLoadedStaticObjects(HashSet<AbstractWorldObject> value) {
this.loadedStaticObjects = value;
}
public boolean isTeleportMode() { public boolean isTeleportMode() {
return teleportMode; return teleportMode;
} }
@ -3272,20 +3242,6 @@ public class PlayerCharacter extends AbstractCharacter {
public void setTeleportMode(boolean teleportMode) { public void setTeleportMode(boolean teleportMode) {
this.teleportMode = teleportMode; this.teleportMode = teleportMode;
} }
// public ConcurrentHashMap<Integer, FinishRecycleTimeJob>
// getRecycleTimers() {
// return this.recycleTimers;
// }
// public UsePowerJob getLastPower() {
// return this.lastPower;
// }
// public void setLastPower(UsePowerJob value) {
// this.lastPower = value;
// }
// public void clearLastPower() {
// this.lastPower = null;
// }
public long chatFloodTime(int chatOpcode, long chatTimeMilli, int qtyToSave) { public long chatFloodTime(int chatOpcode, long chatTimeMilli, int qtyToSave) {
if (qtyToSave < 1) if (qtyToSave < 1)
return 0L; // disabled return 0L; // disabled
@ -3799,22 +3755,6 @@ public class PlayerCharacter extends AbstractCharacter {
return this.statStrCurrent - this.race.getStrStart() - this.baseClass.getStrMod(); return this.statStrCurrent - this.race.getStrStart() - this.baseClass.getStrMod();
} }
public int getDexForClient() {
return this.statDexCurrent - this.race.getDexStart() - this.baseClass.getDexMod();
}
public int getConForClient() {
return this.statConCurrent - this.race.getConStart() - this.baseClass.getConMod();
}
public int getIntForClient() {
return this.statIntCurrent - this.race.getIntStart() - this.baseClass.getIntMod();
}
public int getSpiForClient() {
return this.statSpiCurrent - this.race.getSpiStart() - this.baseClass.getSpiMod();
}
public int getTrainsAvailable() { public int getTrainsAvailable() {
return this.trainsAvailable.get(); return this.trainsAvailable.get();
} }
@ -3852,15 +3792,6 @@ public class PlayerCharacter extends AbstractCharacter {
} }
ConcurrentHashMap<Integer, Item> equipped = this.charItemManager.getEquipped(); ConcurrentHashMap<Integer, Item> equipped = this.charItemManager.getEquipped();
// // Reset passives
// if (this.bonuses != null) {
// this.bonuses.setBool("Block", false);
// this.bonuses.setBool("Parry", false);
// if (this.baseClass != null && this.baseClass.getUUID() == 2502)
// this.bonuses.setBool("Dodge", true);
// else
// this.bonuses.setBool("Dodge", false);
// }
// calculate atr and damage for each hand // calculate atr and damage for each hand
calculateAtrDamageForWeapon(equipped.get(MBServerStatics.SLOT_MAINHAND), true, equipped.get(MBServerStatics.SLOT_OFFHAND)); calculateAtrDamageForWeapon(equipped.get(MBServerStatics.SLOT_MAINHAND), true, equipped.get(MBServerStatics.SLOT_OFFHAND));
calculateAtrDamageForWeapon(equipped.get(MBServerStatics.SLOT_OFFHAND), false, equipped.get(MBServerStatics.SLOT_MAINHAND)); calculateAtrDamageForWeapon(equipped.get(MBServerStatics.SLOT_OFFHAND), false, equipped.get(MBServerStatics.SLOT_MAINHAND));
@ -3985,17 +3916,6 @@ public class PlayerCharacter extends AbstractCharacter {
max = (float) wb.getMaxDamage(); max = (float) wb.getMaxDamage();
strBased = wb.isStrBased(); strBased = wb.isStrBased();
//
// Add parry bonus for weapon and allow parry if needed
// // Only Fighters and Thieves can Parry
// if ((this.baseClass != null && this.baseClass.getUUID() == 2500)
// || (this.promotionClass != null && this.promotionClass.getUUID() == 2520)) {
// if (wbMain == null || wbMain.getRange() < MBServerStatics.RANGED_WEAPON_RANGE)
// if (wbOff == null || wbOff.getRange() < MBServerStatics.RANGED_WEAPON_RANGE)
// this.bonuses.setBool("Parry", true);
// }
// }
} }
if (this.effects != null && this.effects.containsKey("DeathShroud")) if (this.effects != null && this.effects.containsKey("DeathShroud"))
@ -4479,36 +4399,6 @@ public class PlayerCharacter extends AbstractCharacter {
return (amount - attackerLevel + this.getLevel()) / 4; return (amount - attackerLevel + this.getLevel()) / 4;
} }
public float getPassiveChance1(ModType modType, SourceType sourceType, int attackerLevel, boolean fromCombat) {
if (this.skills == null || this.bonuses == null)
return 0f;
// must be allowed to use this passive
if (!this.bonuses.getBool(modType, sourceType))
return 0f;
// must not be stunned
if (this.bonuses.getBool(ModType.Stunned, SourceType.None))
return 0f;
// Get base skill amount
CharacterSkill sk = this.skills.get(sourceType.name());
float amount;
if (sk == null)
amount = CharacterSkill.getQuickMastery(this, modType.name());
else
amount = sk.getModifiedAmount();
// Add bonuses
amount += this.bonuses.getFloat(modType, sourceType);
// Add item bonuses and return
if (sourceType.equals(SourceType.Dodge) && !fromCombat)
return ((amount / 4) - attackerLevel + this.getLevel()) / 4;
else
return (amount - attackerLevel + this.getLevel()) / 4;
}
public float getRegenModifier(ModType type) { public float getRegenModifier(ModType type) {
float regen = 1f; float regen = 1f;
@ -4593,10 +4483,6 @@ public class PlayerCharacter extends AbstractCharacter {
super.removeFromCache(); super.removeFromCache();
} }
public void storeIgnoreListDB() {
}
public void updateSkillsAndPowersToDatabase() { public void updateSkillsAndPowersToDatabase() {
if (this.skills != null) if (this.skills != null)
for (CharacterSkill skill : this.skills.values()) { for (CharacterSkill skill : this.skills.values()) {
@ -4765,17 +4651,6 @@ public class PlayerCharacter extends AbstractCharacter {
return true; return true;
} }
// Method is called by Server Heartbeat simulation tick.
// Stat regen and transform updates should go in here.
public boolean isNoTeleScreen() {
return noTeleScreen;
}
public void setNoTeleScreen(boolean noTeleScreen) {
this.noTeleScreen = noTeleScreen;
}
private double getDeltaTime() { private double getDeltaTime() {
return (System.currentTimeMillis() - lastUpdateTime) * .001f; return (System.currentTimeMillis() - lastUpdateTime) * .001f;
@ -4817,30 +4692,6 @@ public class PlayerCharacter extends AbstractCharacter {
return false; return false;
} }
public boolean isSwimming(Vector3fImmutable currentLoc) {
// If char is flying they aren't quite swimming
try {
float localAltitude = HeightMap.getWorldHeight(currentLoc);
Zone zone = ZoneManager.findSmallestZone(currentLoc);
if (zone.getSeaLevel() != 0) {
if (localAltitude < zone.getSeaLevel())
return true;
} else {
if (localAltitude < 0)
return true;
}
} catch (Exception e) {
Logger.info(this.getName() + e);
}
return false;
}
private static void forceRespawn(PlayerCharacter sourcePlayer) throws MsgSendException { private static void forceRespawn(PlayerCharacter sourcePlayer) throws MsgSendException {
if (sourcePlayer == null) if (sourcePlayer == null)
@ -4897,11 +4748,6 @@ public class PlayerCharacter extends AbstractCharacter {
while (this.level < 10) { while (this.level < 10) {
grantXP(Experience.getBaseExperience(this.level + 1) - this.exp); grantXP(Experience.getBaseExperience(this.level + 1) - this.exp);
} }
//if(this.charItemManager != null && this.charItemManager.getGoldInventory() != null && this.charItemManager.getGoldInventory().getNumOfItems() < 1000) {
// this.getCharItemManager().addGoldToInventory(1000, false);
// this.getCharItemManager().addItemToInventory(new MobLoot(this, ItemBase.getItemBase(980066), 1, false).promoteToItem(this));
// this.getCharItemManager().updateInventory();
//}
} }
if(this.isBoxed && !this.containsEffect(1672601862)) { if(this.isBoxed && !this.containsEffect(1672601862)) {
@ -5064,7 +4910,6 @@ public class PlayerCharacter extends AbstractCharacter {
ChatManager.chatSystemInfo(this, ChatManager.chatSystemInfo(this,
"Arrived at End location. " + this.getEndLoc()); "Arrived at End location. " + this.getEndLoc());
return; return;
//Next upda
} }
setLoc(newLoc); setLoc(newLoc);
@ -5076,11 +4921,6 @@ public class PlayerCharacter extends AbstractCharacter {
if (this.getStamina() < 10) if (this.getStamina() < 10)
MovementManager.sendOOS(this); MovementManager.sendOOS(this);
// if (MBServerStatics.MOVEMENT_SYNC_DEBUG || this.getDebug(1))
// Logger.info("MovementManager", "Updating movement current loc:" + this.getLoc().getX() + " " + this.getLoc().getZ()
// + " end loc: " + this.getEndLoc().getX() + " " + this.getEndLoc().getZ() + " distance " + this.getEndLoc().distance2D(this.getLoc()));
} }
@Override @Override
@ -5457,23 +5297,11 @@ public class PlayerCharacter extends AbstractCharacter {
return movementState; return movementState;
} }
public boolean isHasAnniversery() {
return hasAnniversery;
}
public void setHasAnniversery(boolean hasAnniversery) { public void setHasAnniversery(boolean hasAnniversery) {
DbManager.PlayerCharacterQueries.SET_ANNIVERSERY(this, hasAnniversery); DbManager.PlayerCharacterQueries.SET_ANNIVERSERY(this, hasAnniversery);
this.hasAnniversery = hasAnniversery; this.hasAnniversery = hasAnniversery;
} }
public int getSpamCount() {
return spamCount;
}
public void setSpamCount(int spamCount) {
this.spamCount = spamCount;
}
public String getHash() { public String getHash() {
return hash; return hash;
} }
@ -5499,10 +5327,6 @@ public class PlayerCharacter extends AbstractCharacter {
this.lastRealmID = lastRealmID; this.lastRealmID = lastRealmID;
} }
public int getSubRaceID() {
return subRaceID;
}
public void setSubRaceID(int subRaceID) { public void setSubRaceID(int subRaceID) {
this.subRaceID = subRaceID; this.subRaceID = subRaceID;
} }
@ -5515,29 +5339,6 @@ public class PlayerCharacter extends AbstractCharacter {
this.guildHistory = guildHistory; this.guildHistory = guildHistory;
} }
public void moveTo(Vector3fImmutable endLoc) {
this.setInBuilding(-1);
this.setInFloorID(-1);
MoveToPointMsg moveToMsg = new MoveToPointMsg();
moveToMsg.setStartCoord(this.getLoc());
moveToMsg.setEndCoord(endLoc);
moveToMsg.setInBuilding(-1);
moveToMsg.setUnknown01(-1);
moveToMsg.setSourceType(GameObjectType.PlayerCharacter.ordinal());
moveToMsg.setSourceID(this.getObjectUUID());
Dispatch dispatch = Dispatch.borrow(this, moveToMsg);
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.PRIMARY);
try {
MovementManager.movement(moveToMsg, this);
} catch (MsgSendException e) {
// TODO Auto-generated catch block
Logger.error("Player.MoveTo", this.getName() + " tripped error " + e.getMessage());
}
}
public void updateScaleHeight() { public void updateScaleHeight() {
float strengthScale = 0; float strengthScale = 0;
@ -5574,10 +5375,6 @@ public class PlayerCharacter extends AbstractCharacter {
this.overFlowEXP = overFlowEXP; this.overFlowEXP = overFlowEXP;
} }
public MovementState getLastMovementState() {
return lastMovementState;
}
public void setLastMovementState(MovementState lastMovementState) { public void setLastMovementState(MovementState lastMovementState) {
this.lastMovementState = lastMovementState; this.lastMovementState = lastMovementState;
} }
@ -5609,14 +5406,6 @@ public class PlayerCharacter extends AbstractCharacter {
return characterHeight; return characterHeight;
} }
public void setCharacterHeight(float characterHeight) {
this.characterHeight = characterHeight;
}
public void setCenterHeight(float centerHeight) {
this.centerHeight = centerHeight;
}
public boolean isEnteredWorld() { public boolean isEnteredWorld() {
return enteredWorld; return enteredWorld;
} }
@ -5625,26 +5414,10 @@ public class PlayerCharacter extends AbstractCharacter {
this.enteredWorld = enteredWorld; this.enteredWorld = enteredWorld;
} }
public long getChannelMute() {
return channelMute;
}
public void setChannelMute(long channelMute) {
this.channelMute = channelMute;
}
public boolean isLastSwimming() { public boolean isLastSwimming() {
return lastSwimming; return lastSwimming;
} }
public boolean isTeleporting() {
return isTeleporting;
}
public void setTeleporting(boolean isTeleporting) {
this.isTeleporting = isTeleporting;
}
@Override @Override
public final void teleport(final Vector3fImmutable targetLoc) { public final void teleport(final Vector3fImmutable targetLoc) {
@ -5694,176 +5467,6 @@ public class PlayerCharacter extends AbstractCharacter {
dirtyLock.writeLock().unlock(); dirtyLock.writeLock().unlock();
} }
public static float getRegenRate(PlayerCharacter player, ModType type){
float regenRate = player.getRegenModifier(type);
player.updateMovementState();
switch (player.movementState) {
case IDLE:
if(player.walkMode){
switch(type){
case HealthRecoverRate:
regenRate = MBServerStatics.HEALTH_REGEN_WALK * regenRate;
break;
case ManaRecoverRate:
regenRate = MBServerStatics.MANA_REGEN_WALK * regenRate;
break;
case StaminaRecoverRate:
regenRate = MBServerStatics.STAMINA_REGEN_WALK * regenRate;
break;
}
}else{
switch(type){
case HealthRecoverRate:
regenRate = MBServerStatics.HEALTH_REGEN_IDLE * regenRate;
break;
case ManaRecoverRate:
regenRate = MBServerStatics.MANA_REGEN_IDLE * regenRate;
break;
case StaminaRecoverRate:
regenRate = MBServerStatics.STAMINA_REGEN_IDLE * regenRate;
break;
}
}
break;
case RUNNING:
if(type.equals(ModType.StaminaRecoverRate)){
if(player.walkMode){
regenRate = 0f;
}else{
if(player.combat){
regenRate = MBServerStatics.STAMINA_REGEN_RUN_COMBAT * regenRate;
}else{
regenRate = MBServerStatics.STAMINA_REGEN_RUN_NONCOMBAT * regenRate;
}
}
}else{
regenRate = 0f;
}
break;
case SWIMMING:
switch(type){
case HealthRecoverRate:
regenRate = MBServerStatics.HEALTH_REGEN_IDLE_STATIC * regenRate;
break;
case ManaRecoverRate:
regenRate = MBServerStatics.MANA_REGEN_IDLE * regenRate;
break;
case StaminaRecoverRate:
regenRate = MBServerStatics.STAMINA_REGEN_SWIM;
break;
}
break;
case SITTING:
switch(type){
case HealthRecoverRate:
regenRate = MBServerStatics.HEALTH_REGEN_SIT * regenRate;
break;
case ManaRecoverRate:
regenRate = MBServerStatics.MANA_REGEN_SIT * regenRate;
break;
case StaminaRecoverRate:
regenRate = MBServerStatics.STAMINA_REGEN_SIT * regenRate;
break;
}
break;
case FLYING:
switch(type){
case HealthRecoverRate:
regenRate = MBServerStatics.HEALTH_REGEN_SIT * regenRate;
break;
case ManaRecoverRate:
regenRate = MBServerStatics.MANA_REGEN_IDLE * regenRate;
break;
case StaminaRecoverRate:
regenRate = MBServerStatics.STAMINA_REGEN_FLY_IDLE * regenRate;
break;
}
break;
}
return regenRate;
}
public void regenerate(){
if ((!this.isAlive()) || (!this.isActive()) || this.getLoc().x == 0 && this.getLoc().z == 0)
return;
float healthPerSecond = this.healthMax * 0.01f; // 1% of health
float manaPerSecond = this.manaMax * 0.01f; // 1% of health
float staminaPerSecond = this.staminaMax * 0.01f; // 1% of health
float healthRegenrated = 0f;
float manaRegenrated = 0f;
float staminaRegenrated = 0f;
long currentTime = System.currentTimeMillis();
if (this.updateLock.writeLock().tryLock()) {
try {
Long regenTime;
if(this.timestamps.containsKey("LastRegen"))
regenTime = this.timestamps.get("LastRegen");
else
regenTime = currentTime;
float secondsPassed = (currentTime - regenTime) / 1000f;
healthRegenrated = healthPerSecond * secondsPassed * getRegenRate(this, ModType.HealthRecoverRate);
manaRegenrated = manaPerSecond * secondsPassed * getRegenRate(this, ModType.ManaRecoverRate);
staminaRegenrated = staminaPerSecond * secondsPassed * getRegenRate(this, ModType.StaminaRecoverRate);
boolean workedHealth = false;
boolean workedMana = false;
boolean workedStamina = false;
float old, mod;
while (!workedHealth || !workedMana || !workedStamina) {
if (!this.isAlive() || !this.isActive())
return;
if (!workedHealth) {
old = this.health.get();
mod = old + healthRegenrated;
if (mod > this.healthMax)
mod = healthMax;
else if (mod <= 0) {
if (this.isAlive.compareAndSet(true, false))
killCharacter("Water");
return;
}
workedHealth = this.health.compareAndSet(old, mod);
}
if (!workedStamina) {
old = this.stamina.get();
mod = old + staminaRegenrated;
if (mod > this.staminaMax)
mod = staminaMax;
else if (mod < 0)
mod = 0;
workedStamina = this.stamina.compareAndSet(old, mod);
}
if (!workedMana) {
old = this.mana.get();
mod = old + manaRegenrated;
if (mod > this.manaMax)
mod = manaMax;
else if (mod < 0)
mod = 0;
workedMana = this.mana.compareAndSet(old, mod);
}
}
if (this.stamina.get() < this.staminaMax * 0.1f && this.isFlying())
this.syncClient();
} catch (Exception e) {
Logger.error(e);
} finally {
this.timestamps.put("LastRegen",currentTime);
this.updateLock.writeLock().unlock();
}
}
}
public void doRegen(){ public void doRegen(){
if (this.updateLock.writeLock().tryLock()) { if (this.updateLock.writeLock().tryLock()) {
try { try {

Loading…
Cancel
Save