public bool CastSkill(int objId, int skillId)
{
bool ret = false;
EntityInfo obj = GetEntityById(objId);
if (null != obj) {
SkillInfo skillInfo = obj.GetSkillStateInfo().GetSkillInfoById(skillId);
if (null != skillInfo) {
if (obj.Energy >= obj.GetActualProperty().EnergyMax) {
if (!skillInfo.IsInCd(TimeUtility.GetLocalMilliseconds())) {
int targetId = 0;
if (null != SelectedTarget) {
targetId = SelectedTarget.TargetId;
}
if (IsRoomScene) {
Network.NetworkSystem.Instance.SyncPlayerSkill(obj, skillId, targetId, obj.GetMovementStateInfo().GetFaceDir());
} else {
AiStateInfo aiInfo = obj.GetAiStateInfo();
aiInfo.Target = targetId;
if (aiInfo.AiLogic == (int)AiStateLogicId.Entity_Leader) {
AiData_Leader data = aiInfo.AiDatas.GetData<AiData_Leader>();
if (null == data) {
data = new AiData_Leader();
aiInfo.AiDatas.AddData(data);
}
data.ManualSkillId = skillId;
} else {
AiData_General data = aiInfo.AiDatas.GetData<AiData_General>();
if (null == data) {
data = new AiData_General();
aiInfo.AiDatas.AddData(data);
}
data.ManualSkillId = skillId;
}
aiInfo.ChangeToState((int)AiStateId.SkillCommand);
}
ret = true;
}
}
}
}
return ret;
}