private void Trap(NecClient client, int skillId, SkillBaseSetting skillBaseSetting) { Logger.Debug($"skillId : {skillId}"); if (!int.TryParse($"{skillId}".Substring(1, 5), out int skillBase)) { Logger.Error($"Creating skillBase from skillid [{skillId}]"); int errorCode = -1; RecvSkillExecR execFail = new RecvSkillExecR(errorCode, 0, 0); Router.Send(execFail, client); return; } if (!int.TryParse($"{skillId}".Substring(1, 7), out int effectBase)) { Logger.Error($"Creating skillBase from skillid [{skillId}]"); int errorCode = -1; RecvSkillExecR execFail = new RecvSkillExecR(errorCode, 0, 0); Router.Send(execFail, client); return; } bool isBaseTrap = TrapTask.baseTrap(skillBase); effectBase += 1; if (!_server.SettingRepository.EoBase.TryGetValue(effectBase, out EoBaseSetting eoBaseSetting)) { Logger.Error($"Getting EoBaseSetting from effectBase [{effectBase}]"); int errorCode = -1; RecvSkillExecR execFail = new RecvSkillExecR(errorCode, 0, 0); Router.Send(execFail, client); return; } if (!_server.SettingRepository.EoBase.TryGetValue(effectBase + 1, out EoBaseSetting eoBaseSettingTriggered)) { Logger.Error($"Getting EoBaseSetting from effectBase+1 [{effectBase + 1}]"); int errorCode = -1; RecvSkillExecR execFail = new RecvSkillExecR(errorCode, 0, 0); Router.Send(execFail, client); return; } RecvSkillExecR execSuccess = new RecvSkillExecR(0, skillBaseSetting.CastingCooldown, skillBaseSetting.RigidityTime); Router.Send(execSuccess, client); // ToDo verify trap parts available and remove correct number from inventory TrapStack trapStack = (TrapStack)Server.Instances.GetInstance((uint)client.Character.activeSkillInstance); Trap trap = new Trap(skillBase, skillBaseSetting, eoBaseSetting, eoBaseSettingTriggered); _server.Instances.AssignInstance(trap); Logger.Debug($"trap.InstanceId [{trap.InstanceId}] trap.Name [{trap._name}] skillId[{skillId}]"); trapStack.SkillExec(trap, isBaseTrap); Vector3 trapPos = new Vector3(client.Character.X, client.Character.Y, client.Character.Z); }
public Trap(int skillBase, SkillBaseSetting skillBaseSetting, EoBaseSetting eoBaseSetting, EoBaseSetting eoBaseSettingTriggered) { _skillBaseId = skillBase; _skillId = skillBaseSetting.Id; _name = skillBaseSetting.Name; _triggerRadius = eoBaseSetting.EffectRadius; _effectRadius = eoBaseSettingTriggered.EffectRadius; _itemType = skillBaseSetting.Item1Id; _itemCount = skillBaseSetting.Item1Count; _castTime = skillBaseSetting.CastingTime; _trapTime = skillBaseSetting.EffectTime; _skillEffectId = eoBaseSetting.Id; _triggerEffectId = eoBaseSettingTriggered.Id; _coolTime = skillBaseSetting.CastingCooldown; }
public Trap(int skillBase, SkillBaseSetting skillBaseSetting, EoBaseSetting eoBaseSetting, EoBaseSetting eoBaseSettingTriggered) { skillBaseId = skillBase; skillId = skillBaseSetting.id; name = skillBaseSetting.name; triggerRadius = eoBaseSetting.effectRadius; effectRadius = eoBaseSettingTriggered.effectRadius; itemType = skillBaseSetting.item1Id; itemCount = skillBaseSetting.item1Count; castTime = skillBaseSetting.castingTime; trapTime = skillBaseSetting.effectTime; skillEffectId = eoBaseSetting.id; triggerEffectId = eoBaseSettingTriggered.id; coolTime = skillBaseSetting.castingCooldown; }
private void Stealth(NecClient client, int skillId, SkillBaseSetting skillBaseSetting) { float cooldown = 0.0F; Logger.Debug($"IsStealthed [{client.Character.IsStealthed()}]"); if (client.Character.IsStealthed()) { cooldown = skillBaseSetting.CastingCooldown; } RecvSkillExecR execSuccess = new RecvSkillExecR(0, cooldown, skillBaseSetting.RigidityTime); Router.Send(execSuccess, client); Stealth stealth = (Stealth)Server.Instances.GetInstance((uint)client.Character.activeSkillInstance); stealth.SkillExec(); }
public void StartCast(SkillBaseSetting skillBase) { Logger.Debug( $"Trap StartCast skillBase.Id [{skillBase.Id}] skillBase.CastingTime [{skillBase.CastingTime}]"); RecvSkillStartCastSelf startCast = new RecvSkillStartCastSelf(skillBase.Id, skillBase.CastingTime); _server.Router.Send(startCast, _client); List <PacketResponse> brList = new List <PacketResponse>(); RecvBattleReportStartNotify brStart = new RecvBattleReportStartNotify(_client.Character.InstanceId); RecvBattleReportEndNotify brEnd = new RecvBattleReportEndNotify(); RecvBattleReportActionSkillStartCast brStartCast = new RecvBattleReportActionSkillStartCast(skillBase.Id); brList.Add(brStart); brList.Add(brStartCast); brList.Add(brEnd); _server.Router.Send(_client.Map, brList); }