About HalloweenEvent
# Halloween Event
## Description
**Halloween Event** runs a lightweight, fast-paced Jack-o’-Lantern shooting event. After a short countdown, each online player gets their **own target pair** (Scarecrow + Jack-o’-Lantern) spawned in a configurable **ring around the player**.
Hit **Happy** pumpkins to score and drop candy; **Angry** ones yield no points. Entities auto-expire after a short lifetime and are **immediately respawned** to keep the arena populated.
---
## Features
### Event Flow
- Global **countdown**, then timed **event window**.
- Per-player spawns; scoring tracked and **top players** announced at the end.
- **Candy drop** on valid hits (configurable item shortname/amount).
### Smart Spawning (Ring)
- Spawns strictly **around** the player (between `MinDistanceFromPlayer` and `SpawnRadius`).
- **Progressive search**: strict → medium → relaxed → last-resort to always find a ring position (works on terrain, monuments, bases).
### Auto-Respawn
- On **destroy** *or* on **lifetime timeout**, the plugin spawns **`RespawnCountOnDestroy`** new targets for that player.
### Health Watcher
- Global health check every 2s: cleans up half-broken pairs and triggers respawn, keeping the loop stable.
### Lightweight
- Event-only build: just the commands you need, minimal logging, no test/debug commands.
---
## Commands
### Chat & Console
| Command | Description | Permission |
|------------------------|------------------------------------|-------------------------|
| `/flashhalloweenevent` | Start the countdown & event | `halloweenevent.use` |
| `/stophalloweenevent` | Stop countdown/event & clean up | `halloweenevent.use` |
> The same names exist as console commands: `flashhalloweenevent`, `stophalloweenevent`.
---
## Permissions
```plaintext
halloweenevent.use - Allows starting/stopping the event
```
---
## Configuration (excerpt)
```json
{
"CountdownMinutes": 3,
"EventDurationSeconds": 60,
"SpawnRadius": 10.0,
"MinDistanceFromPlayer": 4.0,
"ScarecrowLifetime": 3.0,
"RespawnCountOnDestroy": 2,
"HappyJackChance": 0.6,
"JackHeightOnScarecrow": 1.2,
"CandyItemShortname": "halloween.candy",
"CandyReward": 1,
"MaxActivePerPlayer": 20,
"MaxVerticalOffsetUpFromPlayer": 1.5,
"MaxVerticalOffsetDownFromPlayer": 5.0,
"SampleAttempts": 72,
"AngleSweeps": 2,
"FallbackJitter": 8
}
```
**Notes**
- Increase `SampleAttempts`/`AngleSweeps` if your map has many dense structures.
- Reduce `MinDistanceFromPlayer` if players often stand under roofs/overhangs.
- `RespawnCountOnDestroy` controls how many new pairs spawn after a hit **and** after lifetime expiry.
---
**load, run, enjoy**