Drillbert

## Info

### Description

"Adopt a loveable creature that loves to dig. Carry it into the mine and drop off where you want it to work. Check back to wake it up if it goes to sleep on the job."

## Placement

### Slot

Cellar

*Drillbert* is a lovely dinosaur-like creature that is a gadget. His nest takes up 1 of the 2 *Dome Cellar* gadget slots. He has a drill strength upgrade path, a treat upgrade path, a conditioning path(**not** mutually exclusive), and a sibling upgrade at the end. By default, he has 200 drilling hits, before going to sleep, with the power of 0.6 and he can only dig straight until he hits an indestructible wall.

## Tutorials

3 in-game tutorial pop-ups explain the basics of how to use *Drillbert*.

### Tank Tutorial

"Take Drillbert from its tank, and place it in the mine, where it should dig."

### Change Direction Tutorial

"Hold (space bar) to pick up Drillbert Again. Hit (space bar) to make it change direction, if on ground"

### Sleep Tutorial

"Drillbert goes to sleep after a while, or when it meets a wall it can't dig. When close to it, hit (space bar) to wake it. You can make it turn by hitting (space bar) when it's awake."

## Behaviour

### Walking

Drillbert has a maximum speed of 2 pixels per second. He reaches this speed almost instantly. You can change his direction by tapping the *Space Bar* or *E*(use key bind).

### Drilling

Drillbert has a set number of drilling hits before he gets tired. It can be increased by the basic conditioning upgrade from 200 to 300. The drill strength per hit can be increased from the default **0.6** up to **8** using the drill strength upgrades.

### Sleeping

After *Drillbert* gets tired(finishes all of his drilling hits) or encounters an indestructible wall, he will go to sleep.

The amount of time he sleeps is calculated using the following formula:

```
Data.of("drillbot.sleeptime") * GameWorld.getTimeBetweenWaves()
```

drillbot.sleeptime = 0.4

```
 cachedTimeBetweenWaves = Data.of("monsters.waveinterval") + Data.of("monsters.waveintervalProgression") \* Level.map.getProgress()
 cachedTimeBetweenWaves \*= 1.0 - Level.difficulty() \* 0.1
 cachedTimeBetweenWaves \*= Data.of("monstermodifiers.timebetweenwavesmodifier")
 return cachedTimeBetweenWaves

```

waveinterval = 60
waveintervalProgression = 45 \* sqrt(tileCount \* 0.001) *tileCount is mined tiles*

```
func getProgress()->float:
 var progress = 0.0
 for layer in startingIronCountByLayer:
 progress += 1.0 - (currentIronCountByLayer[layer] / float(startingIronCountByLayer[layer]))
 progress /= layerCount
 return progress

```

timebetweenwavesmodifier is 1.15 for the maze modifier and 2 for the long cycles modifier

### Battle

During battle, *Drillbert* enters a "scared" state, shaking in fear and won't mine until the wave is over.

## Strategies

Here are some helpful strategies

* Get the first drill upgrade as quickly as possible
	+ the upgrade is cheap(3 iron and 1 water) and increases the drill strength by ~135%(0.6 -> 1.4)
* Get the basic conditioning upgrade as quickly as possible
	+ This upgrade is also cheap(2 iron and 1 water) and increases the drilling hits by 50%(200 -> 300)

## Trivia

Here are some interesting facts you probably didn't know:

* Drillbert was originally named *drillbot* and still goes by that name in the code
* He was originally meant to be a robot(as suggested by the naming drill*bot*) but it didn't fit the vibe of the game
* Drillbert went through a lot of concepts as most things in the game
	+ *Anne* drew multiple versions: a dinosaur, a mole and an octopus
	+ There were multiple versions of the "carried sprite". *Can you spot which one is in-game? check*
* The drilling sound is played at a different pitch and db volume according to the drill strength upgrade