diff --git a/player.go b/player.go index 7dca9a8..52d204f 100644 --- a/player.go +++ b/player.go @@ -218,9 +218,9 @@ func (p *player) fire(projectiles map[*Projectile]bool, turn int) *Projectile { Id: idg.Hash(), Position: p.Robot.Position, MoveTo: *p.Robot.FireAt, - Damage: 10, + Damage: p.Robot.Stats.WeaponDamage, Radius: p.Robot.Stats.WeaponRadius, - Speed: float32(p.Robot.Stats.Speed * 3), + Speed: p.Robot.Stats.WeaponSpeed, Owner: p, } } diff --git a/robot.go b/robot.go index 84585a9..a19fda6 100644 --- a/robot.go +++ b/robot.go @@ -64,6 +64,8 @@ type Stats struct { ScannerRadius int `json:"-"` TurnSpeed int `json:"-"` FireRate int `json:"-"` + WeaponDamage int `json:"-"` + WeaponSpeed float32 `json:"-"` } // We request stats using an integer between 1 and 100, the @@ -76,6 +78,8 @@ type StatsRequest struct { ScannerRadius int `json:"scanner_radius"` TurnSpeed int `json:"turn_speed"` FireRate int `json:"fire_rate"` + WeaponDamage int `json:"weapon_damage"` + WeaponSpeed int `json:"weapon_speed"` } func DeriveStats(request StatsRequest) Stats { @@ -110,6 +114,14 @@ func DeriveStats(request StatsRequest) Stats { var fire_rate_max float32 = 2000.0 s.FireRate = int(fire_rate_max+300.0) - int(((float32(request.FireRate)/100.0)*(fire_rate_max-fire_rate_min))+fire_rate_min) + var weapon_damage_min float32 = 0.0 + var weapon_damage_max float32 = 20.0 + s.WeaponDamage = int(((float32(request.WeaponDamage) / 100.0) * (weapon_damage_max - weapon_damage_min)) + weapon_damage_min) + + var weapon_speed_min float32 = 80.0 + var weapon_speed_max float32 = 600.0 + s.WeaponSpeed = float32(((float32(request.WeaponSpeed) / 100.0) * (weapon_speed_max - weapon_speed_min)) + weapon_speed_min) + return s } @@ -118,7 +130,7 @@ func (s StatsRequest) Valid() bool { s.ScannerRadius + s.Acceleration + s.TurnSpeed + s.FireRate) // allowing for 50 pts in every category - if total > 400 { + if total > 500 { return false } return true