Open VedVid opened 5 years ago
For example, now it is:
case RangedDumbAI: if c.Equipment[SlotWeaponPrimary] != nil { // Use primary ranged weapon. if c.DistanceTo(cs[0].X, cs[0].Y) >= FOVLength-1 { // TODO: // For now, every ranged skill has range equal to FOVLength-1 // but it should change in future. c.MoveTowards(b, cs[0].X, cs[0].Y, ai) } else { // DumbAI will not check if target is valid vec, err := NewVector(c.X, c.Y, cs[0].X, cs[0].Y) if err != nil { fmt.Println(err) } _ = ComputeVector(vec) _, _, target, _ := ValidateVector(vec, b, cs, o) if target != nil { c.AttackTarget(target) } } } else if c.Equipment[SlotWeaponSecondary] != nil { // Use secondary ranged weapon. if c.DistanceTo(cs[0].X, cs[0].Y) >= FOVLength-1 { // TODO: // For now, every ranged skill has range equal to FOVLength-1 // but it should change in future. c.MoveTowards(b, cs[0].X, cs[0].Y, ai) } else { // DumbAI will not check if target is valid vec, err := NewVector(c.X, c.Y, cs[0].X, cs[0].Y) if err != nil { fmt.Println(err) } _ = ComputeVector(vec) _, _, target, _ := ValidateVector(vec, b, cs, o) if target != nil { c.AttackTarget(target) } } } else { // Use melee attack. if c.AITriggered == true { if c.DistanceTo(cs[0].X, cs[0].Y) > 1 { c.MoveTowards(b, cs[0].X, cs[0].Y, ai) } else { c.AttackTarget(cs[0]) } } else { dx := RandRange(-1, 1) dy := RandRange(-1, 1) c.Move(dx, dy, b) } }
it could looks like that:
if primaryWeapon != nil { UsePrimaryWeapon(Creature) } else if secondaryWeapon != nil { UseSecondaryWeapon(Creature) } else { UseMeleeWeapon(Creature) }
For example, now it is:
it could looks like that: