mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-06-08 21:44:35 +02:00
AoE rewrite and bug fixes
Rewrote aoe checks for cone and line aoes and added minimum distance values Added height checks for commands Fixed combo effects repeating for every target hit by AoE attacks Fixed teleport sometimes not raising (I think) Fixed gear checks in some command scripts
This commit is contained in:
parent
8c5375f609
commit
cf30eef39e
34 changed files with 483 additions and 330 deletions
|
@ -107,14 +107,14 @@ function onEventStarted(player, actor, triggerName, isTeleport)
|
|||
if (destination ~= nil) then
|
||||
randoPos = getRandomPointInBand(destination[2], destination[4], 3, 5);
|
||||
rotation = getAngleFacing(randoPos.x, randoPos.y, destination[2], destination[4]);
|
||||
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
|
||||
|
||||
--bandaid fix for returning while dead, missing things like weakness and the heal number
|
||||
if (player:GetHP() == 0) then
|
||||
player:SetHP(player.GetMaxHP());
|
||||
player:ChangeState(0);
|
||||
player:PlayAnimation(0x01000066);
|
||||
end
|
||||
GetWorldManager():DoZoneChange(player, destination[1], nil, 0, 2, randoPos.x, destination[3], randoPos.y, rotation);
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,7 +11,7 @@ end;
|
|||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--8032701: Fighter's Gauntlets: Reduces Collusion cooldown by 10 seconds
|
||||
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8032701 then
|
||||
if caster.HasItemEquippedInSlot(8032701, 13) then
|
||||
skill.recastTimeMs = skill.recastTimeMs - 10000;
|
||||
end
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
|
|||
--This is for the "Cover" effect the caster receives.
|
||||
local coverTier = 1
|
||||
--8032701: Gallant Surcoat: Enhances Cover
|
||||
if caster.GetEquipment().GetItemAtSlot(10).itemId == 8032701 then
|
||||
if caster.HasItemEquippedInSlot(8032701, 10) then
|
||||
coverTier = 2;
|
||||
end
|
||||
|
||||
|
|
|
@ -9,5 +9,9 @@ function onAbilityStart(caster, target, skill)
|
|||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
action.amount = skill.basePotency;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
action.DoAction(caster, target, skill, actionContainer);
|
||||
end;
|
|
@ -11,7 +11,7 @@ end;
|
|||
|
||||
function onSkillFinish(caster, target, skill, action, actionContainer)
|
||||
--8051401: Gallant Cuisses
|
||||
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8051401 then
|
||||
if caster.HasItemEquippedInSlot(8051401, 12) then
|
||||
ability.statusTier = 2;
|
||||
end
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ function onAbilityStart(caster, target, ability)
|
|||
local magnitude = 100;
|
||||
|
||||
--8032704: Drachen Mail
|
||||
if caster.GetEquipment().GetItemAtSlot(10).itemId == 8032704 then
|
||||
if caster.HasItemEquippedInSlot(8032704, 10) then
|
||||
magnitude = 120;
|
||||
end
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ end;
|
|||
function onAbilityStart(caster, target, ability)
|
||||
|
||||
--8032703: Fighter's Cuirass: Enhances Vengeance
|
||||
if caster.GetEquipment().GetItemAtSlot(13).itemId == 8032703 then
|
||||
if caster.HasItemEquippedInSlot(8032703, 10) then
|
||||
skill.statusTier = 2;
|
||||
end
|
||||
|
||||
|
|
18
data/scripts/commands/gm/setmod.lua
Normal file
18
data/scripts/commands/gm/setmod.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "ss",
|
||||
description =
|
||||
[[
|
||||
Sets a modifier of player
|
||||
!setmod <modId> <modVal> |
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, modId, modVal)
|
||||
local sender = "[setmod] ";
|
||||
local mod = tonumber(modId)
|
||||
local val = tonumber(modVal)
|
||||
player:SetMod(mod, val);
|
||||
end;
|
|
@ -14,14 +14,11 @@ 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
|
||||
|
||||
local s = tonumber(state);
|
||||
local actor = GetWorldManager():GetActorInWorld(player.currentTarget) or nil;
|
||||
if player and actor then
|
||||
actor:ChangeState(s);
|
||||
wait(0.8);
|
||||
player:SendMessage(0x20, "", "state: "..s);
|
||||
end;
|
||||
end;
|
|
@ -14,8 +14,7 @@ function onMagicStart(caster, target, skill)
|
|||
--8032705: Choral Shirt: Enhances Ballad of Magi
|
||||
--With Choral Shirt, Ballad gives 26 mp a tick. It could be a flat 6 or multiply by 1.3
|
||||
--Because minuet seemed like a normal addition I'm assuming this is too
|
||||
local shirt = caster.GetEquipment().GetItemAtSlot(10);
|
||||
if shirt and shirt.itemId == 8032705 then
|
||||
if caster.HasItemEquippedInSlot(8032705, 10) then
|
||||
mpPerTick = mpPerTick + 6;
|
||||
end
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
|
|||
action.amount = skill.basePotency;
|
||||
|
||||
--8071401: Gallant Gauntlets: Enhances Holy Succor
|
||||
if caster.GetEquipment().GetItemAtSlot(13).itemId == 8071401 then
|
||||
if caster.HasItemEquippedInSlot(8071401, 13) then
|
||||
action.amount = action.amount * 1.10;
|
||||
end
|
||||
|
||||
|
|
|
@ -14,8 +14,7 @@ function onMagicStart(caster, target, skill)
|
|||
--8071405: Choral Ringbands: Enhances Minuet of Rigor
|
||||
--With Choral Tights, Minuet gives 60 ACC/MACC at 50. Unsure what it is at lower levels (ie if it's a flat added 25 MP or a multiplier)
|
||||
--Assuming it's a flat 25 because that makes more sense than multiplying by 1.714
|
||||
local gloves = caster.GetEquipment().GetItemAtSlot(13);
|
||||
if gloves and gloves.itemId == 8071405 then
|
||||
if caster.HasItemEquippedInSlot(8071405, 13) then
|
||||
acc = acc + 25;
|
||||
end
|
||||
|
||||
|
|
|
@ -12,8 +12,7 @@ function onMagicStart(caster, target, skill)
|
|||
local tpPerTick = 50;
|
||||
|
||||
--8051405: Choral Tights: Enhances Paeon Of War
|
||||
local pants = caster.GetEquipment().GetItemAtSlot(12);
|
||||
if pants and pants.itemId == 8051405 then
|
||||
if caster.HasItemEquippedInSlot(8051405, 12) then
|
||||
tpPerTick = 60;
|
||||
end
|
||||
|
||||
|
|
|
@ -17,7 +17,8 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
|
|||
local slope = 0.625;
|
||||
local intercept = -110;
|
||||
|
||||
if caster.GetEquipment().GetItemAtSlot(14).itemId == 8051406 then
|
||||
--8051406: Healer's Culottes: Enhances Regen
|
||||
if caster.HasItemEquippedInSlot(8051406, 14) then
|
||||
--I don't know if the numbers in that thread are completely correct because the AF Regen table has 3 1555s in a row.
|
||||
--If we assume that AF boots multiply both static parts of the regenTick equation by 1.25, we get a decently close match to actual numbers
|
||||
slope = slope * 1.25;
|
||||
|
@ -26,7 +27,6 @@ function onSkillFinish(caster, target, skill, action, actionContainer)
|
|||
|
||||
local regenTick = (slope * caster.GetMod(modifiersGlobal.MagicEnhancePotency)) + intercept) + 1;
|
||||
|
||||
|
||||
spell.statusMagnitude = regenTick;
|
||||
|
||||
--DoAction handles rates, buffs, dealing damage
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
Loading…
Add table
Add a link
Reference in a new issue