Return to post
settings
{
main
{
Description: "Escape the bucket before the other crabs pull you back in! (by nobody#1774)"
}
lobby
{
Allow Players Who Are In Queue: Yes
Match Voice Chat: Enabled
Max Spectators: 12
Return To Lobby: Never
}
modes
{
Deathmatch
{
enabled maps
{
Blizzard World
Blizzard World Winter
Castillo
Château Guillard
Château Guillard Halloween
Dorado
Eichenwalde
Eichenwalde Halloween
Hanamura
Hanamura Winter
Havana
Hollywood
Lijiang Control Center
Nepal Sanctum
Temple of Anubis
}
}
General
{
Allow Hero Switching: Off
Enemy Health Bars: Off
Game Mode Start: Immediately
Hero Limit: Off
Respawn As Random Hero: On
Spawn Health Packs: Disabled
}
}
heroes
{
General
{
Roadhog
{
Chain Hook Cooldown Time: 50%
Movement Speed: 75%
Primary Fire: Off
Quick Melee: Off
Secondary Fire: Off
Ultimate Generation - Passive Whole Hog: 200%
}
enabled heroes
{
Roadhog
}
}
}
}
variables
{
global:
0: VECTOR_Spawn
1: VECTOR_Arena_Center
2: BOOL_Initialized
3: PLAYERS_All
4: VECTOR_Goal
5: VECTOR_Jump_Pad
6: VECTORS_Barriers
7: INT_Loop_Control
8: STRINGS_Crab_Facts
9: REAL_Arena_Sphere_Radius
}
disabled rule("CREDITS: Thanks to Pizzazle, DeadMeat, gretschman, and Pafk for their help playtesting!")
rule("CREDITS")
{
event
{
Ongoing - Global;
Player Joined Match;
All;
All;
}
actions
{
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Thanks to these players for their help playtesting:"));
Small Message(Event Player, Custom String("Pizzazle, DeadMeat, gretschman, Pafk"));
}
}
disabled rule("DEBUG: Teleport")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Interact) == True;
Is Button Held(Event Player, Primary Fire) == True;
}
actions
{
Teleport(Event Player, Position Of(Event Player) + Facing Direction Of(Event Player) * 5);
}
}
rule("MAP: Blizz4rd World")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
(Current Map == Map(Blizzard World) || Current Map == Map(Blizzard World Winter)) == True;
}
actions
{
Global.VECTOR_Spawn = Vector(-0.888, -3.473, 16.558);
Global.VECTOR_Arena_Center = Vector(-14.674, -3.479, 12.609);
Global.VECTOR_Goal = Vector(-9.030, 1.631, 21.013);
Global.VECTOR_Jump_Pad = Vector(-17.100, -3.473, 13.245);
Global.VECTORS_Barriers = Array(Vector(3.103, -3.464, 11.313), Vector(11.005, -3.482, 16.753), Vector(-7.115, -2.365, -3.246),
Vector(-11.544, -2.465, -4.993), Vector(-15.145, -2.454, -5.833), Vector(-19.065, -2.458, -5.435));
Global.VECTORS_Barriers = Empty Array;
Global.REAL_Arena_Sphere_Radius = 20;
}
}
rule("MAP: Castillo")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Castillo);
}
actions
{
Global.VECTOR_Spawn = Vector(-118.998, 35.997, 61.419);
Global.VECTOR_Arena_Center = Vector(-124.997, 35.970, 62.915);
Global.VECTOR_Goal = Vector(-109.173, 34.934, 59.515);
Global.VECTOR_Jump_Pad = Vector(-130.156, 36.038, 63.550);
Global.VECTORS_Barriers = Array(Vector(-114.200, 35.229, 53.001), Vector(-121.584, 36.291, 45.118), Vector(-111.414, 35.181,
67.222), Vector(-115.065, 36.280, 77.703), Vector(-115.984, 40.193, 52.837), Vector(-112.842, 40.191, 68.444));
Global.REAL_Arena_Sphere_Radius = 20;
}
}
rule("MAP: Chateau Guillard")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
(Current Map == Map(Château Guillard) || Current Map == Map(Château Guillard Halloween)) == True;
}
actions
{
Global.VECTOR_Spawn = Vector(196.054, 17.840, 60.039);
Global.VECTOR_Arena_Center = Vector(210.540, 8.455, 51.508);
Global.VECTOR_Goal = Vector(229.330, 14.210, 61.870);
Global.VECTOR_Jump_Pad = Vector(206.227, 9.625, 61.836);
Global.VECTORS_Barriers = Array(Vector(206.115, 9.626, 65.593), Vector(216.465, 10.589, 62.149));
Global.REAL_Arena_Sphere_Radius = 30;
}
}
rule("MAP: Dorado")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Dorado);
}
actions
{
Global.VECTOR_Spawn = Vector(18.244, 6.172, -33.901);
Global.VECTOR_Arena_Center = Vector(25.575, 5.624, -34.393);
Global.VECTOR_Goal = Vector(28.089, 5.374, -17.906);
Global.VECTOR_Jump_Pad = Vector(26.035, 6, -41.307);
Global.VECTORS_Barriers = Array(Vector(20.973, 5.659, -23.833), Vector(31.008, 5.637, -23.653), Vector(36.247, 12.650, -22.604));
Global.REAL_Arena_Sphere_Radius = 20;
}
}
rule("MAP: Eichenwalde")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
(Current Map == Map(Eichenwalde) || Current Map == Map(Eichenwalde Halloween)) == True;
}
actions
{
Global.VECTOR_Spawn = Vector(71.571, 12.342, -115.866);
Global.VECTOR_Arena_Center = Null;
Global.VECTOR_Goal = Vector(104.419, 14.352, -78.579);
Global.VECTOR_Jump_Pad = Vector(92.939, 14.295, -72.219);
Global.VECTORS_Barriers = Array();
Global.REAL_Arena_Sphere_Radius = Null;
}
}
rule("MAP: Hanamura")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
(Current Map == Map(Hanamura) || Current Map == Map(Hanamura Winter)) == True;
}
actions
{
Global.VECTOR_Spawn = Vector(12.101, 0.636, 28.921);
Global.VECTOR_Arena_Center = Vector(6.735, 0.613, 30.370);
Global.VECTOR_Goal = Vector(-4.030, 3.883, 9.244);
Global.VECTOR_Jump_Pad = Vector(-1.884, 0.640, 34.479);
Global.VECTORS_Barriers = Array();
Global.REAL_Arena_Sphere_Radius = 25;
}
}
rule("MAP: Havana")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Havana);
}
actions
{
Global.VECTOR_Spawn = Vector(6.123, 9.624, -61.711);
Global.VECTOR_Spawn = Vector(24.827, 7.639, -64.217);
Global.VECTOR_Arena_Center = Null;
Global.VECTOR_Goal = Vector(26.976, 13.636, -73.689);
Global.VECTOR_Jump_Pad = Vector(35.335, 7.432, -67.177);
Global.VECTORS_Barriers = Array();
"Not needed on the indoor stage."
Global.REAL_Arena_Sphere_Radius = Null;
}
}
rule("MAP: Hollywood")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Hollywood);
}
actions
{
Global.VECTOR_Spawn = Vector(-15.029, 1.631, 40.938);
Global.VECTOR_Arena_Center = Vector(9.036, 7.638, 47.114);
Global.VECTOR_Goal = Vector(9.399, 7.630, 46.627);
Global.VECTOR_Jump_Pad = Vector(1.316, 1.469, 55.160);
Global.VECTORS_Barriers = Array();
Global.REAL_Arena_Sphere_Radius = 35;
}
}
rule("MAP: Lijiang Control Center")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Lijiang Control Center);
}
actions
{
Global.VECTOR_Spawn = Vector(54.349, 266.615, 328.987);
Global.VECTOR_Arena_Center = Vector(42.905, 266.625, 339.701);
Global.VECTOR_Goal = Vector(28.953, 271.628, 356.135);
Global.VECTOR_Jump_Pad = Vector(42.905, 266.625, 339.701);
Global.VECTORS_Barriers = Array();
Global.REAL_Arena_Sphere_Radius = 35;
}
}
rule("MAP: Necropolis")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Necropolis);
}
actions
{
Global.VECTOR_Spawn = Vector(1.142, 4.617, -26.952);
Global.VECTOR_Arena_Center = Vector(1.823, 13.340, -16.557);
Global.VECTOR_Goal = Vector(1.823, 13.340, -16.557);
Global.VECTOR_Jump_Pad = Vector(-11.655, 4.618, -22.937);
Global.VECTORS_Barriers = Array();
Global.REAL_Arena_Sphere_Radius = 35;
}
}
rule("MAP: Nepal Sanctum")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Nepal Sanctum);
}
actions
{
Global.VECTOR_Spawn = Vector(51.231, 131.325, 0.252);
Global.VECTOR_Arena_Center = Vector(68.432, 133.618, -0.023);
Global.VECTOR_Goal = Vector(83.141, 130.071, -0.002);
Global.VECTOR_Jump_Pad = Null;
Global.VECTORS_Barriers = Array();
Global.REAL_Arena_Sphere_Radius = 35;
}
}
rule("MAP: Temple of Anubis")
{
event
{
Ongoing - Global;
}
conditions
{
Global.VECTOR_Spawn == Null;
Current Map == Map(Temple of Anubis);
}
actions
{
Global.VECTOR_Spawn = Vector(-31.622, 2.888, 28.347);
Global.VECTOR_Arena_Center = Vector(-31.622, 2.888, 28.347);
Global.VECTOR_Goal = Vector(-16.402, 6.124, 38.658);
Global.VECTOR_Jump_Pad = Vector(-33.838, 2.966, 35.981);
Global.VECTORS_Barriers = Array(Vector(-24.390, 9.575, 44.223), Vector(-27.520, 9.668, 45.262));
Global.REAL_Arena_Sphere_Radius = 20;
}
}
rule("INIT")
{
event
{
Ongoing - Global;
}
conditions
{
Global.BOOL_Initialized != True;
}
actions
{
Create Effect(Global.PLAYERS_All, Sphere, Blue, Global.VECTOR_Arena_Center, Global.REAL_Arena_Sphere_Radius, Visible To);
Create Effect(Global.PLAYERS_All, Sphere, Green, Global.VECTOR_Goal, 2, Visible To);
Disable Built-In Game Mode Scoring;
Set Objective Description(Global.PLAYERS_All, Custom String("Escape the bucket before the other crabs pull you back in!"),
Visible To);
Create Effect(Global.PLAYERS_All, Ring, Green, Global.VECTOR_Jump_Pad, 2, Visible To Position and Radius);
Create HUD Text(Global.PLAYERS_All, Custom String("SHARE CODE"), Custom String("https://workshop.codes/crab-bucket"),
Custom String("D2DMX"), Left, 0, White, Turquoise, White, Visible To and String, Default Visibility);
Create HUD Text(Global.PLAYERS_All, Custom String("BREATHER"), Custom String(""), Custom String("Blocks hooks for 1 second"),
Right, 0, Orange, White, White, Visible To, Default Visibility);
For Global Variable(INT_Loop_Control, 0, Count Of(Global.VECTORS_Barriers), 1);
Create Effect(Global.PLAYERS_All, Bad Aura, Red, Global.VECTORS_Barriers[Global.INT_Loop_Control], 1, Visible To);
End;
Global.STRINGS_Crab_Facts = Array(Custom String("Life's like a bucket o'crabs."), Custom String(
"There's a life lesson in here somewhere."), Custom String("What kind of crab are you?"), Custom String(
"Non-crab fact: pulled pork is delicious barbecued in a pit."), Custom String("You seem a little crabby."), Custom String(
"There are more than 4,500 species of crabs."), Custom String("Crabs are omnivores."), Custom String(
"A female crab may lay 50,000 to 10 million eggs in one session."), Custom String(
"Groups of crabs living together are known as “casts.”"), Custom String("A crab lives 3 to 4 years."), Custom String(
"There is no such thing as a tree crab."), Custom String(
"In 1972, a domestic housecat rescued an injured crab and later ate it."), Custom String(
"A strong waterspout may lift crabs near the water's surface and rain them down over land."), Custom String(
"The giant Japanese Spider Crab can measure up to 13 feet across."), Custom String(
"Crabs have compound eyes with hundreds of lenses."), Custom String(
"Crabs communicate by flapping pincers or drumming claws."), Custom String(
"Research suggests crabs may suffer pain and remember it."), Custom String(
"True crabs can walk in any direction, but they move fastest sideways."), Custom String(
"Pea crabs are the smallest crabs, about the size of a pea."), Custom String(
"Humans eat about 1.5 million tons of crab every year."), Custom String("Crabs have eyestalks."), Custom String(
"A crab may lose a claw or leg in a fight, but it grows back in time."), Custom String(
"A crab can live on land as long as it keeps its gills moist."), Custom String(
"As a crab grows, it outgrows its shell and must grow a new one."), Custom String(
"Crabs often work together to get food and to protect their families."), Custom String(
"Some crabs have teeth in their stomachs."), Custom String("Adult crabs migrate up to 100 miles to mate."), Custom String(
"Female crabs only eat their own young when hungry."));
Create Icon(Global.PLAYERS_All, Global.VECTOR_Goal, Arrow: Down, Visible To, Green, True);
}
}
rule("PLAYER: Spawns")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Has Spawned(Event Player) == True;
}
actions
{
Teleport(Event Player, Global.VECTOR_Spawn);
}
}
rule("PLAYER: Joins")
{
event
{
Player Joined Match;
All;
All;
}
actions
{
Global.PLAYERS_All = All Players(All Teams);
Set Damage Received(Event Player, 0);
}
}
rule("PLAYER: Lands in goal")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.VECTOR_Goal) <= 2;
}
actions
{
Big Message(All Players(All Teams), Custom String("{0} escaped the bucket!", Event Player));
Small Message(Event Player, Random Value In Array(Global.STRINGS_Crab_Facts));
Modify Player Score(Event Player, 1);
Wait(2, Ignore Condition);
Respawn(Event Player);
Wait(0.250, Ignore Condition);
Teleport(Event Player, Global.VECTOR_Spawn);
}
}
rule("PLAYER: Out of bounds")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.VECTOR_Arena_Center != Null;
Distance Between(Event Player, Global.VECTOR_Arena_Center) > Global.REAL_Arena_Sphere_Radius;
}
actions
{
Apply Impulse(Event Player, Direction Towards(Event Player, Global.VECTOR_Arena_Center), 5, To World, Cancel Contrary Motion);
"Do a small amount of damage so that if a player gets stuck he'll eventually respawn."
Set Player Health(Event Player, Health(Event Player) - 0.450);
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
}
}
rule("PLAYER: Vaping")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Using Ability 2(Event Player) == True;
}
actions
{
Set Status(Event Player, Null, Phased Out, 1);
}
}
rule("PLAYER: Uses jump pad")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.VECTOR_Jump_Pad) <= 1.500;
Global.VECTOR_Jump_Pad != Null;
Is Jumping(Event Player) == True;
Distance Between(Event Player, Global.VECTOR_Jump_Pad) <= 1.500;
}
actions
{
Set Status(Event Player, Null, Rooted, 2);
disabled Set Status(Event Player, Null, Stunned, 0.100);
Start Forcing Player Position(Event Player, Event Player, False);
Wait(0.160, Ignore Condition);
Stop Forcing Player Position(Event Player);
Apply Impulse(Event Player, Vector(0, 1, 0), 15, To Player, Incorporate Contrary Motion);
disabled Start Forcing Player Position(Event Player, Event Player, False);
}
}
rule("PLAYER: Walks into barrier")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Filtered Array(Global.VECTORS_Barriers, Distance Between(Current Array Element, Position Of(Event Player)) <= 3) != Empty Array;
}
actions
{
Apply Impulse(Event Player, Direction Towards(First Of(Filtered Array(Global.VECTORS_Barriers, Distance Between(
Current Array Element, Position Of(Event Player)) <= 3)), Position Of(Event Player)), 5, To World, Cancel Contrary Motion);
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
}
}
rule("PLAYER: Dies")
{
event
{
Player Died;
All;
All;
}
actions
{
Respawn(Event Player);
Wait(0.250, Ignore Condition);
Teleport(Event Player, Global.VECTOR_Spawn);
}
}
rule("PLAYER: Tries to hook through barrier")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Using Ability 1(Event Player) == True;
"Attempt to detect whether the player throws hook at another player through a barrier effect. Not sure how reliable this will be, but it seems to be somewhat effective."
Is True For Any(Global.VECTORS_Barriers, Distance Between(Current Array Element, Ray Cast Hit Position(Eye Position(Event Player),
Eye Position(Event Player) + Facing Direction Of(Event Player) * 10, All Players(All Teams), Event Player, True)) <= 3)
== True;
}
actions
{
disabled Small Message(Host Player, Custom String("{0} threw hook through barrier", Event Player));
"Freeze the hook-throwing player to prevent the hooked player from being pulled through the barrier. Probably not 100% reliable, but seems to work fairly well."
Set Status(Event Player, Null, Frozen, 1);
}
}