public override void AttackSkillAoE(ushort skillid, uint X, uint Y) { base.AttackSkillAoE(skillid, X, Y); // lol if (AttackingSequence != null) { return; } AttackingSequence = new AttackSequence(this, 0, InfoServer.Str, skillid, X, Y); }
public override void AttackSkill(ushort skillid, MapObject victim) { base.AttackSkill(skillid, victim); // lol if (AttackingSequence != null) { return; } AttackingSequence = new AttackSequence(this, victim, 0, InfoServer.Str, skillid, true); Target = victim; }
public override void Attack(MapObject victim) { base.Attack(victim); // lol if (AttackingSequence != null) { return; } AttackingSequence = new AttackSequence(this, victim, 0, InfoServer.Str, 1400); Target = victim; }
public void Die() { HP = 0; Moving = false; boundryLT = null; boundryRB = null; AttackingSequence = null; Target = null; DeathTriggered = true; if (Spawnplace != null) { Spawnplace.CurrentMobs--; } _nextUpdate = Program.CurrentTime.AddSeconds(3); }
public override void AttackSkillAoE(ushort skillid, uint X, uint Y) { base.AttackSkillAoE(skillid, X, Y); // lol if (AttackingSequence != null) return; AttackingSequence = new AttackSequence(this, 0, InfoServer.Str, skillid, X, Y); }
public override void AttackSkill(ushort skillid, MapObject victim) { base.AttackSkill(skillid, victim); // lol if (AttackingSequence != null) return; AttackingSequence = new AttackSequence(this, victim, 0, InfoServer.Str, skillid, true); Target = victim; }
public override void Attack(MapObject victim) { base.Attack(victim); // lol if (AttackingSequence != null) return; AttackingSequence = new AttackSequence(this, victim, 0, InfoServer.Str, 1400); Target = victim; }
public void AttackStop() { if (IsAttacking) { AttackingSequence = null; } }
public override void AttackSkillAoE(ushort skillid, uint x, uint y) { if (IsAttacking) return; ushort attackspeed = 1200; Equip weapon; EquippedItems.TryGetValue(ItemSlot.Weapon, out weapon); uint dmgmin = (uint)GetExtraStr(); uint dmgmax = (uint)(GetExtraStr() + (GetExtraStr() % 3)); if (weapon != null) { attackspeed = weapon.Info.AttackSpeed; dmgmin += weapon.Info.MinMelee; dmgmax += weapon.Info.MaxMelee; } AttackingSequence = new AttackSequence(this, dmgmin, dmgmax, skillid, x, y); }
public override void AttackSkill(ushort skillid, MapObject victim) { if (victim == null) { victim = SelectedObject; } if (IsAttacking || victim == null || !victim.IsAttackable) return; ushort attackspeed = 1200; Equip weapon; EquippedItems.TryGetValue(ItemSlot.Weapon, out weapon); uint dmgmin = (uint)GetWeaponDamage(true); uint dmgmax = (uint)(GetWeaponDamage(true) + (GetWeaponDamage(true) % 3)); if (weapon != null) { attackspeed = weapon.Info.AttackSpeed; dmgmin += weapon.Info.MinMelee; dmgmax += weapon.Info.MaxMelee; } AttackingSequence = new AttackSequence(this, victim, dmgmin, dmgmax, skillid, true); }
public override void Update(DateTime date) { if (AttackingSequence != null) { AttackingSequence.Update(date); if (AttackingSequence.State == AttackSequence.AnimationState.Ended) { AttackingSequence = null; } } if (SelectedObject != null) { if (SelectedObject is Mob) { if ((SelectedObject as Mob).IsDead) SelectedObject = null; // Stop the reference ffs } } if (State == PlayerState.Resting) { if (date >= NextHPRest) { HealHP((uint)(MaxHP / 1000 * House.Info.HPRecovery)); //TODO: also show this to people who have me selected. NextHPRest = date.AddMilliseconds(House.Info.HPTick); } if (date >= NextSPRest) { HealSP((uint)(MaxSP / 1000 * House.Info.SPRecovery)); //TODO: also show this to people who have me selected. NextSPRest = date.AddMilliseconds(House.Info.SPTick); } } }
public override void Update(DateTime date) { if (Position == null) { return; } if (IsDead) { if (!DeathTriggered) { Die(); return; // Wait till 3 seconds are over, then remove } else if (_nextUpdate <= date) { Map.RemoveObject(this.MapObjectID); Position = null; return; } return; } if (AttackingSequence != null && Target != null) { if (Vector2.Distance(Target.Position, Position) < 50) { AttackingSequence.Update(date); if (AttackingSequence.State == AttackSequence.AnimationState.Ended) { AttackingSequence = null; Target = null; } } else { _nextUpdate = _nextUpdate.AddDays(-1); } } if (_nextUpdate > date) { return; } if (Target != null) { _nextUpdate = Program.CurrentTime.AddSeconds(1); // Try to move to target's pos // Might glitch the f**k out. lol if (Target.Map != Map) { Target = null; // Stop aggro-ing >:( } else { if (Vector2.Distance(Target.Position, Position) < 800) { if (Map.Block.CanWalk(Target.Position.X, Target.Position.Y)) { Move(Position.X, Position.Y, Target.Position.X, Target.Position.Y, false, false); } } else { Target = null; // Stop aggro-ing >:( } } return; } else { _nextUpdate = Program.CurrentTime.AddSeconds(Program.Randomizer.Next(10, 60)); // Around 10 seconds to 1 minute before new movement is made // Move to random spot. Vector2 newpos = new Vector2(Position); bool ok = false; for (int i = 1; i <= 20; i++) { // Generate new position, and check if it's in valid bounds, else recheck newpos = Vector2.GetRandomSpotAround(Program.Randomizer, newpos, 60); if (newpos.X > 0 && newpos.Y > 0 && Map.Block.CanWalk(newpos.X, newpos.Y) && PositionIsInBoundries(newpos)) { ok = true; break; } /* * int t = Program.Randomizer.Next() % 11; * * if (t <= 2) * { * // All + * * newx += Program.Randomizer.Next(MinMovement, MaxMovement); * newy += Program.Randomizer.Next(MinMovement, MaxMovement); * } * else if (t <= 5) * { * newx -= Program.Randomizer.Next(MinMovement, MaxMovement); * newy += Program.Randomizer.Next(MinMovement, MaxMovement); * } * else if (t <= 8) * { * newx += Program.Randomizer.Next(MinMovement, MaxMovement); * newy -= Program.Randomizer.Next(MinMovement, MaxMovement); * } * else * { * newx -= Program.Randomizer.Next(MinMovement, MaxMovement); * newy -= Program.Randomizer.Next(MinMovement, MaxMovement); * } * Vector2 test = newpos + new Vector2(newx, newy); * if (Map.Block.CanWalk(test.X, test.Y) && PositionIsInBoundries(test)) * { * newpos = test; * break; * } */ } if (ok) { Move(Position.X, Position.Y, newpos.X, newpos.Y, false, false); } } }
public override void AttackSkillAoE(ushort skillid, uint x, uint y) { if (IsAttacking) return; Item weapon; this.Inventory.GetEquiptBySlot((byte)ItemSlot.Weapon, out weapon); uint dmgmin = (uint)GetExtraStr(); uint dmgmax = (uint)(GetExtraStr() + (GetExtraStr() % 3)); if (weapon != null) { dmgmin += weapon.ItemInfo.MinMelee; dmgmax += weapon.ItemInfo.MaxMelee; } attackingSequence = new AttackSequence(this, dmgmin, dmgmax, skillid, x, y); }
public override void AttackSkill(ushort skillid, MapObject victim) { if (victim == null) { victim = SelectedObject; } if (IsAttacking || victim == null || !victim.IsAttackable) return; Item weapon; this.Inventory.GetEquiptBySlot((byte)ItemSlot.Weapon, out weapon); uint dmgmin = (uint)GetWeaponDamage(true); uint dmgmax = (uint)(GetWeaponDamage(true) + (GetWeaponDamage(true) % 3)); if (weapon != null) { dmgmin += weapon.ItemInfo.MinMelee; dmgmax += weapon.ItemInfo.MaxMelee; } attackingSequence = new AttackSequence(this, victim, dmgmin, dmgmax, skillid, true); }