#output "raids" #include "..\storydev\story.eas" #include "..\debug.eas" constant version = "0.1"; constant RaidScript = "RaidTrack"; unsigned long cRaidJoin; unsigned long cRaidLeave; unsigned long cRaidSay; unsigned long cRaidChannel; public string RaidName; public string RaidInfo; public string TimeStamp; public string RaidPerson; public string RaidChannel; public string CommandChannel; unsigned long arrRaidPointer; unsigned long arrRaidInfo; unsigned long arrRaidAttendList; // This is the alpha list displayed unsigned long arrRaidAttend; // this is the index list unsigned long arrRaidAttendNow; // This is whether or not the member is attending now unsigned long arrRaidAttendAdj; unsigned long arrRaidLoot; unsigned long arrRaidLootNum; unsigned long arrRaidLootWon; unsigned long arrRaidHighlight; unsigned long arrRaidComments; unsigned long arrRaidMobs; unsigned long arrMezBreakers; unsigned long arrMezBreakNum; string CurrentRaid; string CurrentRaidChat; boolean Raiding; boolean Attend; boolean AllowChannel; function main() { cRaidJoin = 1; cRaidLeave = 2; cRaidSay = 3; cRaidChannel = 4; Raiding = false; Attend = false; AllowChannel = false; arrRaidInfo = NewArray(); arrRaidAttendList = NewArray(); arrRaidAttend = NewArray(); arrRaidAttendNow = NewArray(); arrRaidAttendAdj = NewArray(); arrRaidLoot = NewArray(); arrRaidLootNum = NewArray(); arrRaidLootWon = NewArray(); arrRaidHighlight = NewArray(); arrRaidComments = NewArray(); arrRaidMobs = NewArray(); arrRaidPointer = StoryInit(RaidScript, "Raid Tracking Information"); StoryCreateStory(RaidScript, "help", "Raid Function List", arrRaidPointer, true, true); StoryCreateStory(RaidScript, "list", "Today's Raids", arrRaidPointer, true, true); SetupHelp(); } function SetupHelp() { DebugLog(RaidScript, DEBUGENTER, "SetupHelp"); unsigned long arrHelp; arrHelp = NewArray(); ArrayAddElement(arrHelp, "raid start \"Name\" Leader \"Target\""); ArrayAddElement(arrHelp, "raid channel ChannelName"); ArrayAddElement(arrHelp, "raid loot Info"); ArrayAddElement(arrHelp, "raid commandchannel ChannelName"); ArrayAddElement(arrHelp, "raid end"); ArrayAddElement(arrHelp, "raid resume"); ArrayAddElement(arrHelp, "raid info Text"); ArrayAddElement(arrHelp, "raid highlight Text"); ArrayAddElement(arrHelp, "raid comment Text"); ArrayAddElement(arrHelp, "raid note Text"); StoryUpdate(RaidScript, "help", arrHelp, arrRaidPointer); ArrayDelete(arrHelp); DebugLog(RaidScript, DEBUGEXIT, "SetupHelp"); } function RaidAttend(string Attendee, unsigned long Action) { unsigned long ElemPos; ElemPos = ArrayFindElement(arrRaidAttend, 1, Attendee); if (Action == cRaidJoin) { if (0 == ElemPos) { ArrayAddElement(arrRaidAttend, Attendee); ArrayAddElement(arrRaidAttendList, Attendee); ArraySortAlpha(arrRaidAttendList); ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " joined raid"); ArraySortAlpha(arrRaidAttendAdj); } else { ArraySetElement(arrRaidAttendNow, ElemPos, 1); ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " rejoined raid at "); ArraySortAlpha(arrRaidAttendAdj); } } if (Action == cRaidLeave) { if (0 == ElemPos) { ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " left raid, but was never added "); ArraySortAlpha(arrRaidAttendAdj); } else { ArraySetElement(arrRaidAttendNow, ElemPos, 0); ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " left raid at "); ArraySortAlpha(arrRaidAttendAdj); } } if (Action == cRaidSay) { if (0 == ElemPos) { ArrayAddElement(arrRaidAttend, Attendee); ArrayAddElement(arrRaidAttendList, Attendee); ArraySortAlpha(arrRaidAttendList); ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " first spoke to the raid at "); ArraySortAlpha(arrRaidAttendAdj); } else { if (0 == ArrayElement(arrRaidAttendNow, ElemPos)) { ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " had left the raid, but spoke at "); ArraySortAlpha(arrRaidAttendAdj); ArraySetElement(arrRaidAttendNow, ElemPos, 1); } } } if (Action == cRaidChannel) { if (AllowChannel) { if (0 == ElemPos) { ArrayAddElement(arrRaidAttend, Attendee); ArrayAddElement(arrRaidAttendList, Attendee); ArraySortAlpha(arrRaidAttendList); ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " first spoke to the channel at "); ArraySortAlpha(arrRaidAttendAdj); } else { if (0 == ArrayElement(arrRaidAttendNow, ElemPos)) { ArrayAddElement(arrRaidAttendAdj, Attendee+" " + TimeStamp + " had left the raid, but spoke at "); ArraySortAlpha(arrRaidAttendAdj); ArraySetElement(arrRaidAttendNow, ElemPos, 1); } } } } } alias("raid end") { DebugLog(RaidScript, DEBUGENTER, "Raid end"); Raiding = false; DebugLog(RaidScript, DEBUGEXIT, "Raid end"); } alias("raid resume") { DebugLog(RaidScript, DEBUGENTER, "Raid end"); Raiding = true; DebugLog(RaidScript, DEBUGEXIT, "Raid end"); } alias("raid start \"@RaidName@\" @RaidPerson@ \"@RaidInfo@\"") { DebugLog(RaidScript, DEBUGENTER, "Raid start"); string strLink; Raiding = true; Attend = true; ArrayReset(arrRaidInfo); ArrayReset(arrRaidAttend); ArrayReset(arrRaidAttendList); ArrayReset(arrRaidAttendNow); ArrayReset(arrRaidLoot); ArrayReset(arrRaidLootNum); ArrayReset(arrRaidHighlight); ArrayReset(arrRaidComments); ArrayReset(arrRaidMobs); ArrayReset(arrMezBreakers); ArrayReset(arrMezBreakNum); ArrayAddElement(arrRaidInfo, "Raid: "+RaidName); ArrayAddElement(arrRaidInfo, "Raid Leader: "+RaidPerson); ArrayAddElement(arrRaidInfo, "Raid Target: "+RaidInfo); SpeakSync("Raid Started"); CurrentRaid = RaidName+RaidInfo; strLink = StoryCreateStory(RaidScript, CurrentRaid, RaidInfo, arrRaidPointer, false, true); DebugLog(RaidScript, DEBUGINFO, strLink); DebugLog(RaidScript, DEBUGINFO, ToDynarray(arrRaidPointer)); if (ArrayCount(arrRaidPointer) > 3) { ArrayRemoveElement(arrRaidPointer, 4); } ArrayAddElement(arrRaidPointer, strLink); StoryUpdatePointer(RaidScript, arrRaidPointer); CurrentRaidChat = CurrentRaid + "chat"; strLink = StoryCreateStory(RaidScript, CurrentRaidChat, RaidInfo + " chat", arrRaidPointer, false, true); ArrayAddElement(arrRaidInfo, strLink); RaidUpdate(); DebugLog(RaidScript, DEBUGEXIT, "Raid start"); } alias("raid highlight @RaidInfo@") { DebugLog(RaidScript, DEBUGENTER, "Raid highlight"); if (Raiding) { ArrayAddElement(arrRaidHighlight, TimeStamp + ":" + RaidInfo); RaidUpdate(); SpeakSync("Raid highlight added"); } DebugLog(RaidScript, DEBUGEXIT, "Raid highlight"); } alias("raid info @RaidInfo@") { DebugLog(RaidScript, DEBUGENTER, "Raid info"); if (Raiding) { ArrayAddElement(arrRaidInfo, TimeStamp + ":" + RaidInfo); RaidUpdate(); SpeakSync("Raid info added"); } DebugLog(RaidScript, DEBUGEXIT, "Raid info"); } alias("raid loot @RaidInfo@") { DebugLog(RaidScript, DEBUGENTER, "Raid loot"); if (Raiding) { ArrayAddElement(arrRaidLootWon, TimeStamp + ":" + RaidInfo); RaidUpdate(); SpeakSync("Raid info added"); } DebugLog(RaidScript, DEBUGEXIT, "Raid loot"); } alias("raid comment @RaidInfo@") { DebugLog(RaidScript, DEBUGENTER, "Raid comment"); if (Raiding) { ArrayAddElement(arrRaidComments, TimeStamp + ":" + RaidInfo); RaidUpdate(); SpeakSync("Raid comment added"); } DebugLog(RaidScript, DEBUGEXIT, "Raid comment"); } alias("raid note @RaidInfo@") { DebugLog(RaidScript, DEBUGENTER, "Raid note"); if (Raiding) { ArrayAddElement(arrRaidComments, TimeStamp + ":" + RaidInfo); RaidUpdate(); SpeakSync("Raid comment added"); } DebugLog(RaidScript, DEBUGEXIT, "Raid note"); } alias("raid channel @RaidChannel@") { DebugLog(RaidScript, DEBUGENTER, "Raid channel"); DebugLog(RaidScript, DEBUGEXIT, "Raid channel"); } alias("raid commandchannel @CommandChannel@") { DebugLog(RaidScript, DEBUGENTER, "Raid commandchannel"); DebugLog(RaidScript, DEBUGEXIT, "Raid commandchannel"); } trigger("[@TimeStamp@] @RaidPerson@ tell@trash@ %CommandChannel%:@trash@, '@RaidInfo@'") { DebugLog(RaidScript, DEBUGENTER, "Trigger: CommandChannel"); Execute(RaidInfo); DebugLog(RaidScript, DEBUGEXIT, "Trigger: CommandChannel"); } trigger("{@RaidInfo@}") { DebugLog(RaidScript, DEBUGENTER, "Trigger: CommandLine"); Execute(RaidInfo); DebugLog(RaidScript, DEBUGEXIT, "Trigger: CommandLine"); } alias("raid attend on") { DebugLog(RaidScript, DEBUGENTER, "Raid attend on"); Attend = true; DebugLog(RaidScript, DEBUGEXIT, "Raid attend on"); } alias("raid attend off") { DebugLog(RaidScript, DEBUGENTER, "Raid attend off"); Attend = false; DebugLog(RaidScript, DEBUGEXIT, "Raid attend off"); } alias("raid report @RaidInfo@") { DebugLog(RaidScript, DEBUGENTER, "Raid report"); // this is the export to html command. DebugLog(RaidScript, DEBUGEXIT, "Raid report"); } //[Mon Jun 16 20:32:32 2003] an initiate has been awakened by Quindile. trigger("[@TimeStamp@] @RaidInfo@ has been awakened by @RaidPerson@.") { DebugLog(RaidScript, DEBUGENTER, "Trigger: RaidInfo has been awakened"); unsigned long Elem; unsigned long Num; if (Raiding) { Elem = ArrayFindElement(arrMezBreakers, 1, RaidPerson); if (Elem == 0) { ArrayAddElement(arrMezBreakers, RaidPerson); ArrayAddElement(arrMezBreakNum, itoa(1)); } else { Num = atoi(ArrayElement(arrMezBreakNum, Elem)); Num = Num+1; ArraySetElement(arrMezBreakNum, Elem, itoa(Num)); } RaidUpdate(); } DebugLog(RaidScript, DEBUGEXIT, "Trigger: RaidInfo has been awakened"); } // [Sun May 25 19:38:53 2003] --Memilf has looted a Crystallized Sulfur.-- trigger("[@TimeStamp@] --@RaidPerson@ has looted a @RaidInfo@.--") { DebugLog(RaidScript, DEBUGENTER, "Trigger: Raidperson has looted"); unsigned long Elem; unsigned long Num; string LootPerson; if (Raiding) { LootPerson = "["+RaidInfo+"] "+RaidPerson; Elem = ArrayFindElement(arrRaidLoot, 1, LootPerson); if (Elem == 0) { ArrayAddElement(arrRaidLoot, LootPerson); ArrayAddElement(arrRaidLootNum, itoa(1)); } else { Num = atoi(ArrayElement(arrRaidLootNum, Elem)); Num = Num + 1; ArraySetElement(arrRaidLootNum, Elem, itoa(Num)); } RaidUpdate(); } DebugLog(RaidScript, DEBUGEXIT, "Trigger: Raidperson has looted"); } // [Wed May 21 20:14:01 2003] Dyabla tells the raid, 'is that an inc?' trigger("[@TimeStamp@] @RaidPerson@ tell@trash@ the raid, '@RaidInfo@'") { DebugLog(RaidScript, DEBUGENTER, "Trigger: RaidPerson tells the raid"); if (Raiding) { if (strcmp(RaidPerson,"You")==0) { RaidPerson = charname(); } RaidAttend(RaidPerson, cRaidSay); StoryAppendLine(RaidScript, CurrentRaidChat, TimeStamp + ":" + RaidPerson + " tells the raid: " + RaidInfo); RaidUpdate(); } DebugLog(RaidScript, DEBUGEXIT, "Trigger: RaidPerson tells the raid"); } // Muutt tells raidlod:3, 'hey want me to go scouting?' trigger("[@TimeStamp@] @RaidPerson@ tell@trash@ %RaidChannel%:@trash@, '@RaidInfo@'") { DebugLog(RaidScript, DEBUGENTER, "Trigger: Raidperson tells raidchannel"); if (Raiding) { if (strcmp(RaidPerson, "You") == 0) { RaidPerson = charname(); } RaidAttend(RaidPerson, cRaidChannel); StoryAppendLine(RaidScript, CurrentRaidChat, TimeStamp + ":" + RaidPerson + " tells the channel: " + RaidInfo); RaidUpdate(); } DebugLog(RaidScript, DEBUGEXIT, "Trigger: Raidperson tells raidchannel"); } // [Sat May 24 19:52:52 2003] an erratic model has been slain by Dyabla! trigger("[@TimeStamp@] @RaidInfo@ has been slain by @RaidPerson@") { DebugLog(RaidScript, DEBUGENTER, "Trigger: Raidinfo slain by RaidPerson"); if (Raiding) { ArrayAddElement(arrRaidMobs, RaidInfo); RaidUpdate(); // if RaidPerson = raid member - add raid mob } DebugLog(RaidScript, DEBUGEXIT, "Trigger: Raidinfo slain by RaidPerson"); } // [Sat May 24 21:04:45 2003] Quindile has left the raid. trigger("[@TimeStamp@] @RaidPerson@ has left the raid.") { DebugLog(RaidScript, DEBUGENTER, "Trigger: Raidperson left raid"); if (Raiding) { RaidAttend(RaidPerson, cRaidLeave); RaidUpdate(); } DebugLog(RaidScript, DEBUGEXIT, "Trigger: Raidperson left raid"); } // You were removed from the raid. trigger("[@TimeStamp@] You were removed from the raid.") { DebugLog(RaidScript, DEBUGENTER, "Trigger: Raidyou left raid"); if (Raiding) { RaidPerson = charname(); RaidAttend(RaidPerson, cRaidLeave); RaidUpdate(); } DebugLog(RaidScript, DEBUGEXIT, "Trigger: Raidyou left raid"); } // [Sat May 24 19:22:44 2003] Doomsgiver joined the raid. trigger("[@TimeStamp@] @RaidPerson@ joined the raid.") { DebugLog(RaidScript, DEBUGENTER, "Trigger: Raidperson joined raid"); if (Raiding) { if (strcmp(RaidPerson, "You have") == 0) { RaidPerson = charname(); } RaidAttend(RaidPerson, cRaidJoin); RaidUpdate(); } DebugLog(RaidScript, DEBUGEXIT, "Trigger: Raidperson joined raid"); } function RaidUpdate() { DebugLog(RaidScript, DEBUGENTER, "RaidUpdate"); unsigned long arrPiece; unsigned long arrTemp; unsigned long arrMezTemp; unsigned long i; unsigned long Num; ArrayAppend(arrTemp, arrRaidInfo); ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, "Attendance:"); ArrayAddElement(arrTemp, "Num: " + itoa(ArrayCount(arrRaidAttendList))); ArrayAppend(arrTemp, arrRaidAttendList); ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, " - Adjustments"); ArrayAppend(arrTemp, arrRaidAttendAdj); ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, "Loot Winners:"); ArrayAppend(arrTemp, arrRaidLootWon); Num = ArrayCount(arrRaidLoot); i = 0; while (i < Num) { i++; ArrayAddElement(arrPiece, ArrayElement(arrRaidLoot, i)+" x" +ArrayElement(arrRaidLootNum, i)); } ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, "Loot:"); ArrayAppend(arrTemp, arrPiece); ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, "Raid Highlights:"); ArrayAppend(arrTemp, arrRaidHighlight); ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, "Comments:"); ArrayAppend(arrTemp, arrRaidComments); ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, "Mobs killed:"); ArrayAppend(arrTemp, arrRaidMobs); ArrayReset(arrPiece); Num = ArrayCount(arrMezBreakers); i = 0; while (i < Num) { i++; ArrayAddElement(arrPiece, ArrayElement(arrMezBreakers, i)+" - " +ArrayElement(arrMezBreakNum, i)); } ArrayAddElement(arrTemp, ""); ArrayAddElement(arrTemp, "Mez Breakers:"); ArrayAppend(arrTemp, arrPiece); StoryUpdate(RaidScript, CurrentRaid, arrTemp, arrRaidPointer) ArrayDelete(arrTemp); ArrayDelete(arrMezTemp); DebugLog(RaidScript, DEBUGEXIT, "RaidUpdate"); }