## turret system
### design
- upgrade graph
```
laser -> (heavy laser -> minigun) or (sniper -> railgun)
shotgun -> cannon -> tesla
plastic -> heavy plastic -> plasma plastic
slower -> (heavy slower -> final slower) or (stopper -> heavy stopper)
T generator -> kad generator -> s generator
```
- [modules](modules.md)
---
### models
- _laser_
- heavy laser
- minigun
- _sniper_
- railgun
- _shotgun_
- cannon
- tesla
- _plastic_
- heavy plastic
- plasma plastic
- _slower_
- heavy slower
- final slower
- stopper
- heavy stopper
- _struct I_
- _struct T_
- _struct X_
- _T generator_
- kad generator
- s generator
- attach point
### stats
- _laser_
- heavy laser
- minigun
- _sniper_
- railgun
- _shotgun_
- cannon
- tesla
- _plastic_
- heavy plastic
- plasma plastic
- _slower_
- heavy slower
- final slower
- stopper
- heavy stopper
- _struct I_
- _struct T_
- _struct X_
- _T generator_
- kad generator
- s generator
- attach point
### placement
- **only place when not ovelapping**
- **ghost cursor**
- **buy spending resources**
- shader to ghost cursor
### targeting
- **check visible**
- **check range**
- target selection
- **first**
- last
- strongest
- weakest
- closest
- further away
- least turning
- densest
- precalculate valid path nodes
### shooting
- **spread**
- _projectiles per shot_
- projectile logic
- **bullet**
- _ray_
- **plastic**
- projectile stats
- projectile models
- bullet
- ray
- plastic
- bullet bounce
- plastic bounce
- projectile fx
- trails
- explosions
- shooting particles
### economy
- **resources on enemy hit**
- generators make resources at end of wave
### upgrades
- _turrets can be upgraded_
- _only if can afford T_
### modules
- stats
- logic
- gui
- buy menu
- details
### range indicator
- model
### selection indicator
- model
- fx
### gui
- stats details
- _panel with stats_
- upgrade bonus preview
- module bonus preview
- resize based on stats
- **shop thumbnail**
- on select
- picker options
- sell
- upgrade (multiple)
- target
- buy module
- manual control