KOTH Box
Custom PVP event for players to fight in the dome and win rewards.
Features
- Admins can easily set up multiple KOTH boxes in any location on the map
- Dome size is automatically adjusted to the specified radius of the KOTH box, so each of them can have different size
- KOTH box event has two stages: warmup and event. During the warmup the dome effect has white color and as the event stage begins it changes color to green
- Players can't shoot through the KOTH box dome. It protects players inside from outside fire as well as the opposite
- When walking through the dome border players hear the sound and configurable amount of damage is taken
- Building rules inside the KOTH box are fully configurable. When KOTH box isn't spawned, players are not allowed to build in the area
- The winner is the player who survives the longest sum amount of time inside the dome or who have reached the configured total amount of time first
- UI displays player's rank and time as well as time left for the warmup and event
- KOTH box events can be invoked on demand by admin or scheduled in the configuration
- Scheduled events may be configured to require a minimum amount of players on the server
- Rewards for winning the event can be experience, uconomy currency, vehicle or items accessible from vault like storage
Credits
- -V3-#4601 for the idea and help in testing the plugin
- lamy#1325 for creating a dome effect
Workshop
- 3241686579 - KOTH Box (dome, sound and UI effects)
Commands
Player
- /whenkoth - Shows information about time left to the next scheduled KOTH box event.
- /claimkoth - Claims the reward for winning the latest KOTH box event.
Admin
- /setkothbox <name> <radius> - Sets and adds a new KOTH box at your current position to the database.
- /deletekothbox <name> - Deletes the KOTH box with the specified name from the database.
- /kothboxes - Lists all KOTH boxes that exist in the database.
- /previewkothbox <radius> [duration] - Spawns a preview of the KOTH box dome effect at your current position with the specified radius and duration equal to 10 seconds if not specified.
- /testkothbox <name> [duration] - Spawns a KOTH box dome effect with the specified name and lasts for 10 seconds if duration is not specified.
- /startkoth [name] [rewardTierName] - Starts a KOTH box event with the specified name or picks a random one if not specified. The reward tier will be default if not specified.
- /stopkoth - Stops the currently running KOTH box event. If the warmup has ended it picks the winner.
Console
- /reloadkothboxes - Reloads the KOTH boxes from the database (kothboxes.json file). Console only.
Permissions
Permissions of the commands are the same as the command names.
<!-- Player -->
<Permission Cooldown="0">whenkoth</Permission>
<Permission Cooldown="0">claimkoth</Permission>
<!-- Admin -->
<Permission Cooldown="0">setkothbox</Permission>
<Permission Cooldown="0">deletekothbox</Permission>
<Permission Cooldown="0">kothboxes</Permission>
<Permission Cooldown="0">previewkothbox</Permission>
<Permission Cooldown="0">testkothbox</Permission>
<Permission Cooldown="0">startkoth</Permission>
<Permission Cooldown="0">stopkoth</Permission>
Configuration
<?xml version="1.0" encoding="utf-8"?>
<KOTHBoxConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MessageColor>yellow</MessageColor>
<Debug>false</Debug>
<WarmupDomeEffectId>5921</WarmupDomeEffectId>
<DomeEffectId>5922</DomeEffectId>
<UIEffectId>5923</UIEffectId>
<WinSoundEffectId>5930</WinSoundEffectId>
<LoseSoundEffectId>5931</LoseSoundEffectId>
<DomeSoundEffectId>5932</DomeSoundEffectId>
<UINotificationDurationSeconds>5</UINotificationDurationSeconds>
<UIWinnerDurationSeconds>10</UIWinnerDurationSeconds>
<WarmupDomeDamage>15</WarmupDomeDamage>
<DomeDamage>15</DomeDamage>
<KOTHBoxWarmupSeconds>180</KOTHBoxWarmupSeconds>
<KOTHBoxDurationSeconds>1200</KOTHBoxDurationSeconds>
<KOTHBoxWinningTimeSeconds>300</KOTHBoxWinningTimeSeconds>
<KOTHRewardExpireTimeSeconds>1800</KOTHRewardExpireTimeSeconds>
<RewardVaultWidth>6</RewardVaultWidth>
<RewardVaultHeight>10</RewardVaultHeight>
<ScheduledKOTHBoxes>
<ScheduledKOTHBox Time="16:00:00" MinimumPlayers="10">
<KOTHBoxEvents>
<KOTHBoxEvent KOTHBoxName="Prison" RewardTierId="default" />
<KOTHBoxEvent KOTHBoxName="Harbor Bank" RewardTierId="money" />
</KOTHBoxEvents>
</ScheduledKOTHBox>
<ScheduledKOTHBox Time="18:00:00" MinimumPlayers="12">
<KOTHBoxEvents>
<KOTHBoxEvent KOTHBoxName="Stratford Gas Station" RewardTierId="vehicle" />
<KOTHBoxEvent KOTHBoxName="Military Base" RewardTierId="default" />
</KOTHBoxEvents>
</ScheduledKOTHBox>
</ScheduledKOTHBoxes>
<EnableBuildingRules>true</EnableBuildingRules>
<BuildingRules>
<BuildingRule Name="Ladders" MaxPerPlayer="3">
<Items>
<Item Id="325" Name="Maple Ladder" />
<Item Id="326" Name="Birch Ladder" />
<Item Id="327" Name="Pine Ladder" />
<Item Id="379" Name="Metal Ladder" />
</Items>
</BuildingRule>
<BuildingRule Name="Sandbags" MaxPerPlayer="5">
<Items>
<Item Id="365" Name="Sandbag" />
</Items>
</BuildingRule>
</BuildingRules>
<DefaultRewardTierName>Default</DefaultRewardTierName>
<RewardTiers>
<RewardTier Name="Default">
<Rewards>
<Reward Name="Maplestrike" Weight="60">
<Experience>500</Experience>
<Items>
<Item Id="363" Name="Maplestrike" Amount="1" />
<Item Id="6" Name="Military Magazine" Amount="3" />
<Item Id="17" Name="Military Drum" Amount="1" />
</Items>
</Reward>
<Reward Name="Dragonfang" Weight="40">
<Experience>500</Experience>
<Items>
<Item Id="132" Name="Dragonfang" Amount="1" />
<Item Id="133" Name="Dragonfang Box" Amount="2" />
</Items>
</Reward>
</Rewards>
</RewardTier>
<RewardTier Name="Money">
<Rewards>
<Reward Name="1,000 credits" Weight="50">
<Money>1000</Money>
</Reward>
<Reward Name="3,000 credits" Weight="30">
<Money>3000</Money>
</Reward>
<Reward Name="5,000 credits" Weight="20">
<Money>5000</Money>
</Reward>
</Rewards>
</RewardTier>
<RewardTier Name="Vehicles">
<Rewards>
<Reward Name="Military Helicopter" Weight="50">
<Vehicle Id="93" Name="Forest Transport Heli" />
</Reward>
<Reward Name="Military Tank" Weight="50">
<Vehicle Id="120" Name="Forest Tank" />
</Reward>
</Rewards>
</RewardTier>
</RewardTiers>
</KOTHBoxConfiguration>
Translations
<?xml version="1.0" encoding="utf-8"?>
<Translations xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Translation Id="SetKOTHBoxInvalid" Value="Invalid usage, use /setkothbox <name> <radius>" />
<Translation Id="SetKOTHBoxInvalidRadius" Value="{0} is not a valid radius" />
<Translation Id="SetKOTHboxAlreadyExists" Value="KOTH box {0} already exists" />
<Translation Id="SetKOTHBoxSuccess" Value="Successfully set a new KOTH box {0} at your position with radius: {1}" />
<Translation Id="ReloadKOTHBoxesSuccess" Value="Successfully reloaded {0} KOTH boxes from database!" />
<Translation Id="KOTHBoxesNone" Value="There isn't any KOTH boxes in the database" />
<Translation Id="KOTHBoxNotExist" Value="KOTH box with the specified name {0} does not exist" />
<Translation Id="RewardTierNotExist" Value="Reward tier with the specified name {0} does not exist" />
<Translation Id="StartKOTHAlreadyRunning" Value="{0} KOTH box is already started" />
<Translation Id="StartKOTHSucccess" Value="Successfully started a {0} KOTH box event with reward {1}!" />
<Translation Id="StopKOTHNotRunning" Value="There isn't any active KOTH box event running" />
<Translation Id="StopKOTHSuccess" Value="Successfully stopped a {0} KOTH box event!" />
<Translation Id="CantDamagePlayerInOrb" Value="You can't damage a player when you are in orb" />
<Translation Id="KOTHWinnerClaimReward" Value="Use /claimkoth to claim your {0} reward for winning!" />
<Translation Id="ClaimKOTHNoRewards" Value="You don't have any reward to claim" />
<Translation Id="ClaimKOTHVehicleReward" Value="You were given {0} vehicle from your {1} reward!" />
<Translation Id="ClaimKOTHExperienceReward" Value="You were given {0} experience from your {1} reward!" />
<Translation Id="ClaimKOTHMoneyReward" Value="You were given {0} credits from your {1} reward!" />
<Translation Id="ClaimKOTHItemsReward" Value="You have claimed all items from your {0} reward!" />
<Translation Id="ClaimKOTHItemsRewardNotClaimed" Value="You have {0} items left to claim from your {1} reward!" />
<Translation Id="WhenKOTHNotScheduled" Value="There isn't any scheduled KOTH box event" />
<Translation Id="WhenKOTHSuccess" Value="KOTH box event will start in {0} (minimum {1} players)" />
<Translation Id="ScheduledKOTHBoxCanceledMinimumPlayers" Value="The scheduled KOTH box event was canceled because there isn't minimum {0} players" />
<Translation Id="ScheduledKOTHBoxCanceledAlreadyRunning" Value="The scheduled KOTH Box event was canceled because one KOTH box event is already running" />
<Translation Id="UINotificationKOTHBoxWarmupStarted" Value="The KOTH box warmup has started!" />
<Translation Id="UINotificationKOTHBoxEventStarted" Value="The KOTH box event {0} has started!" />
<Translation Id="UINotificationKOTHBoxEventStopped" Value="The KOTH box event {0} has ended!" />
<Translation Id="UINotificationPlayerEnteredKOTHBox" Value="You entered the KOTH box" />
<Translation Id="UINotificationPlayerLeftKOTHBox" Value="You left the KOTH box" />
<Translation Id="UINotificationPlayerWonKOTHBoxEvent" Value="You won the KOTH box event!" />
<Translation Id="UINotificationPlayerCantShootThroughKOTHBox" Value="You can't shoot through the KOTH box" />
<Translation Id="UINotificationPlayerProtectedByKOTHBox" Value="You were protected by the KOTH box" />
<Translation Id="UIWarmupCountdownTitle" Value="Warmup ends in:" />
<Translation Id="UIEventCountdownTitle" Value="Ends in:" />
<Translation Id="UIRankTitle" Value="Rank:" />
<Translation Id="UIRankContent" Value="#{0}" />
<Translation Id="UIYourTimeTitle" Value="Your time:" />
<Translation Id="UIWinnerContent" Value="{0} won the KOTH box event!" />
<Translation Id="UIInfoContent" Value="KOTH box spawned in {0}" />
<Translation Id="UIWinnerInfoContent" Value="Use /claimkoth to claim your {0} reward" />
<Translation Id="BuildingNotAllowed" Value="You are not allowed to build {0} because KOTH box spawns here" />
<Translation Id="BuildingNotAllowedMaxPerPlayer" Value="You have reached the limit of {0} {1} in KOTH box!" />
<Translation Id="BuildingAllowed" Value="You have built {0}/{1} {2} in KOTH box" />
<Translation Id="KOTHBoxNotFound" Value="Failed to find any KOTH box called {0}" />
<Translation Id="TestKOTHBoxSuccessSingle" Value="Successfully spawned {0} KOTH box for {1} seconds!" />
<Translation Id="TestKOTHBoxSuccessAll" Value="Successfully spawned all {0} KOTH boxes for {1} seconds!" />
<Translation Id="DeleteKOTHBoxInvalid" Value="Invalid usage, use /deletekothbox <name>" />
<Translation Id="DeleteKOTHBoxSuccess" Value="Successfully deleted KOTH box {0} from database!" />
<Translation Id="KOTHBoxesItem" Value="#{0} {1} - {2} radius" />
<Translation Id="PreviewKOTHBoxInvalid" Value="Invalid usage, use /previewkothbox <radius> [duration]" />
<Translation Id="PreviewKOTHBoxInvalidRadius" Value="{0} is not a valid radius" />
<Translation Id="PreviewKOTHBoxSuccess" Value="Successfully spawned a preview of KOTH box at your position radius {0} for {1} seconds!" />
</Translations>