depends on
Works with
About Monument Lock
A monument locks to the first player (and team) who loots, shoots, hacks a crate or swipes a card, granting them total access while locking others out.
Submit bugs or make features requests over at our discord, https://discord.gg/JQwaqgca.
Use Cases
PVE Servers:
Many PVE players share monuments and take turns completing puzzles (coop or solo), and the coordination is usually done through chat. Most of the time this works, but once in a while there are some bad apples who ignore basic sportsmanship.
PVP Servers:
Most PVP servers wouldn't use the locking feature, but some might want the broadcasting feature to encourage more PVP.
Features
- A monument locks to the first player (and team) who loots, shoots, hacks or swipes, granting them total access.
- A locked monument may prevent other players from looting and/or card reader access (configurable).
- Unauthorized players cannot do damage to players or NPCs, nor can they loot their bodies (configurable).
- Unauthorized players cannot hack locked crates within a monument's bounds. (configurable)
- A [locked monument] message is broadcast stating player name, monument display name, and grid location.
- The lock timer expires after 10 min (configurable) without lock triggers (looting, etc).
-
Monument unlocks once the player performs a locking trigger outside the monument (inc moving inventory items)
(Requires Puzzle Points plugin to capture card swipes) - Default true for all triggers: attacking, looting, picking up items, moving your inventory items, card swipe.
- Default true for all triggers: attacking, looting, picking up items, moving your inventory items, card swipe.
- Places a red dot marker on the map at each locked monument.
Future
- admin commands (force unlock, global unlock/lock, etc)
- display hud
- advanced stats tracking
Commands (chat)
/mlock <shortName>: Locks a monument to a player using this command /mlock <shortName> <playerName>:Locks a monument to a player with the name of <playerName>. /mlock list: List of available monument shortNames. /mlock clear: Removes all markers from map
Commands (console)
mlock.import -- Adds all monuments from Monument Finder into configuration, except the Exceptions array.
mlock.default -- Resets monuments to default values.
mlock.remove -- Removes all monuments in configuration.
mlock.fresh -- Performs mlock.remove then mlock.import.
Configuration
{
"Monuments": [
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Large Harbor",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/harbor/harbor_1.prefab",
"Monument Short Name": "harbor_1",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Small Harbor",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/harbor/harbor_2.prefab",
"Monument Short Name": "harbor_2",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Arctic Research Base",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/arctic_bases/arctic_research_base_a.prefab",
"Monument Short Name": "arctic_research_base_a",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Military Tunnel",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/large/military_tunnel_1.prefab",
"Monument Short Name": "military_tunnel_1",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Power Plant",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/large/powerplant_1.prefab",
"Monument Short Name": "powerplant_1",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Dome",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/small/sphere_tank.prefab",
"Monument Short Name": "sphere_tank",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Large Oil",
"Monument Prefab Name": "OilrigAI2",
"Monument Short Name": "OilrigAI2",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Small Oil",
"Monument Prefab Name": "OilrigAI",
"Monument Short Name": "OilrigAI",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Launch",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/large/launch_site_1.prefab",
"Monument Short Name": "launch_site_1",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Milly Base",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/military_bases/desert_military_base_a.prefab",
"Monument Short Name": "desert_military_base_a",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Water Treatment Plant",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/large/water_treatment_plant_1.prefab",
"Monument Short Name": "water_treatment_plant_1",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Satellite Dish",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/small/satellite_dish.prefab",
"Monument Short Name": "satellite_dish",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Underwater Lab A",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/underwater_lab/underwater_lab_a.prefab",
"Monument Short Name": "underwater_lab_a",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Underwater Lab B",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/underwater_lab/underwater_lab_b.prefab",
"Monument Short Name": "underwater_lab_b",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Underwater Lab C",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/underwater_lab/underwater_lab_c.prefab",
"Monument Short Name": "underwater_lab_c",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
},
{
"Is Monument enabled?": true,
"When a player enters this monument while locked, do we lock their looting abilities?": true,
"When a player enters this monument while locked, do we lock their card swiping abilities?": true,
"Do we want this plugin to broadcast to the server when this monument is locked?": true,
"Monument Display Name": "Underwater Lab D",
"Monument Prefab Name": "assets/bundled/prefabs/autospawn/monument/underwater_lab/underwater_lab_d.prefab",
"Monument Short Name": "underwater_lab_d",
"Monument Grid Position": null,
"Monument Last Updated At (datetime)": "",
"Monument Locked to this player ID": ""
}
],
"Monument Exceptions": [
"bandit_town",
"cave_large_hard",
"cave_large_medium",
"cave_large_sewers_hard",
"cave_medium_easy",
"cave_medium_hard",
"cave_medium_medium",
"cave_small_easy",
"cave_small_hard",
"cave_small_medium",
"compound",
"entrance_bunker_b",
"fishing_village_a",
"fishing_village_b",
"fishing_village_c",
"gas_station_1",
"ice_lake_1",
"ice_lake_2",
"ice_lake_3",
"ice_lake_4",
"mining_quarry_a",
"mining_quarry_b",
"mining_quarry_c",
"stables_a",
"stables_b",
"swamp_a",
"swamp_b",
"swamp_c",
"water_well_a",
"water_well_b",
"water_well_c",
"water_well_d",
"water_well_e",
"power_sub_big_1",
"power_sub_big_2",
"power_sub_small_1",
"power_sub_small_2",
"lighthouse",
"warehouse"
],
"Lock timer (600 = 10 min)?": 600,
"Enable max timer (regardless of how active player is)?": false,
"Max timer (1200 = 20 min)?": 1200,
"When a player enters a locked monument, do we lock their looting abilities?": true,
"When a player enters a locked monument, do we lock their card swiping abilities?": true,
"When a player enters a locked monument, do we lock their locked crate hacking abilities?": true,
"When a player enters a locked monument, do we lock their attacking abilities?": true,
"Can player lock monument from looting?": true,
"Can player lock monument from moving inventory items?": true,
"Can player lock monument from Puzzle Points card swipe?": true,
"Can player lock monument from picking up an item?": true,
"Can player lock monument from attacking?": true,
"Do we want this plugin to broadcast to the server when a monument is locked?": true
}
Localization
{ "MonumentLocked": "{0} locked {1} at ({2})", "MonumentUnlocked": "{0} at ({1}) is now unlocked.", "MonumentIsLocked": "This monument is already locked by {0} {1} seconds ago", "CardSwipedAt": "{0} swiped a {1} card at {2} ({3})!", "CardSwipedCancel": "You don't have card reader access right now.", "ZeroArgs": "Syntax: mlock <command> (eg. mlock import)", "MonumentsImported": "Monuments imported.", "MonumentsRemoved": "Monuments removed.", "MonumentsDefaulted": "Monuments reset to default.", "MonumentNotValid": "This is not a valid monument name..", "NoPerms": "You don't have permissions to use this command" }
For Developers
//called just before a monument is about to be locked
private object CanMonumentLock(BasePlayer player, string monumentShortName, string gridPosition)
{
//return anything other than null to prevent default behavior
return null;
}
//called just after a monument was locked
private object OnMonumentLocked(BasePlayer player, string monumentShortName, string gridPosition)
{
//return anything other than null to prevent default behavior
return null;
}
//called just after a monument was unlocked
private object OnMonumentUnocked(BasePlayer player, string shortName, string gridPosition)
{
//return anything other than null to prevent default behavior
return null;
}
//called after a player was denied access to the attempted behaviour while in a locked monument
private object OnAccessDenied(BasePlayer player, string seconds)
{
//return anything other than null to prevent default behavior
return null;
}
//called after a player was granted access to the attempted behaviour while in a locked monument
private object OnAccessGranted(BasePlayer player, string shortName, string gridPosition)
{
//return anything other than null to prevent default behavior
return null;
}