mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04: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
136 lines
4.1 KiB
Lua
136 lines
4.1 KiB
Lua
require ("global")
|
|
require ("tutorial")
|
|
require ("modifiers")
|
|
require ("quests/man/man0g0")
|
|
|
|
--processTtrBtl001: Active Mode Tutorial
|
|
--processTtrBtl002: Targetting Tutorial (After active mode done)
|
|
|
|
function init()
|
|
return "/Director/Quest/QuestDirectorMan0g001";
|
|
end
|
|
|
|
function onCreateContentArea(players, director, contentArea, contentGroup)
|
|
director:StartContentGroup();
|
|
end
|
|
|
|
function onEventStarted(player, actor, triggerName)
|
|
man0g0Quest = player:GetQuest("Man0g0");
|
|
player:SendMessage(0x20, "", "Starting");
|
|
startTutorialMode(player);
|
|
callClientFunction(player, "delegateEvent", player, man0g0Quest, "processTtrBtl001", nil, nil, nil);
|
|
player:EndEvent();
|
|
player:SendMessage(0x20, "", "Waiting for player active");
|
|
waitForSignal("playerActive");
|
|
player:SendMessage(0x20, "", "player active");
|
|
wait(1); --If this isn't here, the scripts bugs out. TODO: Find a better alternative.
|
|
kickEventContinue(player, actor, "noticeEvent", "noticeEvent");
|
|
callClientFunction(player, "delegateEvent", player, man0g0Quest, "processTtrBtl002", nil, nil, nil);
|
|
player:SendMessage(0x20, "", "processTtrBtl002 called");
|
|
player:EndEvent();
|
|
|
|
--Combat portion of tutorial
|
|
|
|
if player:IsDiscipleOfWar() then
|
|
player:SendMessage(0x20, "", "Is DoW");
|
|
waitForSignal("playerAttack");
|
|
closeTutorialWidget(player);
|
|
showTutorialSuccessWidget(player, 9055); --Open TutorialSuccessWidget for attacking enemy
|
|
openTutorialWidget(player, CONTROLLER_KEYBOARD, TUTORIAL_TP);
|
|
waitForSignal("tpOver1000");
|
|
closeTutorialWidget(player);
|
|
openTutorialWidget(player, CONTROLLER_KEYBOARD, TUTORIAL_WEAPONSKILLS);
|
|
waitForSignal("weaponskillUsed");
|
|
closeTutorialWidget(player);
|
|
showTutorialSuccessWidget(player, 9065); --Open TutorialSuccessWidget for weapon skill
|
|
elseif player:IsDiscipleOfMagic() then
|
|
player:SendMessage(0x20, "", "Is DoM");
|
|
openTutorialWidget(player, CONTROLLER_KEYBOARD, TUTORIAL_CASTING);
|
|
waitForSignal("spellUsed");
|
|
closeTutorialWidget(player);
|
|
elseif player:IsDiscipleOfHand() then
|
|
waitForSignal("abilityUsed");
|
|
elseif player:IsDiscipleOfLand() then
|
|
waitForSignal("abilityUsed");
|
|
end
|
|
|
|
player:SendMessage(0x20, "", "Waiting for mobkill1");
|
|
waitForSignal("mobkill"); --Should be wait for mobkill
|
|
player:SendMessage(0x20, "", "Waiting for mobkill2");
|
|
waitForSignal("mobkill");
|
|
player:SendMessage(0x20, "", "Waiting for mobkill3");
|
|
waitForSignal("mobkill");
|
|
worldMaster = GetWorldMaster();
|
|
player:SendMessage(0x20, "", "Sending data packet 'attention'");
|
|
player:SendDataPacket("attention", worldMaster, "", 51073, 2);
|
|
wait(5);
|
|
player:SendMessage(0x20, "", "Disengaging");
|
|
player:Disengage(0x0000);
|
|
wait(5);
|
|
player:SendMessage(0x20, "", "NextPhase(10)");
|
|
man0g0Quest:NextPhase(10);
|
|
wait(5);
|
|
player:SendMessage(0x20, "", "ProcessEvent020_1");
|
|
callClientFunction(player, "delegateEvent", player, man0g0Quest, "processEvent020_1", nil, nil, nil);
|
|
|
|
wait(5);
|
|
|
|
player:SendMessage(0x20, "", "Changing music");
|
|
player:ChangeMusic(7);
|
|
wait(5);
|
|
|
|
player:SendMessage(0x20, "", "Kick notice event");
|
|
kickEventContinue(player, actor, "noticeEvent", "noticeEvent");
|
|
wait(5);
|
|
|
|
player:SendMessage(0x20, "", "ContentFinished");
|
|
player:GetZone():ContentFinished();
|
|
wait(5);
|
|
player:SendMessage(0x20, "", "Remove from party");
|
|
player:RemoveFromCurrentPartyAndCleanup();
|
|
--player:EndEvent();
|
|
--GetWorldManager():DoZoneChange(player, 155, "PrivateAreaMasterPast", 1, 15, 175.38, -1.21, -1156.51, -2.1);
|
|
--[[
|
|
IF DoW:
|
|
OpenWidget (TP)
|
|
IF TP REACHED:
|
|
CloseWidget
|
|
OpenWidget (WS)
|
|
IF WS USED:
|
|
Success
|
|
CloseWidget
|
|
ELSE MAGIC:
|
|
OpenWidget (DEFEAT ENEMY)
|
|
]]
|
|
|
|
player:EndEvent();
|
|
|
|
wait(5);
|
|
player:SendMessage(0x20, "", "Zone change");
|
|
GetWorldManager():DoZoneChange(player, 155, "PrivateAreaMasterPast", 1, 15, 175.38, -1.21, -1156.51, -2.1);
|
|
|
|
end
|
|
|
|
function onUpdate(deltaTime, area)
|
|
end
|
|
|
|
function onTalkEvent(player, npc)
|
|
|
|
end
|
|
|
|
function onPushEvent(player, npc)
|
|
end
|
|
|
|
function onCommandEvent(player, command)
|
|
|
|
end
|
|
|
|
function onEventUpdate(player, npc)
|
|
end
|
|
|
|
function onCommand(player, command)
|
|
end
|
|
|
|
function main(director, contentGroup)
|
|
onCreateContentArea(director:GetPlayerMembers(), director, director:GetZone(), contentGroup);
|
|
end; |