mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-22 12:47:46 +00:00

Added the combo and proc systems Added scripts for most weaponskill and spells as well as some abilities and status effects Added support for multihit attacks Added AbilityState for abilities Added hiteffects that change based on an attack's parameters Added positionals Changed how targeting works for battlecommands Fixed bug that occurred when moving or swapping hotbar commands Fixed bug that occurred when losing status effects
181 lines
No EOL
5.1 KiB
Lua
181 lines
No EOL
5.1 KiB
Lua
require("global");
|
|
|
|
properties = {
|
|
permissions = 0,
|
|
parameters = "ssss",
|
|
description =
|
|
[[
|
|
yolo
|
|
]],
|
|
}
|
|
|
|
local quests =
|
|
{
|
|
[111807] = { level = 25, weight = 4, rewardexp = 1080 },
|
|
[110868] = { level = 50, weight = 4, rewardexp = 4400 },
|
|
[111603] = { level = 22, weight = 5, rewardexp = 1100 },
|
|
[111602] = { level = 22, weight = 5, rewardexp = 1100 },
|
|
[111420] = { level = 45, weight = 5, rewardexp = 4450 },
|
|
[110811] = { level = 18, weight = 6, rewardexp = 780 },
|
|
[110814] = { level = 18, weight = 6, rewardexp = 780 },
|
|
[110707] = { level = 25, weight = 6, rewardexp = 1620 },
|
|
[110682] = { level = 34, weight = 6, rewardexp = 3180 },
|
|
[111202] = { level = 35, weight = 6, rewardexp = 3360 },
|
|
[111222] = { level = 35, weight = 6, rewardexp = 3360 },
|
|
[111302] = { level = 35, weight = 6, rewardexp = 3360 },
|
|
[111223] = { level = 40, weight = 6, rewardexp = 4260 },
|
|
[110819] = { level = 45, weight = 6, rewardexp = 5340 },
|
|
[111224] = { level = 45, weight = 6, rewardexp = 5340 },
|
|
[111225] = { level = 45, weight = 6, rewardexp = 5340 },
|
|
[110867] = { level = 45, weight = 6, rewardexp = 5340 },
|
|
[110869] = { level = 45, weight = 6, rewardexp = 5340 },
|
|
[110708] = { level = 45, weight = 6, rewardexp = 5340 },
|
|
[110627] = { level = 45, weight = 6, rewardexp = 5340 },
|
|
[111434] = { level = 50, weight = 6, rewardexp = 6600 },
|
|
[110850] = { level = 1, weight = 7, rewardexp = 40 },
|
|
[110851] = { level = 1, weight = 7, rewardexp = 40 },
|
|
[110841] = { level = 20, weight = 7, rewardexp = 1120 },
|
|
[110642] = { level = 20, weight = 7, rewardexp = 1120 },
|
|
[110840] = { level = 20, weight = 7, rewardexp = 1120 },
|
|
[110727] = { level = 21, weight = 7, rewardexp = 1401 },
|
|
[111221] = { level = 30, weight = 7, rewardexp = 2661 },
|
|
[111241] = { level = 30, weight = 7, rewardexp = 2661 },
|
|
[110687] = { level = 28, weight = 9, rewardexp = 2970 },
|
|
[110016] = { level = 34, weight = 50, rewardexp = 26500 },
|
|
[110017] = { level = 38, weight = 50, rewardexp = 32500 },
|
|
[110019] = { level = 46, weight = 50, rewardexp = 46000 }
|
|
};
|
|
|
|
local expTable = {
|
|
570, -- 1
|
|
700,
|
|
880,
|
|
1100,
|
|
1500,
|
|
1800,
|
|
2300,
|
|
3200,
|
|
4300,
|
|
5000, -- 10
|
|
5900,
|
|
6800,
|
|
7700,
|
|
8700,
|
|
9700,
|
|
11000,
|
|
12000,
|
|
13000,
|
|
15000,
|
|
16000, -- 20
|
|
20000,
|
|
22000,
|
|
23000,
|
|
25000,
|
|
27000,
|
|
29000,
|
|
31000,
|
|
33000,
|
|
35000,
|
|
38000, -- 30
|
|
45000,
|
|
47000,
|
|
50000,
|
|
53000,
|
|
56000,
|
|
59000,
|
|
62000,
|
|
65000,
|
|
68000,
|
|
71000, -- 40
|
|
74000,
|
|
78000,
|
|
81000,
|
|
85000,
|
|
89000,
|
|
92000,
|
|
96000,
|
|
100000,
|
|
100000,
|
|
110000 -- 50
|
|
};
|
|
|
|
local commandCost = {
|
|
["raise"] = 150,
|
|
["cure"] = 40,
|
|
["cura"] = 100,
|
|
["curaga"] = 150,
|
|
};
|
|
-- stone: (1, 9) (5, 12) (10, )
|
|
-- cure: (1, 5) (5, 6) (10, )
|
|
-- aero: (1, 9) (5, 12) (10, )
|
|
-- protect: (1, 9) (5, 12) (10, )
|
|
--[[
|
|
function onTrigger(player, argc, id, level, weight)
|
|
id = tonumber(id) or 111807;
|
|
level = tonumber(level) or quests[id].level;
|
|
weight = tonumber(weight) or quests[id].weight;
|
|
local messageId = MESSAGE_TYPE_SYSTEM_ERROR;
|
|
local sender = "yolo";
|
|
|
|
if id == 1 then
|
|
return
|
|
end
|
|
local message = calcSkillPoint(player, level, weight);
|
|
if player then
|
|
player.SendMessage(messageId, sender, string.format("calculated %s | expected %s", message, quests[id].rewardexp));
|
|
end;
|
|
printf("calculated %s | expected %s", message, quests[id].rewardexp);
|
|
end;
|
|
]]
|
|
|
|
function onTrigger(player, argc, width, height, blockCount)
|
|
local messageId = MESSAGE_TYPE_SYSTEM_ERROR;
|
|
local sender = "yolo";
|
|
|
|
if player then
|
|
if false then
|
|
local effectId = 223004;
|
|
|
|
player.statusEffects.RemoveStatusEffect(effectId);
|
|
player.statusEffects.AddStatusEffect(effectId, 1, 0, 5);
|
|
return;
|
|
end;
|
|
|
|
local pos = player:GetPos();
|
|
local x = tonumber(pos[0]);
|
|
local y = tonumber(pos[1]);
|
|
local z = tonumber(pos[2]);
|
|
local rot = tonumber(pos[3]);
|
|
local zone = pos[4];
|
|
local w = tonumber(width) or 0;
|
|
local h = tonumber(height) or 0;
|
|
printf("%f %f %f", x, y, z);
|
|
--local x, y, z = player.GetPos();
|
|
for i = 0, blockCount do
|
|
for i = 0, w do
|
|
for j = 0, h do
|
|
local actor = player.GetZone().SpawnActor(2104001, 'ass', x + (i - (w / 2) * 3), y, z + (j - (h / 2) * 3), rot, 0, 0, true);
|
|
actor.ChangeNpcAppearance(1001149)
|
|
actor.SetLevel(50);
|
|
end
|
|
--actor.FollowTarget(player, 3.2);
|
|
end
|
|
|
|
x = x + 500
|
|
end
|
|
return;
|
|
end
|
|
end;
|
|
|
|
function calculateCommandCost(player, skillName, level)
|
|
if skillName and level and commandCost[skillName] then
|
|
return math.ceil((8000 + (level - 70) * 500) * (commandCost[skillName] * 0.001));
|
|
end;
|
|
return 1;
|
|
end
|
|
|
|
function calcSkillPoint(player, lvl, weight)
|
|
weight = weight / 100
|
|
|
|
return math.ceil(expTable[lvl] * weight)
|
|
end |