Browse Source

PlayerCombatStats attack delay

lakebane-dex-penalty
FatBoy-DOTC 6 days ago
parent
commit
96a80ce1b6
  1. 105
      src/engine/objects/PlayerCombatStats.java

105
src/engine/objects/PlayerCombatStats.java

@ -364,7 +364,7 @@ public class PlayerCombatStats { @@ -364,7 +364,7 @@ public class PlayerCombatStats {
}else {
weapon = this.owner.charItemManager.getEquipped(2);
}
float delayExtra = 0;
if(weapon == null) {
speed = 20.0f;
}else{
@ -376,6 +376,9 @@ public class PlayerCombatStats { @@ -376,6 +376,9 @@ public class PlayerCombatStats {
int trains = eff.getTrains();
float modValue = percent + (trains * mod.getRamp());
speed *= 1 + (modValue * 0.01f);
if(mod.modType.equals(Enum.ModType.AttackDelay)){
delayExtra += modValue * 0.01f;
}
}
}
}
@ -398,7 +401,7 @@ public class PlayerCombatStats { @@ -398,7 +401,7 @@ public class PlayerCombatStats {
}
float bonusValues = 1 + this.owner.bonuses.getFloatPercentAll(Enum.ModType.AttackDelay,Enum.SourceType.None);//1.0f;
bonusValues -= stanceValue; // take away stance modifier from alac bonus values
bonusValues -= stanceValue + delayExtra; // take away stance modifier from alac bonus values
speed *= 1 + stanceValue; // apply stance bonus
speed *= bonusValues; // apply alac bonuses without stance mod
@ -484,8 +487,10 @@ public class PlayerCombatStats { @@ -484,8 +487,10 @@ public class PlayerCombatStats {
}
}
for(String armorUsed : armorsUsed){
if(this.owner.skills.containsKey(armorUsed))
armorSkill += this.owner.skills.get(armorUsed).getModifiedAmount();
if(this.owner.skills.containsKey(armorUsed)) {
armorSkill += this.owner.skills.get(armorUsed).getSkillPercentFromAttributes();
armorSkill += this.owner.skills.get(armorUsed).getSkillPercentFromTrains();
}
}
if(armorsUsed.size() > 0)
armorSkill = armorSkill / armorsUsed.size();
@ -575,7 +580,6 @@ public class PlayerCombatStats { @@ -575,7 +580,6 @@ public class PlayerCombatStats {
}
public static float calculateModifiedSkill(String skillName, PlayerCharacter pc) {
// Define the contribution percentages for intelligence and strength
CharacterSkill skill = null;
if (pc.skills.containsKey(skillName)) {
skill = pc.skills.get(skillName);
@ -585,45 +589,72 @@ public class PlayerCombatStats { @@ -585,45 +589,72 @@ public class PlayerCombatStats {
if(skillBase == null)
return 0;
float strMod = skillBase.getStrMod();
float dexMod = skillBase.getDexMod();
float conMod = skillBase.getConMod();
float intMod = skillBase.getIntMod();
float spiMod = skillBase.getSpiMod();
float totalMod = strMod + dexMod + conMod + intMod + spiMod;
// Calculate percentage contribution for each modifier
float strModPercentage = (strMod / totalMod);
float dexModPercentage = (dexMod / totalMod);
float conModPercentage = (conMod / totalMod);
float intModPercentage = (intMod / totalMod);
float spiModPercentage = (spiMod / totalMod);
//calculate stat weight
float weight = 0;
weight += pc.statStrBase * strModPercentage;
weight += pc.statDexBase * dexModPercentage;
weight += pc.statConBase * conModPercentage;
weight += pc.statIntBase * intModPercentage;
weight += pc.statSpiBase * spiModPercentage;
Enum.SourceType sourceType = Enum.SourceType.GetSourceType(skillBase.getNameNoSpace());
float base = 7f;
base += CharacterSkill.baseSkillValues[(int) weight];
//Get any rune bonus
float bonus = 0f;
if (CharacterSkill.GetOwner(skill).getBonuses() != null) {
if (pc.getBonuses() != null) {
//Get bonuses from runes
bonus = CharacterSkill.GetOwner(skill).getBonuses().getSkillBonus(skillBase.sourceType);
bonus = pc.getBonuses().getSkillBonus(skillBase.sourceType);
}
if (CharacterSkill.GetOwner(skill).getBonuses() != null) {
//Get Base skill for modified stats
float base = 7f;
if(skillBase.getToken() == -660435875){
base = 0;
}
float statMod = 0.5f;
if (skillBase.getStrMod() > 0)
statMod += (float) skillBase.getStrMod() * (float) pc.getStatStrCurrent() / 100f;
if (skillBase.getDexMod() > 0)
statMod += (float) skillBase.getDexMod() * (float) pc.getStatDexCurrent() / 100f;
if (skillBase.getConMod() > 0)
statMod += (float) skillBase.getConMod() * (float) pc.getStatConCurrent() / 100f;
if (skillBase.getIntMod() > 0)
statMod += (float) skillBase.getIntMod() * (float) pc.getStatIntCurrent() / 100f;
if (skillBase.getSpiMod() > 0)
statMod += (float) skillBase.getSpiMod() * (float) pc.getStatSpiCurrent() / 100f;
if (statMod < 1)
statMod = 1f;
if(skillBase.getToken() == -660435875){
statMod = 0;
}
base += CharacterSkill.baseSkillValues[(int) statMod];
Enum.SourceType sourceType = Enum.SourceType.GetSourceType(skillBase.getNameNoSpace());
//Get any rune, effect and item bonus
if (pc.getBonuses() != null) {
//add bonuses from effects/items and runes
base += bonus + CharacterSkill.GetOwner(skill).getBonuses().getFloat(Enum.ModType.Skill, sourceType);
base += bonus + pc.getBonuses().getFloat(Enum.ModType.Skill, sourceType);
}
float modAmount = skill.getBaseAmount();
if (CharacterSkill.GetOwner(skill).getBonuses() != null) {
float baseAmount;
if (base < 1f && skillBase.getToken() != -660435875)
baseAmount = 1f;
else
baseAmount = base;
int amount;
int trains = skill.getNumTrains();
if (trains < 10)
amount = (trains * 2);
else if (trains < 90)
amount = 10 + trains;
else if (trains < 134)
amount = 100 + ((trains - 90) / 2);
else
amount = 122 + ((trains - 134) / 3);
float modAmount = baseAmount + amount;
if (pc.getBonuses() != null) {
//Multiply any percent bonuses
modAmount *= (1 + CharacterSkill.GetOwner(skill).getBonuses().getFloatPercentAll(Enum.ModType.Skill, sourceType));
modAmount *= (1 + pc.getBonuses().getFloatPercentAll(Enum.ModType.Skill, sourceType));
}
float modifiedSkill = modAmount;
return modifiedSkill;
float modifiedAmount = (int) (modAmount);
return modifiedAmount;
}
}

Loading…
Cancel
Save