Restore proper skill cooltime timestamp.

This commit is contained in:
MobiusDevelopment
2019-03-31 00:08:30 +00:00
parent cf5d9bdc33
commit 34a5142bbe

View File

@@ -265,7 +265,7 @@ public final class PlayerInstance extends Playable
private static final String DELETE_SKILL_FROM_CHAR = "DELETE FROM character_skills WHERE skill_id=? AND char_obj_id=? AND class_index=?"; private static final String DELETE_SKILL_FROM_CHAR = "DELETE FROM character_skills WHERE skill_id=? AND char_obj_id=? AND class_index=?";
private static final String DELETE_CHAR_SKILLS = "DELETE FROM character_skills WHERE char_obj_id=? AND class_index=?"; private static final String DELETE_CHAR_SKILLS = "DELETE FROM character_skills WHERE char_obj_id=? AND class_index=?";
private static final String ADD_SKILL_SAVE = "INSERT INTO character_skills_save (char_obj_id,skill_id,skill_level,effect_count,effect_cur_time,reuse_delay,systime,restore_type,class_index,buff_index) VALUES (?,?,?,?,?,?,?,?,?,?)"; private static final String ADD_SKILL_SAVE = "INSERT INTO character_skills_save (char_obj_id,skill_id,skill_level,effect_count,effect_cur_time,reuse_delay,systime,restore_type,class_index,buff_index) VALUES (?,?,?,?,?,?,?,?,?,?)";
private static final String RESTORE_SKILL_SAVE = "SELECT skill_id,skill_level,effect_count,effect_cur_time, reuse_delay FROM character_skills_save WHERE char_obj_id=? AND class_index=? AND restore_type=? ORDER BY buff_index ASC"; private static final String RESTORE_SKILL_SAVE = "SELECT skill_id,skill_level,effect_count,effect_cur_time, reuse_delay, systime FROM character_skills_save WHERE char_obj_id=? AND class_index=? AND restore_type=? ORDER BY buff_index ASC";
private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?"; private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?";
public boolean _isVIP = false; public boolean _isVIP = false;
@@ -10386,6 +10386,7 @@ public final class PlayerInstance extends Playable
final int effectCount = rset.getInt("effect_count"); final int effectCount = rset.getInt("effect_count");
final int effectCurTime = rset.getInt("effect_cur_time"); final int effectCurTime = rset.getInt("effect_cur_time");
final long reuseDelay = rset.getLong("reuse_delay"); final long reuseDelay = rset.getLong("reuse_delay");
final long systime = rset.getLong("systime");
// Just incase the admin minipulated this table incorrectly :x // Just incase the admin minipulated this table incorrectly :x
if ((skillId == -1) || (effectCount == -1) || (effectCurTime == -1) || (reuseDelay < 0)) if ((skillId == -1) || (effectCount == -1) || (effectCurTime == -1) || (reuseDelay < 0))
@@ -10395,7 +10396,6 @@ public final class PlayerInstance extends Playable
if (activateEffects) if (activateEffects)
{ {
Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl); Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl);
skill.getEffects(this, this, false, false, false); skill.getEffects(this, this, false, false, false);
@@ -10410,19 +10410,18 @@ public final class PlayerInstance extends Playable
} }
} }
if (reuseDelay > 10) final long remainingTime = systime - System.currentTimeMillis();
if (remainingTime > 10)
{ {
final Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl); final Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl);
if (skill == null) if (skill == null)
{ {
continue; continue;
} }
disableSkill(skill, reuseDelay); disableSkill(skill, remainingTime);
addTimeStamp(new TimeStamp(skill, reuseDelay)); addTimeStamp(new TimeStamp(skill, reuseDelay, systime));
} }
} }
rset.close(); rset.close();
statement.close(); statement.close();
@@ -10439,21 +10438,20 @@ public final class PlayerInstance extends Playable
final int skillId = rset.getInt("skill_id"); final int skillId = rset.getInt("skill_id");
final int skillLvl = rset.getInt("skill_level"); final int skillLvl = rset.getInt("skill_level");
final long reuseDelay = rset.getLong("reuse_delay"); final long reuseDelay = rset.getLong("reuse_delay");
final long systime = rset.getLong("systime");
if (reuseDelay <= 0) final long remainingTime = systime - System.currentTimeMillis();
if (remainingTime > 0)
{ {
continue; final Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl);
if (skill == null)
{
continue;
}
disableSkill(skill, remainingTime);
addTimeStamp(new TimeStamp(skill, reuseDelay, systime));
} }
final Skill skill = SkillTable.getInstance().getInfo(skillId, skillLvl);
if (skill == null)
{
continue;
}
disableSkill(skill, reuseDelay);
addTimeStamp(new TimeStamp(skill, reuseDelay));
} }
rset.close(); rset.close();
statement.close(); statement.close();
@@ -16553,7 +16551,7 @@ public final class PlayerInstance extends Playable
*/ */
private void addTimeStamp(TimeStamp T) private void addTimeStamp(TimeStamp T)
{ {
ReuseTimeStamps.put(T.getSkill().getId(), T); ReuseTimeStamps.put(T.getSkill().getReuseHashCode(), T);
} }
/** /**