mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-05-20 08:26:59 -04:00
Combat changes and bug fixes
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
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
-- todo: add enums for status effects in global.lua
|
||||
require("global")
|
||||
require("battleutils")
|
||||
|
||||
--[[
|
||||
statId - see BattleTemp.cs
|
||||
modifier - Modifier.Intelligence, Modifier.Mind (see Modifier.cs)
|
||||
multiplier -
|
||||
]]
|
||||
function HandleHealingSkill(caster, target, skill, action, statId, modifierId, multiplier, baseAmount)
|
||||
potency = potency or 1.0;
|
||||
healAmount = baseAmount;
|
||||
|
||||
-- todo: shit based on mnd
|
||||
local mind = caster.GetMod(Modifier.Mind);
|
||||
end;
|
||||
|
||||
function HandleAttackSkill(caster, target, skill, action, statId, modifierId, multiplier, baseAmount)
|
||||
-- todo: actually handle this
|
||||
damage = baseAmount or math.random(1,10) * 10;
|
||||
|
||||
return damage;
|
||||
end;
|
||||
|
||||
function HandleStoneskin(caster, target, skill, action, statId, modifierId, damage)
|
||||
--[[
|
||||
if target.statusEffects.HasStatusEffect(StatusEffect.Stoneskin) then
|
||||
-- todo: damage reduction
|
||||
return true;
|
||||
end;
|
||||
]]
|
||||
return false;
|
||||
end;
|
||||
|
||||
--For abilities that inflict statuses, like aegis boon or taunt
|
||||
function onStatusAbilityFinish(caster, target, skill, action)
|
||||
action.battleActionType = BattleActionType.Status;
|
||||
action.CalcHitType(caster, target, skill);
|
||||
action.TryStatus(caster, target, skill, false);
|
||||
|
||||
return action.amount;
|
||||
end;
|
||||
|
||||
function onAttackAbilityFinish(caster, target, skill, action)
|
||||
action.battleActionType = BattleActionType.AttackPhysical;
|
||||
local damage = math.random(50, 150);
|
||||
action.amount = damage;
|
||||
action.CalcHitType(caster, target, skill);
|
||||
|
||||
return action.amount;
|
||||
end;
|
||||
|
||||
function onHealAbilityFinish(caster, target, skill, action)
|
||||
action.battleActionType = BattleActionType.Heal;
|
||||
local amount = math.random(150, 250);
|
||||
action.amount = amount;
|
||||
action.CalcHitType(caster, target, skill);
|
||||
action.TryStatus(caster, target, skill, true);
|
||||
return action.amount;
|
||||
end;
|
||||
@@ -34,23 +34,27 @@ function allyGlobal.onDespawn(ally)
|
||||
|
||||
end
|
||||
|
||||
--tryAggro serves the same purpose for now, keeping this around just in case
|
||||
function allyGlobal.HelpPlayers(ally, contentGroupCharas, pickRandomTarget)
|
||||
print("helpPlayers");
|
||||
if contentGroupCharas and not ally.IsEngaged() then
|
||||
print("contentGroup exists");
|
||||
for chara in contentGroupCharas do
|
||||
print("looping");
|
||||
if chara then
|
||||
-- probably a player, or another ally
|
||||
-- todo: queue support actions, heal, try pull hate off player etc
|
||||
if chara:IsPlayer() then
|
||||
if chara.IsPlayer() then
|
||||
print("chara is a player");
|
||||
-- do stuff
|
||||
if not ally.IsEngaged() then
|
||||
if chara.IsEngaged() then
|
||||
allyGlobal.EngageTarget(ally, chara.target, nil);
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif chara.IsMonster() and chara.IsEngaged() then
|
||||
if not ally.IsEngaged() then
|
||||
print("Engaging monster that is engaged");
|
||||
allyGlobal.EngageTarget(ally, chara, nil);
|
||||
break;
|
||||
end
|
||||
@@ -60,7 +64,6 @@ function allyGlobal.HelpPlayers(ally, contentGroupCharas, pickRandomTarget)
|
||||
end
|
||||
end
|
||||
|
||||
--Iterate over characters in contentGroup, if a player is in combat, assist them.
|
||||
function allyGlobal.tryAggro(ally, contentGroupCharas)
|
||||
local count = 0;
|
||||
if contentGroupCharas and not ally.IsEngaged() then
|
||||
@@ -76,14 +79,12 @@ function allyGlobal.tryAggro(ally, contentGroupCharas)
|
||||
break;
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
elseif contentGroupCharas[i].IsMonster() and contentGroupCharas[i].IsEngaged() then
|
||||
if not ally.IsEngaged() then
|
||||
print("Engaging monster that is engaged");
|
||||
allyGlobal.EngageTarget(ally, contentGroupCharas[i], nil);
|
||||
break;
|
||||
end]]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -109,6 +110,7 @@ function allyGlobal.EngageTarget(ally, target, contentGroupCharas)
|
||||
end
|
||||
end
|
||||
elseif target then
|
||||
print("Engaging");
|
||||
ally.Engage(target)
|
||||
ally.hateContainer.AddBaseHate(target);
|
||||
end
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
local initClassItems, initRaceItems;
|
||||
|
||||
function onBeginLogin(player)
|
||||
--New character, set the initial quest
|
||||
if (player:GetPlayTime(false) == 0) then
|
||||
initialTown = player:GetInitialTown();
|
||||
|
||||
if (initialTown == 1 and player:HasQuest(110001) == false) then
|
||||
player:AddQuest(110001);
|
||||
player:SetHomePoint(1280001);
|
||||
elseif (initialTown == 2 and player:HasQuest(110005) == false) then
|
||||
player:AddQuest(110005);
|
||||
player:SetHomePoint(1280061);
|
||||
elseif (initialTown == 3 and player:HasQuest(110009) == false) then
|
||||
player:AddQuest(110009);
|
||||
player:SetHomePoint(1280031);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--For Opening. Set Director and reset position incase d/c
|
||||
if (player:HasQuest(110001) == true and player:GetZoneID() == 193) then
|
||||
director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(true);
|
||||
player:SetLoginDirector(director);
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
|
||||
player.positionX = 0.016;
|
||||
player.positionY = 10.35;
|
||||
player.positionZ = -36.91;
|
||||
player.rotation = 0.025;
|
||||
player:GetQuest(110001):ClearQuestData();
|
||||
player:GetQuest(110001):ClearQuestFlags();
|
||||
elseif (player:HasQuest(110005) == true and player:GetZoneID() == 166) then
|
||||
director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
player:SetLoginDirector(director);
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
|
||||
player.positionX = 369.5434;
|
||||
player.positionY = 4.21;
|
||||
player.positionZ = -706.1074;
|
||||
player.rotation = -1.26721;
|
||||
player:GetQuest(110005):ClearQuestData();
|
||||
player:GetQuest(110005):ClearQuestFlags();
|
||||
elseif (player:HasQuest(110009) == true and player:GetZoneID() == 184) then
|
||||
--director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
--player:AddDirector(director);
|
||||
--director:StartDirector(false);
|
||||
--player:SetLoginDirector(director);
|
||||
--player:KickEvent(director, "noticeEvent", true);
|
||||
--
|
||||
player.positionX = 5.364327;
|
||||
player.positionY = 196.0;
|
||||
player.positionZ = 133.6561;
|
||||
player.rotation = -2.849384;
|
||||
player:GetQuest(110009):ClearQuestData();
|
||||
player:GetQuest(110009):ClearQuestFlags();
|
||||
end
|
||||
end
|
||||
|
||||
function onLogin(player)
|
||||
|
||||
if (player:GetPlayTime(false) == 0) then
|
||||
player:SendMessage(0x1D,"",">PlayTime == 0, new player!");
|
||||
|
||||
initClassItems(player);
|
||||
initRaceItems(player);
|
||||
|
||||
player:SavePlayTime();
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function initClassItems(player)
|
||||
|
||||
local slotTable;
|
||||
local invSlotTable;
|
||||
|
||||
--DoW
|
||||
if (player.charaWork.parameterSave.state_mainSkill[0] == 2) then --PUG
|
||||
player:GetInventory(0):AddItem({4020001, 8030701, 8050728, 8080601, 8090307});
|
||||
player:GetEquipment():SetEquipment({0, 10, 12, 14, 15},{0, 1, 2, 3, 4});
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 3) then --GLA
|
||||
player:GetInventory(0):AddItem({4030010, 8031120, 8050245, 8080601, 8090307});
|
||||
player:GetEquipment():SetEquipment({0, 10, 12, 14, 15},{0, 1, 2, 3, 4});
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 4) then --MRD
|
||||
player:GetInventory(0):AddItem({4040001, 8011001, 8050621, 8070346, 8090307});
|
||||
player:GetEquipment():SetEquipment({0, 8, 12, 13, 15},{0, 1, 2, 3, 4});
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 7) then --ARC
|
||||
player:GetInventory(0):AddItem({4070001, 8030601, 8050622, 8080601, 8090307});
|
||||
player:GetEquipment():SetEquipment({0, 10, 12, 14, 15},{0, 1, 2, 3, 4});
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 8) then --LNC
|
||||
player:GetInventory(0):AddItem({4080201, 8030801, 8051015, 8080501, 8090307});
|
||||
player:GetEquipment():SetEquipment({0, 10, 12, 14, 15},{0, 1, 2, 3, 4});
|
||||
--DoM
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 22) then --THM
|
||||
player:GetInventory(0):AddItem({5020001, 8030245, 8050346, 8080346, 8090208});
|
||||
player:GetEquipment():SetEquipment({0, 10, 12, 14, 15},{0, 1, 2, 3, 4});
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 23) then --CNJ
|
||||
player:GetInventory(0):AddItem({5030101, 8030445, 8050031, 8080246, 8090208});
|
||||
player:GetEquipment():SetEquipment({0, 10, 12, 14, 15},{0, 1, 2, 3, 4});
|
||||
|
||||
--DoH
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 29) then --
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 30) then --
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 31) then --
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 32) then --
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 33) then --
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 34) then --
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 35) then --
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 36) then --
|
||||
|
||||
--DoL
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 39) then --MIN
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 40) then --BTN
|
||||
elseif (player.charaWork.parameterSave.state_mainSkill[0] == 41) then --FSH
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function initRaceItems(player)
|
||||
|
||||
if (player.playerWork.tribe == 1) then --Hyur Midlander Male
|
||||
player:GetInventory(0):AddItem(8040001);
|
||||
player:GetInventory(0):AddItem(8060001);
|
||||
elseif (player.playerWork.tribe == 2) then --Hyur Midlander Female
|
||||
player:GetInventory(0):AddItem(8040002);
|
||||
player:GetInventory(0):AddItem(8060002);
|
||||
elseif (player.playerWork.tribe == 3) then --Hyur Highlander Male
|
||||
player:GetInventory(0):AddItem(8040003);
|
||||
player:GetInventory(0):AddItem(8060003);
|
||||
elseif (player.playerWork.tribe == 4) then --Elezen Wildwood Male
|
||||
player:GetInventory(0):AddItem(8040004);
|
||||
player:GetInventory(0):AddItem(8060004);
|
||||
elseif (player.playerWork.tribe == 5) then --Elezen Wildwood Female
|
||||
player:GetInventory(0):AddItem(8040006);
|
||||
player:GetInventory(0):AddItem(8060006);
|
||||
elseif (player.playerWork.tribe == 6) then --Elezen Duskwight Male
|
||||
player:GetInventory(0):AddItem(8040005);
|
||||
player:GetInventory(0):AddItem(8060005);
|
||||
elseif (player.playerWork.tribe == 7) then --Elezen Duskwight Female
|
||||
player:GetInventory(0):AddItem(8040007);
|
||||
player:GetInventory(0):AddItem(8060007);
|
||||
elseif (player.playerWork.tribe == 8) then --Lalafell Plainsfolk Male
|
||||
player:GetInventory(0):AddItem(8040008);
|
||||
player:GetInventory(0):AddItem(8060008);
|
||||
elseif (player.playerWork.tribe == 9) then --Lalafell Plainsfolk Female
|
||||
player:GetInventory(0):AddItem(8040010);
|
||||
player:GetInventory(0):AddItem(8060010);
|
||||
elseif (player.playerWork.tribe == 10) then --Lalafell Dunesfolk Male
|
||||
player:GetInventory(0):AddItem(8040009);
|
||||
player:GetInventory(0):AddItem(8060009);
|
||||
elseif (player.playerWork.tribe == 11) then --Lalafell Dunesfolk Female
|
||||
player:GetInventory(0):AddItem(8040011);
|
||||
player:GetInventory(0):AddItem(8060011);
|
||||
elseif (player.playerWork.tribe == 12) then --Miqo'te Seekers of the Sun
|
||||
player:GetInventory(0):AddItem(8040012);
|
||||
player:GetInventory(0):AddItem(8060012);
|
||||
elseif (player.playerWork.tribe == 13) then --Miqo'te Seekers of the Moon
|
||||
player:GetInventory(0):AddItem(8040013);
|
||||
player:GetInventory(0):AddItem(8060013);
|
||||
elseif (player.playerWork.tribe == 14) then --Roegadyn Sea Wolf
|
||||
player:GetInventory(0):AddItem(8040014);
|
||||
player:GetInventory(0):AddItem(8060014);
|
||||
elseif (player.playerWork.tribe == 15) then --Roegadyn Hellsguard
|
||||
player:GetInventory(0):AddItem(8040015);
|
||||
player:GetInventory(0):AddItem(8060015);
|
||||
end
|
||||
|
||||
player:GetEquipment():SetEquipment({9, 11},{5,6});
|
||||
|
||||
end
|
||||
@@ -0,0 +1,8 @@
|
||||
BattleActionType =
|
||||
{
|
||||
None = 0,
|
||||
AttackPhysical = 1,
|
||||
AttackMagic = 2,
|
||||
Heal = 3,
|
||||
Status = 4
|
||||
}
|
||||
@@ -14,14 +14,6 @@ local attackMagicHandlers = {
|
||||
}
|
||||
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
print(command.actorId)
|
||||
--Are they in active mode?
|
||||
if (player:GetState() != 2) then
|
||||
player:SendGameMessage(GetWorldMaster(), 32503, 0x20);
|
||||
player:endEvent();
|
||||
return;
|
||||
end
|
||||
|
||||
player.Ability(command.actorId, targetActor);
|
||||
player:endEvent();
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
require("global")
|
||||
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
require ("global")
|
||||
require ("utils")
|
||||
|
||||
--[[
|
||||
|
||||
AttackWeaponSkill Script
|
||||
|
||||
Finds the correct weaponskill subscript to fire when a weaponskill actor is activated.
|
||||
|
||||
--]]
|
||||
|
||||
local attackMagicHandlers = {
|
||||
|
||||
}
|
||||
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
player.Ability(command.actorId, targetActor);
|
||||
player:endEvent();
|
||||
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
player.Cast(command.actorId, targetActor);
|
||||
|
||||
player:endEvent();
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
player.Cast(command.actorId, targetActor);
|
||||
|
||||
player:endEvent();
|
||||
end
|
||||
@@ -0,0 +1,26 @@
|
||||
require ("global")
|
||||
require ("utils")
|
||||
|
||||
--[[
|
||||
|
||||
AttackWeaponSkill Script
|
||||
|
||||
Finds the correct weaponskill subscript to fire when a weaponskill actor is activated.
|
||||
|
||||
--]]
|
||||
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
|
||||
--Are they in active mode?
|
||||
if (player:GetState() != 2) then
|
||||
player:SendGameMessage(GetWorldMaster(), 32503, 0x20);
|
||||
player:endEvent();
|
||||
return;
|
||||
end
|
||||
|
||||
if not player.aiContainer.IsEngaged() then
|
||||
player.Engage(targetActor);
|
||||
end;
|
||||
player.WeaponSkill(command.actorId, targetActor);
|
||||
player:endEvent();
|
||||
end;
|
||||
@@ -0,0 +1,5 @@
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
player.Cast(command.actorId, targetActor);
|
||||
|
||||
player:endEvent();
|
||||
end
|
||||
@@ -61,7 +61,7 @@ function onEventStarted(player, equipAbilityWidget, triggername, slot, commandid
|
||||
player:SwapAbilities(oldSlot, slot + player.charaWork.commandBorder);
|
||||
else
|
||||
local tslot = slot + player.charaWork.commandBorder;
|
||||
player:EquipAbility(player.GetJob(), commandid, tslot, true);
|
||||
player:EquipAbility(player.GetCurrentClassOrJob(), commandid, tslot, true);
|
||||
end
|
||||
|
||||
--Unequip
|
||||
@@ -70,7 +70,7 @@ function onEventStarted(player, equipAbilityWidget, triggername, slot, commandid
|
||||
ability = worldManager.GetBattleCommand(commandid);
|
||||
--Is the ability a part of the player's current class?
|
||||
--This check isn't correct because of jobs having different ids
|
||||
local classId = player:GetJob();
|
||||
local classId = player:GetClass();
|
||||
local jobId = player:ConvertClassIdToJobId(classId);
|
||||
|
||||
if(ability.job == classId or ability.job == jobId) then
|
||||
|
||||
@@ -145,6 +145,12 @@ function equipItem(player, equipSlot, item)
|
||||
--Item Equipped message
|
||||
player:SendGameMessage(player, worldMaster, 30601, 0x20, equipSlot+1, item.itemId, item.quality, 0, 0, 1);
|
||||
|
||||
--Load gearset for new class and begin class change
|
||||
if (classId ~= nil) then
|
||||
loadGearset(player, classId);
|
||||
player:DoClassChange(classId);
|
||||
end
|
||||
|
||||
player:GetEquipment():Equip(equipSlot, item);
|
||||
|
||||
if (equipSlot == EQUIPSLOT_MAINHAND and gItem:IsNailWeapon() == false) then graphicSlot = GRAPHICSLOT_MAINHAND;
|
||||
@@ -170,14 +176,7 @@ function equipItem(player, equipSlot, item)
|
||||
elseif (equipSlot == EQUIPSLOT_EARS) then
|
||||
player:GraphicChange(GRAPHICSLOT_R_EAR, item);
|
||||
player:GraphicChange(GRAPHICSLOT_L_EAR, item);
|
||||
end
|
||||
|
||||
--Load gearset for new class and begin class change
|
||||
if (classId ~= nil) then
|
||||
loadGearset(player, classId);
|
||||
player:DoClassChange(classId);
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
require ("global")
|
||||
require ("utils")
|
||||
|
||||
--[[
|
||||
|
||||
AttackWeaponSkill Script
|
||||
|
||||
Finds the correct weaponskill subscript to fire when a weaponskill actor is activated.
|
||||
|
||||
--]]
|
||||
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
player.Ability(command.actorId, targetActor);
|
||||
player:endEvent();
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require ("global")
|
||||
require ("utils")
|
||||
|
||||
--[[
|
||||
|
||||
AttackWeaponSkill Script
|
||||
|
||||
Finds the correct weaponskill subscript to fire when a weaponskill actor is activated.
|
||||
|
||||
--]]
|
||||
|
||||
local attackMagicHandlers = {
|
||||
|
||||
}
|
||||
|
||||
function onEventStarted(player, command, triggerName, arg1, arg2, arg3, arg4, targetActor, arg5, arg6, arg7, arg8)
|
||||
player.Cast(command.actorId, targetActor);
|
||||
player:endEvent();
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onStatusAbilityFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onAttackAbilityFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("Ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, ability, action)
|
||||
return onStatusAbilityFinish(caster, target, ability, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onAttackAbilityFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, skill, action)
|
||||
return onAttackAbilityFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("ability");
|
||||
|
||||
function onAbilityPrepare(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityStart(caster, target, ability)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onAbilityFinish(caster, target, ability, action)
|
||||
return onHealAbilityFinish(caster, target, ability, action)
|
||||
end;
|
||||
@@ -0,0 +1,29 @@
|
||||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sss",
|
||||
description =
|
||||
[[
|
||||
Adds target to party
|
||||
]]
|
||||
}
|
||||
|
||||
function onTrigger(player, argc)
|
||||
local sender = "[addtoparty] ";
|
||||
|
||||
if player then
|
||||
if player.target then
|
||||
print("hi")
|
||||
local id = player.target.actorId
|
||||
print("hi")
|
||||
player.currentParty:AddMember(id);
|
||||
player.target.currentParty = player.currentParty;
|
||||
print("hi")
|
||||
else
|
||||
print(sender.." no target")
|
||||
end
|
||||
else
|
||||
print(sender.." no player");
|
||||
end;
|
||||
end;
|
||||
@@ -11,7 +11,7 @@ Equips <commandid> in the first open slot without checking if you can.
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, commandid)
|
||||
local sender = "[givegil] ";
|
||||
local sender = "[eaction] ";
|
||||
|
||||
print(commandid);
|
||||
if name then
|
||||
|
||||
@@ -21,11 +21,14 @@ function onTrigger(player, argc, slot, wId, eId, vId, cId)
|
||||
cId = tonumber(cId) or 0;
|
||||
|
||||
if player and argc > 0 then
|
||||
player:GraphicChange(slot, wId, eId, vId, cId);
|
||||
if argc > 2 then
|
||||
player:GraphicChange(slot, wId, eId, vId, cId);
|
||||
player:SendMessage(messageID, sender, string.format("Changing appearance on slot %u", slot));
|
||||
else
|
||||
player:GraphicChange(slot, wId);
|
||||
end
|
||||
player:SendAppearance();
|
||||
player:SendMessage(messageID, sender, string.format("Changing appearance on slot %u", slot));
|
||||
else
|
||||
player:SendMessage(messageID, sender, "No parameters sent! Usage: "..properties.description);
|
||||
end;
|
||||
|
||||
end;
|
||||
@@ -0,0 +1,25 @@
|
||||
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, appearanceId)
|
||||
local messageID = MESSAGE_TYPE_SYSTEM_ERROR;
|
||||
local sender = "[setappearance] ";
|
||||
|
||||
app = tonumber(appearanceId) or 0;
|
||||
player:SendMessage(messageID, sender, string.format("appearance %u", app));
|
||||
|
||||
if player and player.target then
|
||||
player.target.ChangeNpcAppearance(app);
|
||||
player:SendMessage(messageID, sender, string.format("appearance %u", app));
|
||||
end;
|
||||
|
||||
end;
|
||||
@@ -0,0 +1,21 @@
|
||||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sss",
|
||||
description =
|
||||
[[
|
||||
Adds experience <qty> to player or <targetname>.
|
||||
!giveexp <qty> |
|
||||
!giveexp <qty> <targetname> |
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, jobId)
|
||||
local sender = "[setjob] ";
|
||||
|
||||
jobId = tonumber(jobId)
|
||||
if player then
|
||||
player:SetCurrentJob(jobId);
|
||||
end;
|
||||
end;
|
||||
@@ -0,0 +1,18 @@
|
||||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sss",
|
||||
description =
|
||||
[[
|
||||
Adds experience <qty> to player or <targetname>.
|
||||
!giveexp <qty> |
|
||||
!giveexp <qty> <targetname> |
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, procid)
|
||||
local sender = "[giveexp] ";
|
||||
local pid = tonumber(procid)
|
||||
player:SetProc(pid, true);
|
||||
end;
|
||||
@@ -0,0 +1,27 @@
|
||||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sss",
|
||||
description =
|
||||
[[
|
||||
Sets player or <targetname>'s maximum tp to <tp> and heals them to full.
|
||||
!setmaxtp <tp> |
|
||||
!setmaxtp <tp> <targetname>
|
||||
]],
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, tp)
|
||||
local sender = "[setmaxtp] ";
|
||||
|
||||
|
||||
|
||||
if player then
|
||||
tp = tonumber(tp) or 0;
|
||||
location = INVENTORY_CURRENCY;
|
||||
|
||||
player:SetTP(tp);
|
||||
else
|
||||
print(sender.."unable to add experience, ensure player name is valid.");
|
||||
end;
|
||||
end;
|
||||
@@ -6,7 +6,7 @@ properties = {
|
||||
description = "Spawns a actor",
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, actorClassId)
|
||||
function onTrigger(player, argc, actorClassId, width, height)
|
||||
|
||||
if (actorClassId == nil) then
|
||||
player:SendMessage(0x20, "", "No actor class id provided.");
|
||||
@@ -24,7 +24,16 @@ function onTrigger(player, argc, actorClassId)
|
||||
|
||||
if (actorClassId ~= nil) then
|
||||
zone = player:GetZone();
|
||||
actor = zone:SpawnActor(actorClassId, "test", pos[0], pos[1], pos[2], pos[3]);
|
||||
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, w do
|
||||
for j = 0, h do
|
||||
actor = zone:SpawnActor(actorClassId, "test", pos[0] + (i - (w / 2) * 3), pos[1], pos[2] + (j - (h / 2) * 3), pos[3]);
|
||||
actor.SetAppearance(1001149)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if (actor == nil) then
|
||||
|
||||
@@ -128,7 +128,7 @@ function onTrigger(player, argc, id, level, weight)
|
||||
end;
|
||||
]]
|
||||
|
||||
function onTrigger(player, argc, skillName, level)
|
||||
function onTrigger(player, argc, width, height, blockCount)
|
||||
local messageId = MESSAGE_TYPE_SYSTEM_ERROR;
|
||||
local sender = "yolo";
|
||||
|
||||
@@ -147,24 +147,24 @@ function onTrigger(player, argc, skillName, level)
|
||||
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 = 1, 1 do
|
||||
|
||||
local actor = player.GetZone().SpawnActor(2104001, 'ass', x, y, z, rot, 0, 0, true );
|
||||
|
||||
if player.currentContentGroup then
|
||||
player.currentContentGroup:AddMember(actor.actorId)
|
||||
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
|
||||
--actor.FollowTarget(player, 3.2);
|
||||
end;
|
||||
return;
|
||||
end
|
||||
level = tonumber(level) or 1;
|
||||
if player then
|
||||
player.SendMessage(messageId, sender, string.format("name %s | cost %d | level %u", skillName, calculateCommandCost(player, skillName, level), level));
|
||||
end;
|
||||
end;
|
||||
|
||||
function calculateCommandCost(player, skillName, level)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
require("global");
|
||||
|
||||
properties = {
|
||||
permissions = 0,
|
||||
parameters = "sss",
|
||||
description =
|
||||
[[
|
||||
Set movement speed for player. Enter no value to reset to default.
|
||||
!speed <run> |
|
||||
!speed <stop> <walk> <run> |
|
||||
]]
|
||||
|
||||
}
|
||||
|
||||
function onTrigger(player, argc, stop, walk, run)
|
||||
|
||||
local message = tostring(player.zone.GetAllActors().Count);
|
||||
|
||||
player.SendMessage(0x20, "", message);
|
||||
|
||||
end
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,27 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased damage and conversion to single target
|
||||
function onCombo(caster, target, spell)
|
||||
spell.aoeType = 0;
|
||||
spell.potency = spell.potency * 1.5;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
--Dispels an effect on each target.
|
||||
local effects = target.statusEffects.GetStatusEffectsByFlag(16); --lose on dispel
|
||||
if effects != nil then
|
||||
target.statusEffects.RemoveStatusEffect(effects[0]);
|
||||
end;
|
||||
return damage;
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onBuffMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -10,15 +10,5 @@ function onMagicStart(caster, target, spell)
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
return damage;
|
||||
return magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -9,13 +9,5 @@ function onMagicStart(caster, target, spell)
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
return damage;
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -9,16 +9,11 @@ function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased damage with lesser current hp
|
||||
function onCombo(caster, target, spell)
|
||||
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(1000, 2500);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
return damage;
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onCureMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,15 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--http://forum.square-enix.com/ffxiv/threads/41900-White-Mage-A-Guide read
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onCureMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onCureMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onCureMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -9,16 +9,11 @@ function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--Increased Damage and reduced recast time in place of stun
|
||||
function onCombo(caster, target, spell)
|
||||
spell.castTimeMs = spell.castTimeMs / 2;
|
||||
end;
|
||||
|
||||
return damage;
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -9,16 +9,11 @@ function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(1000, 2500);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--Increased critical damage
|
||||
function onCombo(caster, target, spell)
|
||||
spell.castTimeMs = spell.castTimeMs / 2;
|
||||
end;
|
||||
|
||||
return damage;
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -10,18 +10,5 @@ function onMagicStart(caster, target, spell)
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -10,15 +10,7 @@ function onMagicStart(caster, target, spell)
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(1000, 2500);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
return damage;
|
||||
--increase potency based on proximity to target
|
||||
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -10,15 +10,5 @@ function onMagicStart(caster, target, spell)
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
return damage;
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -10,15 +10,5 @@ function onMagicStart(caster, target, spell)
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(1000, 2500);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
return damage;
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,21 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
spell.statusId = 228011;
|
||||
spell.statusDuration = 25;
|
||||
spell.statusChance = 1.0;
|
||||
magic.onCureMagicFinish(caster, target, spell, action)
|
||||
|
||||
if caster != target then
|
||||
action.AddHealAction(caster.actorId, (action.amount / 2));
|
||||
end
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onBuffMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onBuffMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onStatusMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onStatusMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onStatusMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,20 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased damage and conversion to single target
|
||||
function onCombo(caster, target, spell)
|
||||
spell.aoeType = 0;
|
||||
spell.potency = spell.potency * 1.5;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("magic");
|
||||
|
||||
function onMagicPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onStatusMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -8,14 +8,11 @@ function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--Increased critical damage
|
||||
function onCombo(caster, target, spell)
|
||||
spell.critDamageModifier = 1.5;
|
||||
end;
|
||||
|
||||
return damage;
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -8,14 +8,13 @@ function onMagicStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--Increased Damage and reduced recast time in place of stun
|
||||
function onCombo(caster, target, spell)
|
||||
spell.statusChance = 0;
|
||||
spell.basePotency = spell.basePotency * 1.5;
|
||||
spell.recastTimeMs = spell.recastTimeMs / 2;
|
||||
end;
|
||||
|
||||
return damage;
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -9,13 +9,5 @@ function onMagicStart(caster, target, spell)
|
||||
end;
|
||||
|
||||
function onMagicFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
return damage;
|
||||
magic.onMagicFinish(caster, target, spell, action)
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to inflict slow
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,20 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Inflicts additional damage when bleed ends
|
||||
--Note for later, going to set bleed tier to 2, when bleed get scripted, check if tier is 2 and add additional damage at the end
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusTier = 2;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased damage
|
||||
function onPositional(caster, target, skill)
|
||||
skill.basePotency = skill.basePotency * 1.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,19 +9,11 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased crit hit rating
|
||||
function onCombo(caster, target, skill)
|
||||
skill.critRateModifier = 1.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,25 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to inflict blind on flank
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
skill.statusDuration = 10;
|
||||
end;
|
||||
|
||||
function onCombo(caster, target, skill)
|
||||
skill.basePotency = skill.basePotency * 1.5;
|
||||
end;
|
||||
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -9,18 +10,5 @@ function onSkillStart(caster, target, skill)
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, skill.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,23 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Dispel
|
||||
--Does dispel have a text id?
|
||||
function onCombo(caster, target, skill)
|
||||
local effects = target.statusEffects.GetStatusEffectsByFlag(16); --lose on dispel
|
||||
if effects != nil then
|
||||
target.statusEffects.RemoveStatusEffect(effects[0]);
|
||||
end;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased paralysis duration
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusDuration = skill.statusDuration * 2;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,19 +9,11 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased accuracy
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1.25;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to render target unable to use weaponskills (pacification)
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -9,18 +10,5 @@ function onSkillStart(caster, target, skill)
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,27 +1,18 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, spell)
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, spell)
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, spell, action)
|
||||
local damage = math.random(10, 100);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackSkill(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
function onPositional(caster, target, skill)
|
||||
skill.basePotency = skill.basePotency * 1.25;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -9,18 +10,5 @@ function onSkillStart(caster, target, skill)
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,19 +9,10 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onCombo(caster, target, skill)
|
||||
skill.enmityModifier = skill.enmityModifier * 2
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, spell)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,19 +9,7 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
caster.AddTP(1000);
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to inflict blind
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusChance = 0.90;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,20 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased crit rate
|
||||
function onCombo(caster, target, skill)
|
||||
--Get Berserk statuseffect
|
||||
skill.critRateModifier = 1.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,24 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to increase defense when executed from behind the target
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.90;
|
||||
end;
|
||||
|
||||
--Increases bleed damage
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusTier = 2;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
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;
|
||||
@@ -0,0 +1,14 @@
|
||||
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;
|
||||
@@ -0,0 +1,20 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased accuracy
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1.5;
|
||||
end;
|
||||
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,20 +9,11 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--Increased stun duration
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusDuration = 10;
|
||||
end;
|
||||
|
||||
action.effectId = bit32.bxor(0x8000000, skill.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,24 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased accuracy
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1;
|
||||
end;
|
||||
|
||||
--Increased damage
|
||||
function onCombo(caster, target, skill)
|
||||
skill.potency = skill.potency * 1.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,19 +9,16 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased damage
|
||||
function onPositional(caster, target, skill)
|
||||
skill.potency = skill.potency * 1.25
|
||||
end;
|
||||
|
||||
--Increased crit hit rating
|
||||
function onCombo(caster, target, skill)
|
||||
skill.critRateModifier = 1.25;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased Heavy duration, becomes 60 seconds
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusDuration = 60;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,19 +9,11 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to inflict stun
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,18 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,20 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to inflict heavy when executed from behind
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
skill.statusDuration = 5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,14 @@
|
||||
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;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.50;
|
||||
skill.statusDuration = 5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -1,4 +1,5 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
@@ -8,19 +9,10 @@ function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onPositional(caster, target, skill)
|
||||
skill.basePotency = skill.basePotency * 1.25;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
local damage = math.random(100, 200);
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
action.worldMasterTextId = 0x765D;
|
||||
|
||||
-- todo: populate a global script with statuses and modifiers
|
||||
-- magic.HandleAttackMagic(caster, target, spell, action)
|
||||
-- action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
--action.effectId = bit32.bxor(0x8000000, spell.effectAnimation, 15636);
|
||||
|
||||
if target.hateContainer then
|
||||
target.hateContainer.UpdateHate(caster, damage);
|
||||
end;
|
||||
return damage;
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action)
|
||||
end;
|
||||
@@ -0,0 +1,22 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--fivefold attack/conversion
|
||||
function onCombo(caster, target, skill)
|
||||
skill.numHits = 5;
|
||||
skill.aoeType = 0;
|
||||
skill.aoeTarget = 2;
|
||||
--animation change?
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Accuracy increase
|
||||
function onCombo(caster, target, skill)
|
||||
skill.accuracyModifier = 1;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to inflict stun
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusChance = 0.90
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased critical hit rate
|
||||
function onCombo(caster, target, skill)
|
||||
skill.critRateModifier = 1.5;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Chance to decrease defense when executed from behind the target
|
||||
function onPositional(caster, target, skill)
|
||||
skill.statusChance = 0.75;
|
||||
end;
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,19 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onCombo(caster, target, skill)
|
||||
skill.basePotency = skill.basePotency * 1.25;
|
||||
end;
|
||||
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,20 @@
|
||||
require("global");
|
||||
require("weaponskill");
|
||||
|
||||
function onSkillPrepare(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
function onSkillStart(caster, target, skill)
|
||||
return 0;
|
||||
end;
|
||||
|
||||
--Increased Bind duration
|
||||
function onCombo(caster, target, skill)
|
||||
skill.statusDuration = 10;
|
||||
end;
|
||||
|
||||
|
||||
function onSkillFinish(caster, target, skill, action)
|
||||
return weaponskill.onSkillFinish(caster, target, skill, action);
|
||||
end;
|
||||
@@ -0,0 +1,15 @@
|
||||
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;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user