|
@@ -271,6 +271,7 @@ namespace XmdsCommonServer.Plugin
|
|
|
gs.TalentSkillLevel2 = skillData.TalentSkillLevel2;
|
|
|
gs.TalentSkillLevel3 = skillData.TalentSkillLevel3;
|
|
|
gs.SkillTimestampMS = skillCD;
|
|
|
+ gs.AutoLaunch = gs.SkillType != XmdsSkillType.cardSkill;
|
|
|
|
|
|
if (gs.SkillType == XmdsSkillType.passive || gs.SkillType == XmdsSkillType.petGivePassive)
|
|
|
{
|
|
@@ -1011,101 +1012,102 @@ namespace XmdsCommonServer.Plugin
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public bool changeActiveSkill(int oldSkillID, int newSkillID)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- if (oldSkillID == 0 || oldSkillID == newSkillID)
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- GameSkill oldSkill = mSkillMap.Get(oldSkillID);
|
|
|
- GameSkill newSkill = mSkillMap.Get(newSkillID);
|
|
|
- if (oldSkill == null || newSkill != null)
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- oldSkill.SkillID = newSkillID;
|
|
|
- newSkill = oldSkill;
|
|
|
-
|
|
|
- SkillTemplate st = null;
|
|
|
- UnitSkill us = InitXmdsSkillScript(newSkill, ref st);
|
|
|
- if (us == null || st == null)
|
|
|
- {
|
|
|
- FormatLog(string.Format("XmdsVirtual.Skill can not find SkillScript {0},", newSkill.SkillID));
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- mSkillMap.Remove(oldSkillID);
|
|
|
- mSkillMap.Add(newSkillID, newSkill);
|
|
|
-
|
|
|
- mActiveSkillTemplateMap.Remove(oldSkillID);
|
|
|
- mActiveSkillTemplateMap.Add(us.SkillID, st);
|
|
|
-
|
|
|
- for (int i = 0; i < mActiveSkills.Count; i++)
|
|
|
- {
|
|
|
- if (mActiveSkills[i].SkillID == oldSkillID)
|
|
|
- {
|
|
|
- mActiveSkills.RemoveAt(i);
|
|
|
- mActiveSkills.Add(us);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- #region 重置单位技能.
|
|
|
- List<SkillTemplate> temp = new List<SkillTemplate>();
|
|
|
- if (mActiveSkillTemplateMap.TryGetValue(newSkillID, out st))
|
|
|
- {
|
|
|
- //分辨出普通攻击.
|
|
|
- if (newSkill.SkillType == XmdsSkillType.normalAtk)
|
|
|
- {
|
|
|
- mBaseSkill = st;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- temp.Add(st);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (temp.Count > 0 || mBaseSkill != null)
|
|
|
- {
|
|
|
- //重置技能.
|
|
|
- mOwner.mUnit.InitSkills(mBaseSkill, temp.ToArray());
|
|
|
- }
|
|
|
-
|
|
|
- // 人物, 宠物的技能是否自动释放走配置表
|
|
|
- if (mOwner is XmdsVirtual_Player || mOwner is XmdsVirtual_Pet)
|
|
|
- {
|
|
|
- SkillState skillState = mOwner.mUnit.getSkillState(newSkill.SkillID);
|
|
|
- if (skillState != null)
|
|
|
- {
|
|
|
- skillState.setAutoLaunch(newSkill.AutoLaunch);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- mOwner.SetSkillCD(st.ID, newSkill.SkillTimestampMS);
|
|
|
- mOwner.SetSkillCDDecreasePercent(st.ID, newSkill.SkillCDDecreasePercent);
|
|
|
-
|
|
|
- for (int i = 0; i < mActiveSkills.Count; i++)
|
|
|
- {
|
|
|
- if (mActiveSkills[i].SkillID == newSkillID)
|
|
|
- {
|
|
|
- mActiveSkills[i].InitOver(mOwner, newSkill);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- #endregion
|
|
|
- }
|
|
|
- catch (Exception error)
|
|
|
- {
|
|
|
- FormatLog(CommonLang.Log.LoggerLevel.ERROR, "单位【{0}】初始化技能错误:{1}", mOwner.mInfo.Name, error.ToString());
|
|
|
- return false;
|
|
|
- }
|
|
|
+ //public bool changeActiveSkill(int oldSkillID, int newSkillID)
|
|
|
+ //{
|
|
|
+ // try
|
|
|
+ // {
|
|
|
+ // if (oldSkillID == 0 || oldSkillID == newSkillID)
|
|
|
+ // {
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+ // GameSkill oldSkill = mSkillMap.Get(oldSkillID);
|
|
|
+ // GameSkill newSkill = mSkillMap.Get(newSkillID);
|
|
|
+ // if (oldSkill == null || newSkill != null)
|
|
|
+ // {
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // oldSkill.SkillID = newSkillID;
|
|
|
+ // newSkill = oldSkill;
|
|
|
+
|
|
|
+ // SkillTemplate st = null;
|
|
|
+ // UnitSkill us = InitXmdsSkillScript(newSkill, ref st);
|
|
|
+ // if (us == null || st == null)
|
|
|
+ // {
|
|
|
+ // FormatLog(string.Format("XmdsVirtual.Skill can not find SkillScript {0},", newSkill.SkillID));
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // mSkillMap.Remove(oldSkillID);
|
|
|
+ // mSkillMap.Add(newSkillID, newSkill);
|
|
|
+
|
|
|
+ // mActiveSkillTemplateMap.Remove(oldSkillID);
|
|
|
+ // mActiveSkillTemplateMap.Add(us.SkillID, st);
|
|
|
+
|
|
|
+ // for (int i = 0; i < mActiveSkills.Count; i++)
|
|
|
+ // {
|
|
|
+ // if (mActiveSkills[i].SkillID == oldSkillID)
|
|
|
+ // {
|
|
|
+ // mActiveSkills.RemoveAt(i);
|
|
|
+ // mActiveSkills.Add(us);
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+ // #region 重置单位技能.
|
|
|
+ // List<SkillTemplate> temp = new List<SkillTemplate>();
|
|
|
+ // if (mActiveSkillTemplateMap.TryGetValue(newSkillID, out st))
|
|
|
+ // {
|
|
|
+ // //分辨出普通攻击.
|
|
|
+ // if (newSkill.SkillType == XmdsSkillType.normalAtk)
|
|
|
+ // {
|
|
|
+ // mBaseSkill = st;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // temp.Add(st);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // if (temp.Count > 0 || mBaseSkill != null)
|
|
|
+ // {
|
|
|
+ // //重置技能.
|
|
|
+ // mOwner.mUnit.InitSkills(mBaseSkill, temp.ToArray());
|
|
|
+ // }
|
|
|
+
|
|
|
+ // // 人物, 宠物的技能是否自动释放走配置表
|
|
|
+ // if (mOwner is XmdsVirtual_Player || mOwner is XmdsVirtual_Pet)
|
|
|
+ // {
|
|
|
+ // SkillState skillState = mOwner.mUnit.getSkillState(newSkill.SkillID);
|
|
|
+ // if (skillState != null)
|
|
|
+ // {
|
|
|
+ // skillState.setAutoLaunch(newSkill.AutoLaunch);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // mOwner.SetSkillCD(st.ID, newSkill.SkillTimestampMS);
|
|
|
+ // mOwner.SetSkillCDDecreasePercent(st.ID, newSkill.SkillCDDecreasePercent);
|
|
|
+
|
|
|
+ // for (int i = 0; i < mActiveSkills.Count; i++)
|
|
|
+ // {
|
|
|
+ // if (mActiveSkills[i].SkillID == newSkillID)
|
|
|
+ // {
|
|
|
+ // mActiveSkills[i].InitOver(mOwner, newSkill);
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // #endregion
|
|
|
+ // }
|
|
|
+ // catch (Exception error)
|
|
|
+ // {
|
|
|
+ // FormatLog(CommonLang.Log.LoggerLevel.ERROR, "单位【{0}】初始化技能错误:{1}", mOwner.mInfo.Name, error.ToString());
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
|
|
|
- return true;
|
|
|
- }
|
|
|
+ // return true;
|
|
|
+ //}
|
|
|
|
|
|
|
|
|
private UnitSkill InitXmdsSkillScript(GameSkill gs, ref SkillTemplate st)
|
|
@@ -1356,6 +1358,15 @@ namespace XmdsCommonServer.Plugin
|
|
|
mOwner.RemoveEventBySkillID(gs.SkillID);
|
|
|
mSkillMap.Remove(sk.ID);
|
|
|
}
|
|
|
+
|
|
|
+ for (int i = 0; i < mActiveSkills.Count; i++)
|
|
|
+ {
|
|
|
+ if (mActiveSkills[i].SkillID == sk.ID)
|
|
|
+ {
|
|
|
+ mActiveSkills.RemoveAt(i);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (mActiveSkillTemplateMap != null)
|
|
@@ -1431,7 +1442,7 @@ namespace XmdsCommonServer.Plugin
|
|
|
mActiveSkillTemplateMap.Put(st.ID, st);
|
|
|
//us = XmdsBattleSkill.GetUnitSkill(gs.SkillID);
|
|
|
|
|
|
- mOwner.mUnit.AddSkill(st, is_default);
|
|
|
+ mOwner.mUnit.AddSkill(st, gs.AutoLaunch, is_default);
|
|
|
SkillState skillState = mOwner.SetSkillCD(gs.SkillID, gs.SkillTimestampMS);
|
|
|
mOwner.SetSkillCDDecreasePercent(gs.SkillID, gs.SkillCDDecreasePercent);
|
|
|
|