warcraft-3-w3ts-utils 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/utils/abilities.d.ts +35 -0
  2. package/dist/utils/abilities.js +125 -0
  3. package/dist/utils/camera.d.ts +1 -0
  4. package/dist/utils/camera.js +37 -0
  5. package/dist/utils/chat-command.d.ts +12 -0
  6. package/dist/utils/chat-command.js +22 -0
  7. package/{src/utils/color.ts → dist/utils/color.d.ts} +109 -139
  8. package/dist/utils/color.js +141 -0
  9. package/dist/utils/item.d.ts +9 -0
  10. package/dist/utils/item.js +124 -0
  11. package/dist/utils/math.d.ts +13 -0
  12. package/dist/utils/math.js +17 -0
  13. package/dist/utils/minimapIcons.d.ts +13 -0
  14. package/dist/utils/minimapIcons.js +27 -0
  15. package/dist/utils/misc.d.ts +56 -0
  16. package/dist/utils/misc.js +175 -0
  17. package/dist/utils/physics.d.ts +52 -0
  18. package/dist/utils/physics.js +194 -0
  19. package/dist/utils/players.d.ts +50 -0
  20. package/dist/utils/players.js +189 -0
  21. package/dist/utils/point.d.ts +15 -0
  22. package/dist/utils/point.js +74 -0
  23. package/dist/utils/quests.d.ts +2 -0
  24. package/dist/utils/quests.js +30 -0
  25. package/dist/utils/textTag.d.ts +29 -0
  26. package/dist/utils/textTag.js +72 -0
  27. package/dist/utils/timer.d.ts +5 -0
  28. package/dist/utils/timer.js +16 -0
  29. package/dist/utils/units.d.ts +26 -0
  30. package/dist/utils/units.js +81 -0
  31. package/package.json +5 -1
  32. package/src/utils/abilities.ts +0 -161
  33. package/src/utils/camera.ts +0 -63
  34. package/src/utils/chat-command.ts +0 -22
  35. package/src/utils/item.ts +0 -155
  36. package/src/utils/math.ts +0 -14
  37. package/src/utils/minimapIcons.ts +0 -34
  38. package/src/utils/misc.ts +0 -179
  39. package/src/utils/physics.ts +0 -295
  40. package/src/utils/players.ts +0 -214
  41. package/src/utils/point.ts +0 -81
  42. package/src/utils/quests.ts +0 -38
  43. package/src/utils/textTag.ts +0 -80
  44. package/src/utils/timer.ts +0 -14
  45. package/src/utils/units.ts +0 -109
  46. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unitHasItem = unitHasItem;
4
+ exports.trig_itemRecipeSystem = trig_itemRecipeSystem;
5
+ const w3ts_1 = require("w3ts");
6
+ const misc_1 = require("./misc");
7
+ /**
8
+ * Checks if the unit has an item in their item slots
9
+ * @param u
10
+ * @param itemTypeId
11
+ * @returns
12
+ */
13
+ function unitHasItem(u, itemTypeId) {
14
+ for (let x = 0; x < 6; x++) {
15
+ if (u.getItemInSlot(x)?.typeId === itemTypeId) {
16
+ return true;
17
+ }
18
+ }
19
+ return false;
20
+ }
21
+ // Player should pick up recipes when needed. if they are missing items then the recipe cost is refunded
22
+ function trig_itemRecipeSystem() {
23
+ //takes a set of items
24
+ //unit or unit clicks
25
+ const t = w3ts_1.Trigger.create();
26
+ t.registerAnyUnitEvent(EVENT_PLAYER_UNIT_PICKUP_ITEM);
27
+ t.addAction(() => {
28
+ const recipeItem = w3ts_1.Item.fromEvent();
29
+ const unit = w3ts_1.Unit.fromHandle(GetTriggerUnit());
30
+ if (!unit || !recipeItem) {
31
+ return;
32
+ }
33
+ //for every item they have, if any has the word recipe, then we check to see if they have the items needed to satisfy the recipe
34
+ for (let x = 0; x < 6; x++) {
35
+ const currItem = unit?.getItemInSlot(x);
36
+ if (currItem?.name.toLowerCase().includes("recipe")) {
37
+ checkItemRecipeRequirements(unit, currItem);
38
+ }
39
+ }
40
+ });
41
+ }
42
+ function checkItemRecipeRequirements(unit, recipeItem) {
43
+ if (recipeItem.name.toLowerCase().includes("recipe")) {
44
+ let requiredItems = null;
45
+ let itemToCreateId = null;
46
+ for (const [key, value] of itemRecipesMap.entries()) {
47
+ if (key.recipeId === recipeItem.typeId) {
48
+ requiredItems = value;
49
+ itemToCreateId = key.itemId;
50
+ }
51
+ }
52
+ if (!requiredItems) {
53
+ print("Missing required items data for the recipe ", recipeItem.name);
54
+ return;
55
+ }
56
+ /**
57
+ * unique list of item types and their quantity and charges that we found on the unit
58
+ */
59
+ const matchingItems = [];
60
+ //Loop through the units item slots
61
+ for (let x = 0; x < 6; x++) {
62
+ const currItem = unit?.getItemInSlot(x);
63
+ //Check that the current item matches at least one of the item types in the requirement list
64
+ if (currItem && requiredItems.some((req) => req.itemTypeId === currItem.typeId)) {
65
+ const alreadyStoredItemIndex = matchingItems.findIndex((itemReq) => itemReq.itemTypeId === currItem.typeId);
66
+ //If we already came across this item in the unit inventory then increment the quantity
67
+ if (alreadyStoredItemIndex && matchingItems[alreadyStoredItemIndex]) {
68
+ matchingItems[alreadyStoredItemIndex].quantity++;
69
+ }
70
+ //otherwise it is our first match with this item type, so add it to our array of matching items
71
+ else {
72
+ matchingItems.push({ itemTypeId: currItem.typeId, quantity: 1, charges: 0 });
73
+ }
74
+ }
75
+ }
76
+ //Check that every item required is found in the units inventory satisfies the quantity requirement for the recipe
77
+ const satisfiesRecipe = requiredItems.every((reqItemData) => {
78
+ const matching = matchingItems?.find((matchingItemData) => matchingItemData.itemTypeId === reqItemData.itemTypeId);
79
+ if (matching) {
80
+ return matching.quantity >= reqItemData.quantity;
81
+ }
82
+ return false;
83
+ }) && matchingItems.length > 0;
84
+ if (!itemToCreateId) {
85
+ print("Missing the item type id of the item to create for this recipe: ", recipeItem.name);
86
+ }
87
+ //destroys more items than it needds to
88
+ if (satisfiesRecipe && itemToCreateId) {
89
+ //add the item
90
+ requiredItems.forEach((req) => {
91
+ for (let x = 0; x < req.quantity; x++) {
92
+ for (let x = 0; x < 6; x++) {
93
+ const currItem = unit?.getItemInSlot(x);
94
+ if (currItem?.typeId === req.itemTypeId) {
95
+ currItem?.destroy();
96
+ break;
97
+ }
98
+ }
99
+ }
100
+ });
101
+ recipeItem.destroy();
102
+ unit.addItemById(itemToCreateId);
103
+ (0, misc_1.useTempEffect)(w3ts_1.Effect.create("Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl", unit.x, unit.y));
104
+ const clap = w3ts_1.Effect.create("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl", unit.x, unit.y);
105
+ clap?.setScaleMatrix(0.5, 0.5, 0.5);
106
+ (0, misc_1.useTempEffect)(clap);
107
+ }
108
+ if (!satisfiesRecipe) {
109
+ //refund the gold
110
+ (0, misc_1.notifyPlayer)(`Missing recipe requirements for: ${recipeItem.name}.`);
111
+ }
112
+ //use if or rf to store item gold cost in the world editor
113
+ }
114
+ }
115
+ const itemRecipesMap = new Map([
116
+ // [
117
+ // { recipeId: ITEMS.recipe_blinkTreads, itemId: ITEMS.blinkTreads },
118
+ // [
119
+ // { itemTypeId: ITEMS.bootsOfSpeed, quantity: 1, charges: 0 }, //
120
+ // { itemTypeId: ITEMS.blinkDagger, quantity: 1, charges: 0 }, //
121
+ // ],
122
+ // ],
123
+ ]);
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0Esa0NBUUM7QUFHRCxzREFzQkM7QUExQ0QsK0JBQW1EO0FBQ25ELGlDQUFxRDtBQUVyRDs7Ozs7R0FLRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxDQUFPLEVBQUUsVUFBa0I7SUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQsd0dBQXdHO0FBQ3hHLFNBQWdCLHFCQUFxQjtJQUNqQyxzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLE1BQU0sQ0FBQyxHQUFHLGNBQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUUzQixDQUFDLENBQUMsb0JBQW9CLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUN0RCxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLE1BQU0sVUFBVSxHQUFHLFdBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxXQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDWCxDQUFDO1FBRUQsZ0lBQWdJO1FBQ2hJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJ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
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @deprecated
3
+ * @param a
4
+ * @param b
5
+ * @returns
6
+ */
7
+ export declare function distanceBetweenCoords(a: {
8
+ x: number;
9
+ y: number;
10
+ }, b: {
11
+ x: number;
12
+ y: number;
13
+ }): number;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.distanceBetweenCoords = distanceBetweenCoords;
4
+ /**
5
+ * @deprecated
6
+ * @param a
7
+ * @param b
8
+ * @returns
9
+ */
10
+ function distanceBetweenCoords(a, b) {
11
+ const deltaX = a.x - b.x;
12
+ const deltaY = a.y - b.y;
13
+ const squaredDist = Math.pow(deltaX, 2) + Math.pow(deltaY, 2);
14
+ const dist = Math.sqrt(squaredDist);
15
+ return dist;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tYXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsc0RBT0M7QUFiRDs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLENBQTJCLEVBQUUsQ0FBMkI7SUFDMUYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMifQ==
@@ -0,0 +1,13 @@
1
+ export type MINIMAP_ICONS = "UI\\Minimap\\MiniMap-ControlPoint.mdl" | "UI\\Minimap\\MiniMap-QuestGiver.mdl" | "UI\\Minimap\\Minimap-QuestObjectiveBonus.mdl" | "UI\\Minimap\\Minimap-QuestObjectivePrimary.mdl" | "UI\\Minimap\\Minimap-QuestTurnIn.mdl" | "UI\\Minimap\\MiniMap-Hero.mdl" | "UI\\Minimap\\Minimap-Ping.mdl" | "UI\\Minimap\\MiniMap-Item.mdl" | "UI\\Minimap\\MiniMap-NeutralBuilding.mdl";
2
+ export declare enum MinimapIconPath {
3
+ controlPoint = "UI\\Minimap\\MiniMap-ControlPoint.mdl",
4
+ questGiver = "UI\\Minimap\\MiniMap-QuestGiver.mdl",
5
+ questObjectiveBonus = "UI\\Minimap\\Minimap-QuestObjectiveBonus.mdl",
6
+ questObjectivePrimary = "UI\\Minimap\\Minimap-QuestObjectivePrimary.mdl",
7
+ questTurnIn = "UI\\Minimap\\Minimap-QuestTurnIn.mdl",
8
+ hero = "UI\\Minimap\\MiniMap-Hero.mdl",
9
+ item = "UI\\Minimap\\MiniMap-Item.mdl",
10
+ neutralBuilding = "UI\\Minimap\\MiniMap-NeutralBuilding.mdl",
11
+ ping = "UI\\Minimap\\Minimap-Ping.mdl"
12
+ }
13
+ export declare const minimapIconPathsSet: Set<MINIMAP_ICONS>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.minimapIconPathsSet = exports.MinimapIconPath = void 0;
4
+ var MinimapIconPath;
5
+ (function (MinimapIconPath) {
6
+ MinimapIconPath["controlPoint"] = "UI\\Minimap\\MiniMap-ControlPoint.mdl";
7
+ MinimapIconPath["questGiver"] = "UI\\Minimap\\MiniMap-QuestGiver.mdl";
8
+ MinimapIconPath["questObjectiveBonus"] = "UI\\Minimap\\Minimap-QuestObjectiveBonus.mdl";
9
+ MinimapIconPath["questObjectivePrimary"] = "UI\\Minimap\\Minimap-QuestObjectivePrimary.mdl";
10
+ MinimapIconPath["questTurnIn"] = "UI\\Minimap\\Minimap-QuestTurnIn.mdl";
11
+ MinimapIconPath["hero"] = "UI\\Minimap\\MiniMap-Hero.mdl";
12
+ MinimapIconPath["item"] = "UI\\Minimap\\MiniMap-Item.mdl";
13
+ MinimapIconPath["neutralBuilding"] = "UI\\Minimap\\MiniMap-NeutralBuilding.mdl";
14
+ MinimapIconPath["ping"] = "UI\\Minimap\\Minimap-Ping.mdl";
15
+ })(MinimapIconPath || (exports.MinimapIconPath = MinimapIconPath = {}));
16
+ exports.minimapIconPathsSet = new Set([
17
+ "UI\\Minimap\\MiniMap-ControlPoint.mdl",
18
+ "UI\\Minimap\\MiniMap-Hero.mdl",
19
+ "UI\\Minimap\\MiniMap-Item.mdl",
20
+ "UI\\Minimap\\MiniMap-NeutralBuilding.mdl",
21
+ "UI\\Minimap\\MiniMap-QuestGiver.mdl",
22
+ "UI\\Minimap\\Minimap-Ping.mdl",
23
+ "UI\\Minimap\\Minimap-QuestObjectiveBonus.mdl",
24
+ "UI\\Minimap\\Minimap-QuestObjectivePrimary.mdl",
25
+ "UI\\Minimap\\Minimap-QuestTurnIn.mdl",
26
+ ]);
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hcEljb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21pbmltYXBJY29ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSxJQUFZLGVBVVg7QUFWRCxXQUFZLGVBQWU7SUFDdkIseUVBQXNELENBQUE7SUFDdEQscUVBQWtELENBQUE7SUFDbEQsdUZBQW9FLENBQUE7SUFDcEUsMkZBQXdFLENBQUE7SUFDeEUsdUVBQW9ELENBQUE7SUFDcEQseURBQXNDLENBQUE7SUFDdEMseURBQXNDLENBQUE7SUFDdEMsK0VBQTRELENBQUE7SUFDNUQseURBQXNDLENBQUE7QUFDMUMsQ0FBQyxFQVZXLGVBQWUsK0JBQWYsZUFBZSxRQVUxQjtBQUVZLFFBQUEsbUJBQW1CLEdBQUcsSUFBSSxHQUFHLENBQWdCO0lBQ3RELHVDQUF1QztJQUN2QywrQkFBK0I7SUFDL0IsK0JBQStCO0lBQy9CLDBDQUEwQztJQUMxQyxxQ0FBcUM7SUFDckMsK0JBQStCO0lBQy9CLDhDQUE4QztJQUM5QyxnREFBZ0Q7SUFDaEQsc0NBQXNDO0NBQ3pDLENBQUMsQ0FBQyJ9
@@ -0,0 +1,56 @@
1
+ import { Effect, MapPlayer, Unit } from "w3ts";
2
+ type ProperColors = "goldenrod" | "magenta" | "green" | "yellow" | "red" | "player1-red" | "player2-blue" | "player3-teal" | "player4-purple" | "player5-yellow" | "player6-orange";
3
+ export declare function tColor(text: string | number, color?: ProperColors | null, hex?: PlayerColorHex | string | null, alpha?: string): string;
4
+ /**
5
+ * Colorizes the string according to the map player
6
+ */
7
+ export declare function ptColor(player: MapPlayer, text: string): string;
8
+ export declare enum PlayerColorHex {
9
+ Red = "ff0303",
10
+ Blue = "0042ff",
11
+ Teal = "1be7ba",
12
+ Purple = "550081",
13
+ Yellow = "fefc00",
14
+ Orange = "fe890d",
15
+ Green = "21bf00",
16
+ Pink = "e45caf",
17
+ Gray = "939596",
18
+ LightBlue = "7ebff1",
19
+ DarkGreen = "106247",
20
+ Brown = "4f2b05",
21
+ Maroon = "9c0000",
22
+ Navy = "0000c3",
23
+ Turquoise = "00ebff",
24
+ Violet = "bd00ff",
25
+ Wheat = "ecce87",
26
+ Peach = "f7a58b",
27
+ Mint = "bfff81",
28
+ Lavender = "dbb8eb",
29
+ Coal = "4f5055",
30
+ Snow = "ecf0ff",
31
+ Emerald = "00781e",
32
+ Peanut = "a56f34",
33
+ Black = "2e2d2e"
34
+ }
35
+ /**
36
+ * Standardized format for notifying player of events.
37
+ */
38
+ export declare function notifyPlayer(msg: string): void;
39
+ export declare function displayError(msg: string): void;
40
+ /**
41
+ * Returns degrees or radians?
42
+ */
43
+ export declare function getRelativeAngleToUnit(unit: Unit, relativeUnit: Unit): number;
44
+ /**
45
+ * Manages state of effects in this context so you don't have to!
46
+ */
47
+ export declare function useEffects(): {
48
+ addEffect: (effect: Effect | undefined) => void;
49
+ /**
50
+ * @returns reference to effects array
51
+ */
52
+ getEffects: () => Effect[];
53
+ destroyAllEffects: () => void;
54
+ };
55
+ export declare function useTempEffect(effect: Effect | undefined, duration?: number): void;
56
+ export {};
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlayerColorHex = void 0;
4
+ exports.tColor = tColor;
5
+ exports.ptColor = ptColor;
6
+ exports.notifyPlayer = notifyPlayer;
7
+ exports.displayError = displayError;
8
+ exports.getRelativeAngleToUnit = getRelativeAngleToUnit;
9
+ exports.useEffects = useEffects;
10
+ exports.useTempEffect = useTempEffect;
11
+ const w3ts_1 = require("w3ts");
12
+ function tColor(text, color, hex, alpha) {
13
+ if (color) {
14
+ return `|cff${properColorHexes.get(color) || "FFFFFF"}${alpha || ""}${text}|r`;
15
+ }
16
+ else if (hex) {
17
+ return `|cff${hex}${alpha || ""}${text}|r`;
18
+ }
19
+ return String(text);
20
+ }
21
+ /**
22
+ * Colorizes the string according to the map player
23
+ */
24
+ function ptColor(player, text) {
25
+ return `${tColor(text, undefined, playerColors[player.id])}`;
26
+ }
27
+ const properColorHexes = new Map([
28
+ ["goldenrod", "ffcc00"],
29
+ ["green", "00FF00"],
30
+ ["yellow", "FFFF00"],
31
+ ["red", "FF0000"],
32
+ ["magenta", "FF00FF"],
33
+ ["player1-red", "ff0303"],
34
+ ["player2-blue", "0042ff"],
35
+ ["player3-teal", "1ce6b9"],
36
+ ["player4-purple", "540081"],
37
+ ["player5-yellow", "fffc00"],
38
+ ["player6-orange", "fe8a0e"],
39
+ ]);
40
+ // enum PlayerColors {
41
+ // Player1 = "ff0303", // Red
42
+ // Player2 = "0042ff", // Blue
43
+ // Player3 = "1be7ba", // Teal
44
+ // Player4 = "550081", // Purple
45
+ // Player5 = "fefc00", // Yellow
46
+ // Player6 = "fe890d", // Orange
47
+ // Player7 = "21bf00", // Green
48
+ // Player8 = "e45caf", // Pink
49
+ // Player9 = "939596", // Gray
50
+ // Player10 = "7ebff1", // Light Blue
51
+ // Player11 = "106247", // Dark Green
52
+ // Player12 = "4f2b05", // Brown
53
+ // Player13 = "9c0000", // Maroon
54
+ // Player14 = "0000c3", // Navy
55
+ // Player15 = "00ebff", // Turquoise
56
+ // Player16 = "bd00ff", // Violet
57
+ // Player17 = "ecce87", // Wheat
58
+ // Player18 = "f7a58b", // Peach
59
+ // Player19 = "bfff81", // Mint
60
+ // Player20 = "dbb8eb", // Lavender
61
+ // Player21 = "4f5055", // Coal
62
+ // Player22 = "ecf0ff", // Snow
63
+ // Player23 = "00781e", // Emerald
64
+ // Player24 = "a56f34", // Peanut
65
+ // PlayerNeutral = "2e2d2e", // Black
66
+ // }
67
+ var PlayerColorHex;
68
+ (function (PlayerColorHex) {
69
+ PlayerColorHex["Red"] = "ff0303";
70
+ PlayerColorHex["Blue"] = "0042ff";
71
+ PlayerColorHex["Teal"] = "1be7ba";
72
+ PlayerColorHex["Purple"] = "550081";
73
+ PlayerColorHex["Yellow"] = "fefc00";
74
+ PlayerColorHex["Orange"] = "fe890d";
75
+ PlayerColorHex["Green"] = "21bf00";
76
+ PlayerColorHex["Pink"] = "e45caf";
77
+ PlayerColorHex["Gray"] = "939596";
78
+ PlayerColorHex["LightBlue"] = "7ebff1";
79
+ PlayerColorHex["DarkGreen"] = "106247";
80
+ PlayerColorHex["Brown"] = "4f2b05";
81
+ PlayerColorHex["Maroon"] = "9c0000";
82
+ PlayerColorHex["Navy"] = "0000c3";
83
+ PlayerColorHex["Turquoise"] = "00ebff";
84
+ PlayerColorHex["Violet"] = "bd00ff";
85
+ PlayerColorHex["Wheat"] = "ecce87";
86
+ PlayerColorHex["Peach"] = "f7a58b";
87
+ PlayerColorHex["Mint"] = "bfff81";
88
+ PlayerColorHex["Lavender"] = "dbb8eb";
89
+ PlayerColorHex["Coal"] = "4f5055";
90
+ PlayerColorHex["Snow"] = "ecf0ff";
91
+ PlayerColorHex["Emerald"] = "00781e";
92
+ PlayerColorHex["Peanut"] = "a56f34";
93
+ PlayerColorHex["Black"] = "2e2d2e";
94
+ })(PlayerColorHex || (exports.PlayerColorHex = PlayerColorHex = {}));
95
+ const playerColors = [
96
+ "ff0303", // Player 1: Red
97
+ "0042ff", // Player 2: Blue
98
+ "1be7ba", // Player 3: Teal
99
+ "550081", // Player 4: Purple
100
+ "fefc00", // Player 5: Yellow
101
+ "fe890d", // Player 6: Orange
102
+ "21bf00", // Player 7: Green
103
+ "e45caf", // Player 8: Pink
104
+ "939596", // Player 9: Gray
105
+ "7ebff1", // Player 10: Light Blue
106
+ "106247", // Player 11: Dark Green
107
+ "4f2b05", // Player 12: Brown
108
+ "9c0000", // Player 13: Maroon
109
+ "0000c3", // Player 14: Navy
110
+ "00ebff", // Player 15: Turquoise
111
+ "bd00ff", // Player 16: Violet
112
+ "ecce87", // Player 17: Wheat
113
+ "f7a58b", // Player 18: Peach
114
+ "bfff81", // Player 19: Mint
115
+ "dbb8eb", // Player 20: Lavender
116
+ "4f5055", // Player 21: Coal
117
+ "ecf0ff", // Player 22: Snow
118
+ "00781e", // Player 23: Emerald
119
+ "a56f34", // Player 24: Peanut
120
+ "2e2d2e", // Player Neutral: Black
121
+ ];
122
+ /**
123
+ * Standardized format for notifying player of events.
124
+ */
125
+ function notifyPlayer(msg) {
126
+ print(`${tColor("!", "goldenrod")} - ${msg}`);
127
+ }
128
+ function displayError(msg) {
129
+ print(`[ ${tColor("WARNING", "red")} ]: ${msg}`);
130
+ }
131
+ /**
132
+ * Returns degrees or radians?
133
+ */
134
+ function getRelativeAngleToUnit(unit, relativeUnit) {
135
+ const locA = GetUnitLoc(unit.handle);
136
+ const locB = GetUnitLoc(relativeUnit.handle);
137
+ const angle = AngleBetweenPoints(locA, locB);
138
+ RemoveLocation(locA);
139
+ RemoveLocation(locB);
140
+ return angle;
141
+ }
142
+ /**
143
+ * Manages state of effects in this context so you don't have to!
144
+ */
145
+ function useEffects() {
146
+ const effects = [];
147
+ return {
148
+ addEffect: (effect) => {
149
+ if (effect) {
150
+ effects.push(effect);
151
+ }
152
+ },
153
+ /**
154
+ * @returns reference to effects array
155
+ */
156
+ getEffects: () => {
157
+ return effects;
158
+ },
159
+ destroyAllEffects: () => {
160
+ effects.forEach((e) => {
161
+ e.destroy();
162
+ });
163
+ },
164
+ };
165
+ }
166
+ function useTempEffect(effect, duration = 1.5) {
167
+ if (effect) {
168
+ const timer = w3ts_1.Timer.create();
169
+ timer.start(duration, false, () => {
170
+ effect.destroy();
171
+ timer.destroy();
172
+ });
173
+ }
174
+ }
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHdCQVFDO0FBS0QsMEJBRUM7QUFzR0Qsb0NBRUM7QUFFRCxvQ0FFQztBQUtELHdEQVNDO0FBS0QsZ0NBcUJDO0FBRUQsc0NBU0M7QUFsTEQsK0JBQXNEO0FBSXRELFNBQWdCLE1BQU0sQ0FBQyxJQUFxQixFQUFFLEtBQTJCLEVBQUUsR0FBb0MsRUFBRSxLQUFjO0lBQzNILElBQUksS0FBSyxFQUFFLENBQUM7UUFDUixPQUFPLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsR0FBRyxLQUFLLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ25GLENBQUM7U0FBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2IsT0FBTyxPQUFPLEdBQUcsR0FBRyxLQUFLLElBQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUMsTUFBaUIsRUFBRSxJQUFZO0lBQ25ELE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBdUI7SUFDbkQsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO0lBQ3ZCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQztJQUNuQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDcEIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ2pCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztJQUNyQixDQUFDLGFBQWEsRUFB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
@@ -0,0 +1,52 @@
1
+ import { Effect, Unit } from "w3ts";
2
+ interface ApplyForceConfig {
3
+ /**
4
+ * Default: 0
5
+ */
6
+ sustainedForceDuration?: number;
7
+ /**
8
+ * Default: -2400 units per second
9
+ */
10
+ frictionConstant?: number;
11
+ /**
12
+ * The unit will not phase through unpathable areas
13
+ */
14
+ obeyPathing?: boolean;
15
+ whileActive?: (currentSpeed?: number, timeElapsed?: number) => void;
16
+ onStart?: (currentSpeed?: number, timeElapsed?: number) => void;
17
+ onEnd?: (currentSpeed?: number, timeElapsed?: number) => void;
18
+ /**
19
+ *
20
+ */
21
+ targetSpeed?: number;
22
+ /**
23
+ * In seconds
24
+ */
25
+ accelerationTime?: number;
26
+ /**
27
+ * This will be used to decide if the unit the force is applied on is allowed to deviate from their current path.
28
+ */
29
+ strictPathing?: boolean;
30
+ animationIndexNumber?: number;
31
+ dummyUnitPlayerIndex: number;
32
+ dummyUnitFourCC: number;
33
+ }
34
+ /**
35
+ * @param angle degrees
36
+ * @param unit
37
+ * @param initialSpeed meters per second
38
+ * @param affectHeight determines whether or not to change unit height whilst force is applied
39
+ */
40
+ export declare function applyForce(angle: number, unit: Unit, initialSpeed: number, config: ApplyForceConfig): {
41
+ destroyForceEffect: (runOnEnd?: boolean) => void;
42
+ };
43
+ /**
44
+ * @param angle degrees
45
+ * @param effect
46
+ * @param initialSpeed meters per second
47
+ * @param affectHeight determines whether or not to change unit height whilst force is applied
48
+ */
49
+ export declare function applyForceForEffect(angle: number, effect: Effect, initialSpeed: number, config?: ApplyForceConfig): {
50
+ destroyForceEffect: () => void;
51
+ };
52
+ export {};