Skip to content

Instantly share code, notes, and snippets.

@TeoTwawki
Last active November 1, 2015 01:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TeoTwawki/b560b2183b1d27573ee8 to your computer and use it in GitHub Desktop.
Save TeoTwawki/b560b2183b1d27573ee8 to your computer and use it in GitHub Desktop.
stupid annoying conflux craps
-----------------------------------
-- This file contains functions and
-- data related to using Veridical
-- Confluxes in Abyssea - Originally By Troak
-----------------------------------
require("scripts/globals/common");
require("scripts/globals/settings");
require("scripts/globals/keyitems");
-----------------------------------
-- { npcid, zoneid, bit, csid, { #01, #02, #03, #04, #05, #06, #07, #08}, mask variable}
local ConfluxData =
{
16839194, 15, 0, 0x0854, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16839195, 15, 1, 0x0855, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16839196, 15, 2, 0x0856, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16839197, 15, 3, 0x0857, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16839198, 15, 4, 0x0858, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16839199, 15, 5, 0x0859, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16839200, 15, 6, 0x085a, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16839201, 15, 7, 0x085b, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Konschtat]',
16962071, 45, 0, 0x0854, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
16962072, 45, 1, 0x0855, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
16962073, 45, 2, 0x0856, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
16962074, 45, 3, 0x0857, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
16962075, 45, 4, 0x0858, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
16962076, 45, 5, 0x0859, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
16962077, 45, 6, 0x085a, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
16962078, 45, 7, 0x085b, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[Tahrongi]',
17318589, 132, 0, 0x0854, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17318590, 132, 1, 0x0855, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17318591, 132, 2, 0x0856, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17318592, 132, 3, 0x0857, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17318593, 132, 4, 0x0858, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17318594, 132, 5, 0x0859, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17318595, 132, 6, 0x085a, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17318596, 132, 7, 0x085b, { 50, 100, 150, 200, 250, 300, 350, 400}, 'ConfluxMask[LaTheine]',
17658470, 215, 0, 0x0854, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658471, 215, 1, 0x0855, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658472, 215, 2, 0x0856, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658473, 215, 3, 0x0857, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658474, 215, 4, 0x0858, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658475, 215, 5, 0x0859, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658476, 215, 6, 0x085a, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658477, 215, 7, 0x085b, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17658489, 215, 8, 0x007b, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Attohwa]',
17662675, 216, 0, 0x0854, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662676, 216, 1, 0x0855, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662677, 216, 2, 0x0856, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662678, 216, 3, 0x0857, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662679, 216, 4, 0x0858, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662680, 216, 5, 0x0859, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662681, 216, 6, 0x085a, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662682, 216, 7, 0x085b, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17662694, 216, 8, 0x007b, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Misareaux]',
17666695, 217, 0, 0x0854, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666696, 217, 1, 0x0855, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666697, 217, 2, 0x0856, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666698, 217, 3, 0x0857, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666699, 217, 4, 0x0858, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666700, 217, 5, 0x0859, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666701, 217, 6, 0x085a, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666702, 217, 7, 0x085b, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17666714, 217, 8, 0x007b, { 200, 400, 600, 800, 1000, 1200, 1400, 1600}, 'ConfluxMask[Vunkerl]',
17670707, 218, 0, 0x0854, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17670708, 218, 1, 0x0855, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17670709, 218, 2, 0x0856, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17670710, 218, 3, 0x0857, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17670711, 218, 4, 0x0858, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17670712, 218, 5, 0x0859, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17670713, 218, 6, 0x085a, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17670714, 218, 7, 0x085b, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Altepa]',
17814067, 253, 0, 0x0854, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17814068, 253, 1, 0x0855, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17814069, 253, 2, 0x0856, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17814070, 253, 3, 0x0857, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17814071, 253, 4, 0x0858, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17814072, 253, 5, 0x0859, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17814073, 253, 6, 0x085a, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17814074, 253, 7, 0x085a, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Uleguerand]',
17818199, 254, 0, 0x0854, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]',
17818200, 254, 1, 0x0855, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]',
17818201, 254, 2, 0x0856, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]',
17818202, 254, 3, 0x0857, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]',
17818203, 254, 4, 0x0858, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]',
17818204, 254, 5, 0x0859, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]',
17818205, 254, 6, 0x085a, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]',
17818206, 254, 7, 0x085b, { 600, 800, 1000, 1200, 1400, 1600, 1800, 2000}, 'ConfluxMask[Grauberg]'
}
function startConflux(player,npc)
local npcid = npc:getID();
local discount = getCruorDiscount(player);
local cruor = player:getCurrency("cruor");
local bit = 0;
local csid = 0x0000;
local c01 = 0;
local c02 = 0;
local c03 = 0;
local c04 = 0;
local c05 = 0;
local c06 = 0;
local c07 = 0;
local c08 = 0;
local maskVar = '';
local mask = 0;
local activated = false;
for i = 1, table.getn(ConfluxData) - 5, 6 do
if (npcid == ConfluxData[i]) then
bit = ConfluxData[i + 2];
csid = ConfluxData[i + 3];
if (FREE_CONFLUX) then
c01, c02, c03, c04, c05, c06, c07, c08 = 0, 0, 0, 0, 0, 0, 0, 0, 0;
else
c01 = ConfluxData[i + 4][1] * discount;
c02 = ConfluxData[i + 4][2] * discount;
c03 = ConfluxData[i + 4][3] * discount;
c04 = ConfluxData[i + 4][4] * discount;
c05 = ConfluxData[i + 4][5] * discount;
c06 = ConfluxData[i + 4][6] * discount;
c07 = ConfluxData[i + 4][7] * discount;
c08 = ConfluxData[i + 4][8] * discount;
end
maskVar = ConfluxData[i + 5];
break
end
end
mask = player:getVar(maskVar);
if ((maskVar == "ConfluxMask[Attohwa]" or maskVar == "ConfluxMask[Misareaux]" or maskVar == "ConfluxMask[Vunkerl]") and player:getMaskBit(mask,8) == false) then
player:setMaskBit(mask,maskVar,8,true);
end
activated = player:getMaskBit(mask,bit);
if (activated) then
return csid, c01 + c02 * 65536, c03 + c04 * 65536, c05 + c06 * 65536, c07 + c08 * 65536, mask - 2 ^ bit, 9, 1, cruor;
elseif (npcid == 17658486 or npcid == 17662691 or npcid == 17666711) then
mask = mask + 256
player:setVar(maskVar,mask);
return csid, c01 + c02 * 65536, c03 + c04 * 65536, c05 + c06 * 65536, c07 + c08 * 65536, mask - 2 ^ bit, 9, 1, cruor;
else
return csid, (50 + 100 * 65536) * discount, (150 + 200 * 65536) * discount, (250 + 300 * 65536) * discount, (350 + 400 * 65536) * discount, 0, bit, 2, cruor;
end
end;
function finishConflux(player,csid,option)
local npcid = 0
local zoneid = player:getZone();
local discount = getCruorDiscount(player);
local cruor = player:getCurrency("cruor");
local bit = 0;
local c01 = 0;
local c02 = 0;
local c03 = 0;
local c04 = 0;
local c05 = 0;
local c06 = 0;
local c07 = 0;
local c08 = 0;
local maskVar = '';
local mask = 0;
local activated = false;
for i = 1, table.getn(ConfluxData) - 5, 6 do
if (zoneid == ConfluxData[i + 1] and csid == ConfluxData[i + 3]) then
bit = ConfluxData[i + 2];
if (FREE_CONFLUX) then
c01, c02, c03, c04, c05, c06, c07, c08 = 0, 0, 0, 0, 0, 0, 0, 0, 0;
else
c01 = ConfluxData[i + 4][1] * discount;
c02 = ConfluxData[i + 4][2] * discount;
c03 = ConfluxData[i + 4][3] * discount;
c04 = ConfluxData[i + 4][4] * discount;
c05 = ConfluxData[i + 4][5] * discount;
c06 = ConfluxData[i + 4][6] * discount;
c07 = ConfluxData[i + 4][7] * discount;
c08 = ConfluxData[i + 4][8] * discount;
end
maskVar = ConfluxData[i + 5];
break
end
end
mask = player:getVar(maskVar);
activated = player:getMaskBit(mask,bit);
if (activated) then
switch (option) : caseof
{
[1] = function (x) player:delCurrency("cruor",c01); end,
[2] = function (x) player:delCurrency("cruor",c02); end,
[3] = function (x) player:delCurrency("cruor",c03); end,
[4] = function (x) player:delCurrency("cruor",c04); end,
[5] = function (x) player:delCurrency("cruor",c05); end,
[6] = function (x) player:delCurrency("cruor",c06); end,
[7] = function (x) player:delCurrency("cruor",c07); end,
[8] = function (x) player:delCurrency("cruor",c08); end,
}
else
if (option == 1) then
player:setMaskBit(mask,maskVar,bit,true);
if (FREE_CONFLUX == false and bit ~= 8) then
player:delCurrency("cruor", (50 * (bit + 1) * discount));
end
end
end
end;
function getCruorDiscount(player)
local discount = 1
if (player:hasKeyItem(IVORY_ABYSSITE_OF_CONFLUENCE)) then
discount = discount - 0.2
end
if (player:hasKeyItem(CRIMSON_ABYSSITE_OF_CONFLUENCE)) then
discount = discount - 0.2
end
if (player:hasKeyItem(INDIGO_ABYSSITE_OF_CONFLUENCE)) then
discount = discount - 0.2
end
return discount
end;
-----------------------------------
-- Area: Abyssea-Konschtat
-- NPC: Veridical Conflux #00
-- Aybssea Teleport NPC
-----------------------------------
package.loaded["scripts/globals/conflux"] = nil;
-----------------------------------
require("scripts/globals/keyitems");
require("scripts/globals/conflux");
require("scripts/globals/settings");
require("scripts/globals/teleports");
require("scripts/globals/quests");
require("scripts/zones/Abyssea-Konschtat/TextIDs");
-----------------------------------
-- onTrade Action
-----------------------------------
function onTrade(player,npc,trade)
end;
-----------------------------------
-- onTrigger Action
-----------------------------------
function onTrigger(player,npc)
local csid, param1, param2, param3, param4, param5, param6, param7, param8 = startConflux(player,npc);
player:startEvent(csid, param1, param2, param3, param4, param5, param6, param7, param8);
end;
-----------------------------------
-- onEventUpdate
-----------------------------------
function onEventUpdate(player,csid,option)
player:updateEvent(1,0,0,0,0,0,0,0);
end;
-----------------------------------
-- onEventFinish
-----------------------------------
function onEventFinish(player,csid,option)
finishConflux(player,csid,option);
end;

This doesn't fully work, and is prone to breakage (table.getn is deprecated, Cruor cost and its display are borked, NPC IDs require updating every client update).

I don't think it needs to be global'd this way. I think it would be simple enough to do per zone using relative ID's in the NPCs (local flux2 = npc:getID()+2; etc.) and a new database field to store whats unlocked instead of using multiple playervars bloating the char_vars table.

All the "unlocked" craps need their own table instead of piggybacking the points table or player vars like they currently do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment