public bool IsValidAbility(Ability_Info Info) { if (!HasPlayer()) return true; Player Plr = GetPlayer(); if (Info.MinimumRank > Plr.Level) { //Log.Info(Info.Name, "Rank :" + Info.MinimumRank + ">" + Plr.Level); return false; } if (Info.MinimumRenown > Plr.Renown) { //Log.Info(Info.Name, "Renown :" + Info.MinimumRenown + ">" + Plr.Renown); return false; } if (Info.MinimumCategoryPoints != 0) return false; if (Info.PointCost != 0) return false; return true; }
public GameData.AbilityResult CanCast(Ability_Info Info) { if (LastCast + GlobalMSCoolDown > TCPServer.GetTimeStampMS()) return GameData.AbilityResult.ABILITYRESULT_NOTREADY; else if (Info.ActionPoints > GetPlayer().ActionPoints) return GameData.AbilityResult.ABILITYRESULT_AP; return GameData.AbilityResult.ABILITYRESULT_OK; }
public Ability(Ability_Info Info, Object Caster) { this.Info = Info; this.Caster = Caster; Handler = AbilityMgr.GetAbilityHandler(Info.AbilityType); }
public void SendAttackState(Unit Target, UInt16 RealDamage, UInt16 Damage, Ability_Info Ability = null) { if (Target == null) return; // Frappe { PacketOut Out = new PacketOut((byte)Opcodes.F_USE_ABILITY); Out.WriteUInt16(0); Out.WriteUInt16(Ability != null ? Ability.Entry : Oid); Out.WriteUInt16(Oid); Out.WriteUInt16((ushort)(Ability != null ? 0x610 : 0)); Out.WriteUInt16(Target.Oid); if (Ability != null) { Out.WriteByte(6); Out.WriteByte(1); Out.WriteUInt16(0); Out.WriteUInt32(0x023F0C00); Out.WriteUInt16(0); } else { Out.WriteByte(2); Out.Fill(0, 9); } DispatchPacket(Out, true); } { PacketOut Out = new PacketOut((byte)Opcodes.F_CAST_PLAYER_EFFECT); Out.WriteUInt16(Oid); Out.WriteUInt16(Target.Oid); Out.WriteUInt16((ushort)(Ability != null ? Ability.Entry : 0)); Out.WriteByte((byte)(Ability != null ? 2 : 0)); if(Ability == null) Out.WriteByte((byte)GameData.CombatEvent.COMBATEVENT_HIT); else Out.WriteByte((byte)GameData.CombatEvent.COMBATEVENT_ABILITY_HIT); Out.WriteByte((byte)(Ability != null ? 7 : 0x13)); if (Ability == null) { Out.WriteByte((byte)(RealDamage > 0 ? (RealDamage * 2) - 1 : 0)); Out.WriteByte((byte)((Damage - RealDamage) * 2)); } else Out.WriteUInt16(0x0799); Out.WriteByte(0); DispatchPacket(Out, true); } }
public void SendAttackMovement(Unit Target,Ability_Info Info) { PacketOut Out = new PacketOut((byte)Opcodes.F_HIT_PLAYER); Out.WriteUInt16(Oid); if(Target != null) Out.WriteUInt16(Target.Oid); if (Info != null) Out.WriteUInt16(Info.Entry); Out.WriteByte(2); if (Info == null && Target != null) { Out.WriteByte(Target.PctHealth); Out.WriteByte(Target.PctHealth); } Out.WriteByte(0); DispatchPacket(Out, true); }