Combat additions

Added formulas for base EXP gain and chain experience
Added basic scripts for most player abilities and effects
Added stat gains for some abilities
Changed status flags
Fixed bug with player death
Fixed bug where auto attacks didnt work when not locked on
Added traits
This commit is contained in:
yogurt 2018-04-18 16:06:41 -05:00
parent b8d6a943aa
commit c5ce2ec771
239 changed files with 5125 additions and 1237 deletions

View file

@ -0,0 +1,29 @@
require("global");
properties = {
permissions = 0,
parameters = "sssss",
description =
[[
Adds experience <qty> to player or <targetname>.
!giveexp <qty> |
!giveexp <qty> <targetname> |
]],
}
function onTrigger(player, argc, commandId, animationId, textId, effectId, amount)
local sender = "[battleaction] ";
if player then
cid = tonumber(commandId) or 0;
aid = tonumber(animationId) or 0;
tid = tonumber(textId) or 0;
print(effectId)
eid = tonumber(effectId) or 0;
amt = tonumber(amount) or 0;
player:DoBattleActionAnimation(cid, aid, tid, eid, amt);
else
print(sender.."unable to add experience, ensure player name is valid.");
end;
end;

View file

@ -31,4 +31,5 @@ function onTrigger(player, argc, slot, wId, eId, vId, cId)
else
player:SendMessage(messageID, sender, "No parameters sent! Usage: "..properties.description);
end;
end;

View file

@ -0,0 +1,24 @@
require("global");
properties = {
permissions = 0,
parameters = "s",
description =
[[
Changes appearance for equipment with given parameters.
!graphic <slot> <wID> <eID> <vID> <vID>
]],
}
function onTrigger(player, argc, size)
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[setappearance] ";
s = tonumber(size) or 0;
if player and player.target then
player.target.appearanceIds[0] = s;
player.target.zone.BroadcastPacketAroundActor(player.target, player.target.CreateAppearancePacket());
end;
end;

View file

@ -0,0 +1,27 @@
require("global");
properties = {
permissions = 0,
parameters = "s",
description =
[[
Changes appearance for equipment with given parameters.
!graphic <slot> <wID> <eID> <vID> <vID>
]],
}
function onTrigger(player, argc, state)
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
local sender = "[setstate] ";
max = tonumber(state) or 0;
for s = 0, max do
if player and player.target then
player.target:ChangeState(s);
wait(0.8);
player:SendMessage(0x20, "", "state: "..s);
end;
end
end;

View file

@ -1,4 +1,5 @@
require("global");
require("modifiers");
properties = {
permissions = 0,
@ -149,16 +150,18 @@ function onTrigger(player, argc, width, height, blockCount)
local zone = pos[4];
local w = tonumber(width) or 0;
local h = tonumber(height) or 0;
local blocks = tonumber(blockCount) or 0;
printf("%f %f %f", x, y, z);
--local x, y, z = player.GetPos();
for i = 0, blockCount do
for i = 0, blocks 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);
actor.ChangeNpcAppearance(1001149);
actor.SetMaxHP(10000);
actor.SetHP(10000);
actor.SetMod(modifiersGlobal.HasShield, 1);
end
--actor.FollowTarget(player, 3.2);
end
x = x + 500

View file

@ -2,20 +2,18 @@ require("global");
properties = {
permissions = 0,
parameters = "sss",
parameters = "",
description =
[[
Set movement speed for player. Enter no value to reset to default.
!speed <run> |
!speed <stop> <walk> <run> |
Get the amount of actors in this zone.
!zonecount
]]
}
function onTrigger(player, argc, stop, walk, run)
function onTrigger(player, argc)
local message = tostring(player.zone.GetAllActors().Count);
player.SendMessage(0x20, "", message);
player.SendMessage(0x20, "", message);
end