public void HandleUseSkill(long casterID, long targetID, int skillID, bool isCommunicateMix = false) { Skill skillDataByID = LocalAgent.GetSkillDataByID(skillID); if (skillDataByID == null) { return; } EntityParent entityByID = LocalAgent.GetEntityByID(casterID); if (entityByID == null) { return; } entityByID.SetValue(GameData.AttrType.ActPoint, entityByID.TryAddValue(GameData.AttrType.ActPoint, (long)(skillDataByID.actionPoint + entityByID.GetSkillActionPointVariationByType(skillDataByID.skilltype))), true); if (isCommunicateMix) { GlobalBattleNetwork.Instance.SendClientDriveBattleSkill(casterID, targetID, skillID); } if (!this.skillStateTable.ContainsKey(casterID)) { this.skillStateTable.Add(casterID, new XDict <int, long>()); } if (!this.skillStateTable[casterID].ContainsKey(skillID)) { this.skillStateTable[casterID].Add(skillID, targetID); } else { this.skillStateTable[casterID][skillID] = targetID; } EntityParent entityByID2 = LocalAgent.GetEntityByID(targetID); UseSkillAnnouncer.Announce(entityByID, entityByID2, skillID); BacameSkillTargetAnnouncer.Announce(entityByID2, entityByID, skillID); }