using System;
using System.Linq;
using System.Collections.Generic;
using NewWidget.Core;
using NewWidget.Core.Native;
using NewWidget.Core.Scripting;
public class Script : ScriptBase {
public override void OnStart() {
base.OnStart();
BindKey(System.Windows.Forms.Keys.F8, UseNuke);
CreateTimer(100, CheckCD);
}
class Nuke {
public int Id;
public int Cooldown;
}
bool Active = false;
readonly List<Nuke> Nukes = new[]{ 3169, 3165, 3171, 3172, 3168, 3167, 3170 }.Select(i => new Nuke{ Id = i, Cooldown = 0 }).ToList();
void UseNuke() {
if (Active || Me.Target==null || Me.Cast.EndTime > 100) {
return;
}
Active = true;
var maitWeapID = 15893;
foreach (var nuke in Nukes.Where(kv => kv.Cooldown < Environment.TickCount)) {
var aug = L2Helper.GameData.Augments[nuke.Id];
var item = CommonInventory.FirstOrDefault(i => i.IsAugmented && (aug.Options.Contains(i.Augment.First) || aug.Options.Contains(i.Augment.Second)));
if (item != null) {
if (!item.IsEquipped) {
Client.UseItem(item);
}
nuke.Cooldown = Environment.TickCount + 1000;
Client.FUseSkill(nuke.Id, true);
Client.UseItem(maitWeapID);
break;
}
}
Active = false;
}
void CheckCD() {
foreach (var skill in Me.Skills) {
var nuke = Nukes.FirstOrDefault(n => n.Id == skill.Id);
if (nuke != null) {
nuke.Cooldown = Environment.TickCount + skill.EndTime;
break;
}
}
}
}