/// <summary> /// Notifies other players, that player changed attack/move speed. /// </summary> private void Character_OnAttackOrMoveChanged(IKillable sender) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendAttackAndMovementSpeed(player.Client, sender); } }
private void Character_OnMaxSPChanged(IKillable sender, int maxSP) { if (Client != null) { SendMaxSP(); } }
private void OnSelectedDeath(IKillable deathSelected) { deathSelected.OnDeath -= OnSelectedDeath; DeselectCurrentSelected(); SelectedHaveBeenUpdated(selected); }
private IEnumerator LightAttack() { // Make light attack on CD m_canLightAttack = false; // Shoot out a ray infront of the player Ray attackRay = new Ray(this.transform.position, this.transform.forward); RaycastHit[] raycastHits; // Cast out the ray as a sphere shape in the attack range raycastHits = Physics.SphereCastAll(attackRay, AttackRadius, AttackRange, AttackingLayer, QueryTriggerInteraction.Ignore); Debug.DrawRay(transform.position, transform.forward * AttackRange, Color.blue, 2f, false); m_animator.SetBool("IsAttacking", true); yield return(new WaitForSeconds(0.5f)); foreach (RaycastHit hitResult in raycastHits) { Debug.Log("Hit: " + hitResult.transform.gameObject.name); // Do whatever the other object needs to be react IKillable killableObj = hitResult.transform.GetComponent <IKillable>(); if (killableObj != null) { killableObj.TakeDamage(AttackDmg); if (hitResult.transform.tag == "Enemy") { killCount++; } } } //yield return new WaitForSeconds(0.5f); m_animator.SetBool("IsAttacking", false); m_canLightAttack = true; }
public virtual void Shoot() { // Can Shoot? if (canShoot) { // Create a bullet ray from shot origin to forward Ray bulletRay = new Ray(shotOrigin.position, shotOrigin.forward); RaycastHit hit; // Perform Raycast (Hit Scan) if (Physics.Raycast(bulletRay, out hit, range)) { // Try getting enemy from hit IKillable killable = hit.collider.GetComponent <IKillable>(); if (killable != null) { // Deal tamage to enemy killable.TakeDamage(damage); } } // Show Line StartCoroutine(ShowLine(bulletRay, lineDelay)); // Reset timer shootTimer = 0; // Can't shoot anymore canShoot = false; } }
private void Character_OnUsedRangeSkill(IKiller sender, IKillable target, Skill skill, AttackResult attackResult) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendUsedRangeSkill(player.Client, (Character)sender, target, skill, attackResult); } }
private void Mob_OnRecover(IKillable sender) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendMobRecover(player.Client, sender); } }
/// <summary> /// Notifies other players, that player starts casting. /// </summary> private void Character_OnSkillCastStarted(Character sender, IKillable target, Skill skill) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendSkillCastStarted(player.Client, sender, target, skill); } }
private void Character_OnMaxHPChanged(IKillable sender, int maxHP) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.Send_Max_HP(player.Client, sender.Id, maxHP); } }
public void AddListener(IKillable _iKillable) { if (_iKillable != null) { iKillableInterfaces.Add(_iKillable); } }
private void OnStructureDeath(IKillable structure) { Debug.Assert(structure is Structure); allActiveStructures.Remove((Structure)structure); structure.OnDeath -= OnStructureDeath; }
/// <summary> /// Notifies other players, that player starts casting. /// </summary> private void Character_OnSkillCastStarted(Character sender, IKillable target, Skill skill) { foreach (var player in Players) { _packetHelper.SendSkillCastStarted(player.Value.Client, sender, target, skill); } }
internal void SendMobRecover(IWorldClient client, IKillable sender) { using var packet = new Packet(PacketType.MOB_RECOVER); packet.Write(sender.Id); packet.Write(sender.CurrentHP); client.SendPacket(packet); }
/// <summary> /// Notifies other players, that player added buff to someone. /// </summary> private void Character_OnAddedBuff(Character sender, IKillable receiver, ActiveBuff buff) { foreach (var player in Players) { _packetHelper.SendCharacterAddedBuff(player.Value.Client, sender, receiver, buff); } }
/// <summary> /// Notifies other players, that player is dead. /// </summary> private void Character_OnDead(IKillable sender, IKiller killer) { foreach (var player in Players) { _packetHelper.SendCharacterKilled(player.Value.Client, (Character)sender, killer); } }
/// <summary> /// Notifies other players, that player used skill. /// </summary> private void Character_OnUsedSkill(Character sender, IKillable target, Skill skill, AttackResult attackResult) { foreach (var player in Players) { _packetHelper.SendCharacterUsedSkill(player.Value.Client, sender, target, skill, attackResult); } }
private void Character_OnPeriodicalDamage(int senderId, IKillable target, Skill skill, AttackResult result) { foreach (var player in GetAllPlayers(true)) { Map.PacketFactory.SendUsedRangeSkill(player.GameSession.Client, senderId, target, skill, result); } }
public static void Main() { string kingName = Console.ReadLine(); King king = new King(kingName); List <IKillable> personnel = Console.ReadLine() .Split() .Select(name => new RoyalGuard(name, king)) .ToList <IKillable>(); personnel.AddRange(Console.ReadLine() .Split() .Select(name => new Footman(name, king)) .ToList <IKillable>()); string input = Console.ReadLine(); while (input != "End") { if (input.StartsWith("Attack")) { king.UnderAttack(); } else { string[] data = input.Split(); string name = data[1]; IKillable figure = personnel.First(f => f.Name == name); figure.Killed(); } input = Console.ReadLine(); } }
/// <summary> /// Notifies other players, that player is dead. /// </summary> private void Character_OnDead(IKillable sender, IKiller killer) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendCharacterKilled(player.Client, (Character)sender, killer); } }
public void Construct(IMovable movement, IRotatable rotatable, IWave wave, IKillable killable) { this.killable = killable; this.movement = movement; this.rotatable = rotatable; this.wave = wave; }
private void Character_OnRecover(IKillable sender, int hp, int mp, int sp) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendRecoverCharacter(player.Client, sender, hp, mp, sp); } }
private void Character_OnFullRecover(IKillable sender) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendRecoverCharacter(player.Client, sender, sender.CurrentHP, sender.CurrentMP, sender.CurrentSP); } }
private void Character_OnSkillKeep(IKillable sender, ActiveBuff buff, AttackResult result) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendSkillKeep(player.Client, sender.Id, buff.SkillId, buff.SkillLevel, result); } }
/// <summary> /// Notifies other players that player's max HP, MP and SP changed /// </summary> private void Character_OnMax_HP_MP_SP_Changed(IKillable sender) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendMax_HP_MP_SP(player.Client, (Character)sender); } }
private void Mob_OnUsedSkill(IKiller sender, IKillable target, Skill skill, AttackResult attackResult) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendMobUsedSkill(player.Client, (Mob)sender, target.Id, skill, attackResult); } }
private void Mob_OnDead(IKillable sender, IKiller killer) { var mob = (Mob)sender; RemoveListeners(mob); Mobs.TryRemove(mob.Id, out var removedMob); foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendMobDead(player.Client, sender, killer); } // Add experience to killer character/party if (killer is Character killerCharacter) { if (killerCharacter.HasParty) { killerCharacter.AddPartyMobExperience(mob.Level, (ushort)mob.Exp); } else { killerCharacter.AddMobExperience(mob.Level, (ushort)mob.Exp); } } }
/// <summary> /// Creates a Human /// </summary> /// <param name="name">The name to display for this character</param> /// <param name="x">The starting x position</param> /// <param name="y">The starting y position</param> public Human(string name, int x, int y) { this.name = name; health = 100; Killable = new BasicKillable(100); Movable = new BasicMovable(50, 50); }
/// <summary> /// Gets enemies near target. /// </summary> public IEnumerable <IKillable> GetEnemies(Character sender, IKillable target, byte range) { IEnumerable <IKillable> mobs = GetAllMobs(true).Where(m => !m.IsDead && MathExtensions.Distance(target.PosX, m.PosX, target.PosZ, m.PosZ) <= range); IEnumerable <IKillable> chars = GetAllPlayers(true).Where(p => !p.IsDead && p.Country != sender.Country && MathExtensions.Distance(target.PosX, p.PosX, target.PosZ, p.PosZ) <= range); return(mobs.Concat(chars)); }
public virtual void Shoot() { //Can shoot if (canShoot) { //create bullet ray Ray bulletRay = new Ray(shotOrigin.position, shotOrigin.forward); RaycastHit hit; if (Physics.Raycast(bulletRay, out hit, range)) { IKillable killable = hit.collider.GetComponent <IKillable>(); if (killable != null) { //deal damage to enemy killable.TakeDamage(damage); } } StartCoroutine(ShotLine(bulletRay, lineDelay)); shootTimer = 0; //Can't shoot anymore canShoot = false; } }
/// <summary> /// Notifies other players, that player used auto attack. /// </summary> private void Character_OnAttack(IKiller sender, IKillable target, AttackResult attackResult) { foreach (var player in GetAllPlayers(true)) { _packetsHelper.SendCharacterUsualAttack(player.Client, sender, target, attackResult); } }
void p_Killed(IKillable killed, IGameObject source) { GameOver = true; }
public void Character_Killed(IKillable killed, IGameObject source) { var s = source as Character; if (s.Experience != null) s.Experience.Add(ExperienceWhenKilled); Loot.Drop(); GameWorld.Remove(this); }
void target_Killed(IKillable killed, IGameObject source) { Player.Target = null; }