Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Collections.Generic;
- using Turbo.Plugins.Default;
- using SharpDX;
- using SharpDX.Direct2D1;
- namespace Turbo.Plugins.DAV
- {
- public class DAV_BossCDPlugin : BasePlugin, IInGameWorldPainter, INewAreaHandler {
- public float XPos { get; set; }
- public float YPos { get; set; }
- public float barH { get; set; }
- public float barW { get; set; }
- public string CDformat { get; set; }
- public IFont SkillFont { get; set; }
- public IBrush Brush_Ready { get; set; } // Skill ready (cool down = 0)
- public IBrush Brush_CD { get; set; } // Cooldown in progress
- public IBrush Brush_NA { get; set; } // Skill not available yet
- public IBrush Brush_BG { get; set; } // background (for skill in cool down)
- public Dictionary<DAV_KeyAnime, DAV_BossSkill> BossSkill_List { get; set; } = new Dictionary<DAV_KeyAnime, DAV_BossSkill>(new DAV_KeyAnime.EqualityComparer());
- public Dictionary<DAV_KeyActor, DAV_BossSkill> BossActor_List { get; set; } = new Dictionary<DAV_KeyActor, DAV_BossSkill>(new DAV_KeyActor.EqualityComparer());
- private bool showDebug { get; set; } = false;
- private bool BossFlight { get; set; } = false;
- private DAV_KeyAnime preSkill { get; set; }
- private DAV_KeyActor thisActor { get; set; }
- private Dictionary<AnimSnoEnum, double> BossSkill_This { get; set; } = new Dictionary<AnimSnoEnum, double>();
- private Dictionary<ActorSnoEnum, double> BossActor_This { get; set; } = new Dictionary<ActorSnoEnum, double>();
- public DAV_BossCDPlugin() {
- Enabled = true;
- }
- public override void Load(IController hud) {
- base.Load(hud);
- XPos = Hud.Window.Size.Width * 0.7f;
- YPos = Hud.Window.Size.Height * 0.5f;
- barH = Hud.Window.Size.Height * 0.015f;
- barW = Hud.Window.Size.Width * 0.1f;
- CDformat = "F0"; // F0, F1 or F2
- SkillFont = Hud.Render.CreateFont("arial", 7, 255, 255, 255, 255, false, false, 255, 0, 0, 0, true);
- Brush_Ready = Hud.Render.CreateBrush(240, 128, 255, 0, 0);
- Brush_CD = Hud.Render.CreateBrush(240, 255, 51, 51, 0);
- Brush_NA = Hud.Render.CreateBrush(240, 153, 153, 153, 0);
- Brush_BG = Hud.Render.CreateBrush(240, 255, 255, 255, 0);
- preSkill = new DAV_KeyAnime("", AnimSnoEnum._p7_cos_pet_azmodan_walk);
- thisActor = new DAV_KeyActor("", ActorSnoEnum._p7_cos_wings_cosmic_bat_01_wdm);
- // Thanks to user evan6944's works
- // 阿格尼多克斯
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Agnidox", AnimSnoEnum._demonflyer_mega_firebreath_01), new DAV_BossSkill("Agnidox", "火焰吐息", 1f, 7, "", "噴吐火焰,對 π/6 角度、 30 碼範圍內的玩家造成 4 次火焰傷害,並附加擊退。\n僅當玩家在15碼範圍內時使用\n可觸發4次荊棘傷害,100%觸發係數"));
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Agnidox", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_fire_10foot), new DAV_BossSkill("Agnidox", "火焰印記", 1f, 8, "", "釋放火焰符文陣,符文爆破對 10 碼範圍內的玩家造成火焰傷害(可觸發荊棘傷害);然後符文地面對範圍內的玩家造成每秒火焰傷害,持續 4 秒(不觸發荊棘傷害)"));// tiered CDs, 9s at lower HP; needs further testing
- BossActor_List.Add(new DAV_KeyActor("Agnidox", ActorSnoEnum._x1_unique_monster_generic_projectile_fire), new DAV_BossSkill("Agnidox", "火焰飛彈", 1f, 4, "", "凝聚橙紅色光斑,然後發射 3 枚火球,造成火焰傷害\n發射方向始終瞄準目標\n無法打斷"));
- BossActor_List.Add(new DAV_KeyActor("Agnidox", ActorSnoEnum._grenadier_proj_mortar_inpact), new DAV_BossSkill("Agnidox", "轟炮", 1f, 3));
- //火焰新星缺少動畫和Actor
- // 疫王
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Blighter", AnimSnoEnum._creepmob_attack_04_middle), new DAV_BossSkill("Blighter", "瘟疫風暴", 0.5f, 10, "適合觸發克利斯賓", "每個瘟疫池可觸發5次荊棘傷害,100%觸發係數"));
- //Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Blighter", AnimSnoEnum._creepmob_attack_04_in), new DAV_BossSkill("Blighter", "瘟疫之手", 1f, 5));
- BossSkill_List.Add(new DAV_KeyAnime("Blighter", AnimSnoEnum._creepmob_generic_cast), new DAV_BossSkill("Blighter", "劇毒飛彈", 1f, 5));
- // 血腸
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Bloodmaw", AnimSnoEnum._x1_westmarchbrute_taunt), new DAV_BossSkill("Bloodmaw", "躍擊+地震", 1f, 21, "適合觸發克利斯賓", "雙刃抬起,然後連續跳躍 3~5 次\n以棕黃色圓形標識著陸位置,對 14 碼範圍內的玩家造成物理傷害,並附加擊退\n > 落地 1.5 秒後產生地震,對 14 碼範圍內的玩家造成 4 次物理傷害\n每個地震可觸發4次荊棘傷害,100%觸發係數"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Bloodmaw", AnimSnoEnum._x1_westmarchbrute_b_attack_06_in), new DAV_BossSkill("Bloodmaw", "躍擊", 1f, 5, "可控制打斷", "跳躍攻擊,以棕黃色圓形標識著陸位置\n對 14 碼範圍內的玩家造成物理傷害,並附加昏迷"));
- // 白骨術士
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Bone Warlock", AnimSnoEnum._skeletonsummoner_attack_01), new DAV_BossSkill("Bone Warlock", "奧術球", 1f, 2, "適合觸發克利斯賓")); //%thorns?
- // 急凍魔
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Cold Snap", AnimSnoEnum._bigred_firebreath_combo_01), new DAV_BossSkill("Cold Snap", "冰霜新星", 1f, 16, "", "釋放冰霜爆炸,對 60 碼範圍內的玩家造成冰霜傷害,附加冰凍\n必中,無法打斷。\n可觸發1次荊棘傷害,100%觸發係數"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Cold Snap", AnimSnoEnum._bigred_charge_01), new DAV_BossSkill("Cold Snap", "衝鋒", 1f, 6, "", "直線猛衝,對 10 碼範圍內的玩家造成物理傷害,並附加擊退。"));
- var tmpskill = new DAV_KeyActor("Cold Snap", ActorSnoEnum._x1_monsteraffix_frozenpulse_monster);
- BossActor_List.Add(tmpskill, new DAV_BossSkill("Cold Snap", "冰脈", 0.75f, 10));
- BossActor_List[tmpskill].AddSecendCD(0.5f, 7);
- BossActor_List.Add(new DAV_KeyActor("Cold Snap", ActorSnoEnum._monsteraffix_frozen_iceclusters), new DAV_BossSkill("Cold Snap", "冰凍", 0.5f, 4, "", "釋放 6 個冰凍晶體,類似精英怪物的冰凍詞綴,但旋轉階段不會造成傷害。\n不觸發荊棘傷害"));
- // 聖教君王
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Crusader King", AnimSnoEnum._skeletonking_whirlwind_start), new DAV_BossSkill("Crusader King", "旋風斬", 1f, 20, "適合觸發克利斯賓", "右手舉起釘錘並嘲笑,然後雙手揮舞釘錘,橫掃 4 次\n第 1 次對 15 碼範圍內的玩家造成物理傷害,並附加擊退\n第 2 ~ 4 次各對 15 碼範圍內的玩家造成物理傷害\n每次揮舞可觸發1次荊棘傷害,100%觸發係數"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Crusader King", AnimSnoEnum._skeletonking_teleport), new DAV_BossSkill("Crusader King", "傳送", 1f, 9, "可控制打斷", ""));
- BossSkill_List.Add(new DAV_KeyAnime("Crusader King", AnimSnoEnum._skeletonking_cast_summon), new DAV_BossSkill("Crusader King", "召喚", 1f, 15, "可控制打斷,上限14", "上限為14個(2波)"));
- // 灰燼
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Ember", AnimSnoEnum._morluspellcaster_attack_aoe_01), new DAV_BossSkill("Ember", "隕石術", 1f, 4, "", "雙手高抬,然後落下,以紅色圓形標識區域,釋放隕石撞擊(可觸發荊棘傷害)\n對 18 碼範圍內的玩家造成火焰傷害,並燒熔地面,持續造成 4 次火焰傷害(不觸發荊棘傷害)")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Ember", AnimSnoEnum._morluspellcaster_generic_cast), new DAV_BossSkill("Ember", "召喚", 0.95f, 2, "上限5", "自爆狂 (95%),\n墮落薩滿 (60%),\n薩滿上限5個")); // change by DAV 1f to 0.95f > ty ^.^
- // 厄雷松
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Erethon", AnimSnoEnum._angel_corrupt_attack_dash_in), new DAV_BossSkill("Erethon", "衝撞", 1f, 2,"", "直線衝刺,對 7 碼範圍內的玩家造成物理傷害。並附加擊退\n衝刺起點到目標位置的位移小於 20 碼時,衝撞位移為 10 碼\n衝刺起點到目標位置的位移大於 20 碼時,衝撞位移為 30 碼")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Erethon", AnimSnoEnum._x1_lr_boss_angel_corrupt_a_cast_01), new DAV_BossSkill("Erethon", "劇毒飛彈", 1f, 3,"", "凝聚綠色光斑,然後發射 3 枚毒球,造成毒素傷害\n發射方向始終瞄準目標\n無法打斷")); //%thorns?
- // 艾斯坎迪爾
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Eskandiel", AnimSnoEnum._x1_dark_angel_cast), new DAV_BossSkill("Eskandiel", "靈魂波浪", 1f, 3,"", "雙手前推,釋放青色死亡浪潮,對 40 碼距離內的玩家造成冰霜傷害,並附加擊退和 50% 減速,持續 5 秒")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Eskandiel", AnimSnoEnum._x1_dark_angel_attack_02), new DAV_BossSkill("Eskandiel", "靈魂抽取", 1f, 11, "", "右手前伸,以青色光弧收割目標靈魂,造成冰霜傷害,並附加拉\n只有目標不在近戰範圍內時使用。"));
- //哈默林
- // Hamelin
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Hamelin", ActorSnoEnum._p4_ratking_thunderdome_proxyactor), new DAV_BossSkill("Hamelin", "限制罩", 1f, 12, "", "雙手伸出並吼叫,釋放限制罩,阻止玩家和怪物通行,自身和鼠群可以通過\n虛幻長靴,毀傷之御,靈魂行走,鋼鐵之膚-疾行之膚,希望律法-天使之翼可使玩家穿過限制罩移動\n半徑:35 碼,持續時間:10 秒"));
- // headbutt has no unique animation
- // 煉獄侍女
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_attack_04_aoe), new DAV_BossSkill("Infernal Maiden", "猛擊", 1f, 14, "", "雙手高舉鐮刀,然後落下猛擊,對 20 碼範圍內的玩家造成 2 次物理傷害,並附加擊退\n可觸發2次荊棘傷害,100%觸發係數"));
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_attack_special_360_01), new DAV_BossSkill("Infernal Maiden", "旋風斬", 1f, 9, "", "原地旋轉攻擊,對 11 碼範圍內的玩家造成 4 次物理傷害,持續 2 秒\n70%以下血量時附加轟炮\n可觸發4次荊棘傷害,50%觸發係數"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_attack_special_flip_01), new DAV_BossSkill("Infernal Maiden", "火焰螺旋", 0.4f, 25, "", "左手前伸,右手旋轉鐮刀,然後跳起\n落地並釋放火焰螺旋,發射 8 枚火球,以螺線擴散,造成火焰傷害\n投射物穿透目標\n旋轉鐮刀後、跳起前可以打斷。"));
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_temp_cast_01), new DAV_BossSkill("Infernal Maiden", "傳送", 1f, 7));
- // 狂屠
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_charge_01_in), new DAV_BossSkill("Man Carver", "怒吼衝鋒", 1f, 12,"" , "怒吼警告,對 16 碼範圍內的玩家造成物理傷害並附加擊退\n2 秒後沿標識的 50 碼直線衝鋒,對 10 碼範圍內的玩家造成物理傷害,並附加擊退\n撞擊到障礙物後停止,自身昏迷 3 秒")); //%thorns?
- BossActor_List.Add(new DAV_KeyActor("Man Carver", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_fire_10foot), new DAV_BossSkill("Man Carver", "火焰印記", 1f, 12, "", "釋放火焰符文陣,符文爆破對 10 碼範圍內的玩家造成火焰傷害(可觸發1次荊棘傷害)\n然後符文地面對範圍內的玩家造成最大每秒火焰傷害(不可觸發荊棘傷害),持續 15 秒")); //%thorns?
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_fanofchains), new DAV_BossSkill("Man Carver", "上古之矛", 0.75f, 10, "", "只有目標不在近戰範圍內時使用\n從左手鉤鐮擲出 10 根長矛穿透攻擊,對 60 碼範圍內的玩家造成物理傷害")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_05_telegraph), new DAV_BossSkill("Man Carver", "狠砸", 1f, 8,"", "原地跺腳,然後右手切肉斧攻擊\n對 5π/18 角度、 25 碼範圍內的玩家造成物理傷害,並附加擊退"));
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_chain_01_in), new DAV_BossSkill("Man Carver", "鉤叉+猛砸", 0.5f, 5, "", "只有目標不在近戰範圍內時使用\n右手切肉斧指向目標,然後擲出左手鉤鐮,對直線上的目標造成物理傷害,將其拉回身邊並附加昏迷,然後右手切肉斧猛砸攻擊,對 π/3 角度、 30 碼範圍內的玩家造成物理傷害"));
- // 奧拉什
- // needs work: skills on cooldowns in a difficult pattern
- // 絕滅
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Perdition", AnimSnoEnum._lordofdespair_attack_energyblast), new DAV_BossSkill("Perdition", "劈斬", 1f, 1, "", "近戰劈斬,動畫有雙持劍刃同時攻擊和右手劍刃單獨攻擊2種\n對 17π/9 角度、 16 碼範圍內的玩家造成物理傷害> 可觸發1次荊棘傷害,100%觸發係數"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Perdition", AnimSnoEnum._lordofdespair_attack_teleport_full), new DAV_BossSkill("Perdition", "傳送劈斬", 1f, 8, "可控制打斷", "雙劍豎直,緩慢抬起,然後閃現到目標位置劈斬\n對 12 碼範圍內的玩家造成物理傷害\n傳送位置追蹤瞄準目標,絕滅亦可以使用此技能以瞬移遠離玩家\n > 可觸發1次荊棘傷害,100%觸發係數"));
- BossSkill_List.Add(new DAV_KeyAnime("Perdition", AnimSnoEnum._lordofdespair_spellcast), new DAV_BossSkill("Perdition", "劍刃齊射", 1f, 11, "", "雙劍交叉,身體懸空,然後發射 12 枚投射物,造成物理傷害\n > 僅當玩家超過5碼時使用\n可觸發1次荊棘傷害,33%觸發係數"));
- // 佩倫迪
- // Good Skills
- BossActor_List.Add(new DAV_KeyActor("Perendi", ActorSnoEnum._x1_lr_boss_malletdemon_fallingrocks), new DAV_BossSkill("Perendi", "崩塌", 1f, 5, "適合觸發克利斯賓", "以棕黃色圓形標識,2 秒後釋放落石,對 20 碼範圍內的玩家造成 3 次物理傷害\n只有在有足夠的空間時才使用\n可觸發3次荊棘傷害,25%觸發係數"));
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Perendi", ActorSnoEnum._coreelitedemon_b_lr_boss), new DAV_BossSkill("Perendi", "召喚:碎石魔", 1f, 5, "", "碎石魔落地時會造成物理傷害並附加擊退\n每次釋放召喚 1 只,最大同時召喚 9 只\n達到上限依然繼續召喚,並且最早召喚的自動死亡")); // needs work: more frequent on enrage?
- // 雷茲爾
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Raiziel", AnimSnoEnum._x1_sniperangel_firebomb_01), new DAV_BossSkill("Raiziel", "閃電球", 1f, 2.5, "適合觸發克利斯賓", "投擲閃電球,轟擊目標區域 12 次\n每次衝擊對落點 6 碼範圍內的玩家造成閃電傷害,還會產生一道閃電箭\n閃電箭穿透目標,對路徑上的玩家造成閃電傷害\n僅當玩家超過5碼時使用")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Raiziel", AnimSnoEnum._x1_sniperangel_temp_cast_01), new DAV_BossSkill("Raiziel", "神聖新星", 0.75f, 8, "", "75%血量以下時扇形發射 7 枚神聖箭\n25%以下血量時圓形發射 13 枚神聖箭"));
- // 凝霜
- // Good Skills
- BossActor_List.Add(new DAV_KeyActor("Rime", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_cold_10foot), new DAV_BossSkill("Rime", "霜池", 1f, 6, "", "雙手抬起,以藍白色圓形標識,以 0.15 秒的間隔連續釋放 4 ~ 6 個小型冰霜爆破\n0.5 秒後冰霜爆炸對 10 碼範圍內的玩家造成冰霜傷害(可觸發荊棘傷害)\n然後冰霜衝擊對範圍內的玩家造成每秒冰霜傷害,持續 3 秒(不觸發荊棘傷害)。\n雙手抬起時、藍白色圓形標識出現前可以打斷。\n多個冰霜爆破的傷害疊加(暴雪宣稱不會疊加)\n有時會連續釋放 2 次。"));
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Rime", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_cold_20foot), new DAV_BossSkill("Rime", "霜環", 1f, 6, "", "雙手抬起,以藍白色圓形標識,釋放 1 個大型冰霜爆破\n1.5 秒後冰霜爆炸對 20 碼範圍內的玩家造成冰霜傷害(可觸發荊棘傷害)\n然後冰霜衝擊對範圍內的玩家造成每秒冰霜傷害,持續 2.5 秒(不觸發荊棘傷害)。\n雙手抬起時、藍白色圓形標識出現前可以打斷。\n受到近戰攻擊時釋放。"));
- BossActor_List.Add(new DAV_KeyActor("Rime", ActorSnoEnum._x1_unique_monster_generic_projectile_cold), new DAV_BossSkill("Rime", "冰霜飛彈", 1f, 6, "", "凝聚藍白色光斑,然後發射 3 枚冰球,造成冰霜傷害。\n發射方向始終瞄準目標\n無法打斷。"));
- // 塑沙者
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_direct_cast_04), new DAV_BossSkill("Sand Shaper", "灼熱巨岩", 1f, 2.5,"", "右手前推,發射熔融巨岩,對 6 碼範圍內的玩家造成火焰傷害")); //%thorns?
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_aoe_01), new DAV_BossSkill("Sand Shaper", "崩塌", 0.65f, 9, "適合觸發克利斯賓", "左手伸向天空,然後釋放落石,對 20 碼範圍內的玩家造成 3 次物理傷害\n可觸發3次荊棘傷害,25%觸發係數")); // change by DAV 75% HP to 65% HP @DAV Cave In is locked after 40%, can you code this in? //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_taunt_01), new DAV_BossSkill("Sand Shaper", "嘲諷", 1f, 8));
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_omni_cast_05_fadeout), new DAV_BossSkill("Sand Shaper", "傳送", 1f, 7));
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_omni_cast_01), new DAV_BossSkill("Sand Shaper", "能量旋風", 0.75f, 4.5, "", "左手抬起,釋放奧術氣旋,每 0.25 秒對 5 碼範圍內的玩家造成奧術傷害,持續 30 秒"));
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_omni_cast_04), new DAV_BossSkill("Sand Shaper", "時間延緩", 0.65f, 12, "", "右手揮舞,釋放扭曲時空的減速罩,令 15 碼範圍內的玩家移動速度降低 50%,投射物速度降低 50%,持續 16 秒"));
- // 薩克崔斯
- // Normal Skills
- //BossActor_List.Add(new DAV_KeyActor("Saxtris", ActorSnoEnum._zoltunkulle_energytwister), new DAV_BossSkill("Saxtris", "能量旋風", 1f, 6, "", "持續30秒"));
- BossSkill_List.Add(new DAV_KeyAnime("Saxtris", AnimSnoEnum._snakeman_melee_generic_cast_01), new DAV_BossSkill("Saxtris", "召喚", 0.75f, 1, "上限15", "75%血量以下解鎖飛翼幼蟲\n > 50%血量以下解鎖蛇仔\n每次釋放召喚 10 只,最大同時召喚 15 只"));
- // 岩石詠唱者
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Stonesinger", AnimSnoEnum._sandmonster_temp_rock_throw), new DAV_BossSkill("Stonesinger", "重擊", 1f, 2,"", "近戰打擊,動畫左右手連續揮動\n > 對 4 碼範圍內的玩家造成 2 次物理傷害\n可觸發2次荊棘傷害,50%觸發係數")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Stonesinger", AnimSnoEnum._sandmonsterblack_attack_03_sandwall), new DAV_BossSkill("Stonesinger", "召喚:裂隙", 1f, 7, "上限6", "雙手觸地,召喚裂隙,裂隙可以釋放轟炮\n > 最多同時召喚 6 個"));
- // 特斯瑞斯
- // Good Skills
- BossActor_List.Add(new DAV_KeyActor("Tethrys", ActorSnoEnum._x1_adria_geyser), new DAV_BossSkill("Tethrys", "火焰風暴", 0.6f, 9, "適合觸發克利斯賓", "雙手前伸,釋放 4 個火焰風暴陣,2 秒後啟動\n火焰爆破對 6 碼範圍內的玩家造成火焰傷害\n然後風暴陣地面對並範圍內的玩家造成最大每秒 3 倍火焰傷害,持續 2.5 秒")); //%thorns?
- // Normal Skills
- //BossActor_List.Add(new DAV_KeyActor("Tethrys", ActorSnoEnum._x1_unique_monster_generic_projectile_fire), new DAV_BossSkill("Tethrys", "火焰飛彈", 1f, 3)); // Unpredictable; needs further testing
- BossActor_List.Add(new DAV_KeyActor("Tethrys", ActorSnoEnum._succubus_bloodstar_projectile), new DAV_BossSkill("Tethrys", "血之星", 1f, 9, "", "雙手前伸,發射血之星,對擊中 3 碼範圍內的玩家造成物理傷害\n並附加血光詛咒,降低 35% 護甲,持續 5 秒。\n血之星會追蹤玩家")); // Unpredictable; needs further testing
- // 纏絲女魔
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Binder", AnimSnoEnum._mistressofpain_attack_spellcast_poison), new DAV_BossSkill("The Binder", "苦痛刺針", 0.65f, 3, "", "口部發出黃色亮光,然後發射 6 ~ 8 根黃色毒針,造成毒素傷害,可穿透")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Binder", AnimSnoEnum._mistressofpain_attack_spellcast_summon_webpatch), new DAV_BossSkill("The Binder", "蛛網", 1f, 8, "", "噴吐蛛網,令 10 碼範圍內玩家的移動速度降低 50%,持續 30 秒"));
- // 掐脖者
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Choker", AnimSnoEnum._x1_squigglet_taunt_01), new DAV_BossSkill("The Choker", "劇毒爆破", 0.75f, 19, "適合觸發克利斯賓", "身體後仰並吼叫,然後雙手抬起,以綠色圓形標識\n釋放 1 個大型劇毒爆破,1.5 秒後爆炸對 20 碼範圍內的玩家造成毒素傷害\n然後再度雙手抬起,以綠色圓形標識,以 0.01 秒的間隔連續釋放 18 ~ 22 個小型劇毒爆破\n1 秒後爆炸對 10 碼範圍內的玩家造成毒素傷害,然後劇毒衝擊對範圍內的玩家造成每秒毒素傷害,持續 2 秒。多個爆破的傷害疊加。\n雙手抬起時、綠色圓形標識出現前可以打斷。大小爆破需要分別打斷")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Choker", AnimSnoEnum._x1_squigglet_generic_cast), new DAV_BossSkill("The Choker", "召喚:軟泥怪", 1f, 4, "上限10", "每次釋放召喚 2 ~ 3 只,最大同時召喚 10 只"));
- // 威塞留斯
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Vesalius", AnimSnoEnum._p6_envy_cast_02), new DAV_BossSkill("Vesalius", "冰霜飛彈", 1f, 1, "可控制打斷", "右手凝聚青色光暈,然後左手發射 4 枚冰彈,造成冰霜傷害。\n發射方向始終瞄準目標")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Vesalius", AnimSnoEnum._p6_envy_teleport_start_02), new DAV_BossSkill("Vesalius", "傳送", 1f, 12, "可控制打斷", "雙手觸地,潛入一側蟲洞,1.5 秒後從另一側蟲洞鑽出。"));
- BossActor_List.Add(new DAV_KeyActor("Vesalius", ActorSnoEnum._x1_monsteraffix_frozenpulse_monster), new DAV_BossSkill("Vesalius", "冰脈", 1f, 6, "", "生命值越低,釋放頻率越高"));
- BossActor_List.Add(new DAV_KeyActor("Vesalius", ActorSnoEnum._x1_monsteraffix_teleportmines), new DAV_BossSkill("Vesalius", "蟲洞", 1f, 9, "", "生命值越低,釋放頻率越高"));
- // 貪食魔
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Voracity", AnimSnoEnum._gluttony_attack_areaeffect), new DAV_BossSkill("Voracity", "毒雲", 1f, 11, "", "搖擺身體,在自身和目標位置各製造一團毒雲,對 19 碼範圍內的玩家造成最大每秒 3 倍毒素傷害,持續 75 秒\n玩家在毒雲中每停留 0.5 秒,持續傷害便會堆疊 1 層,5 秒後達到最大 10 層\n多團毒雲會同時疊加傷害層數,但最大傷害層數不會疊加\n在骷髏進入毒雲之前控制觸發克利斯賓\n每次進入毒雲時可觸發1次荊棘傷害,20%觸發係數"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Voracity", AnimSnoEnum._gluttony_attack_sneeze), new DAV_BossSkill("Voracity", "噴吐", 0.4f, 4, "", "身體前傾,噴吐毒物,並污染地面,對 5 碼範圍內的玩家造成毒素傷害,持續 2 秒\n可觸發3次荊棘傷害,33%觸發係數"));
- BossSkill_List.Add(new DAV_KeyAnime("Voracity", AnimSnoEnum._gluttony_attack_ranged_01), new DAV_BossSkill("Voracity", "召喚:強酸黏液", 0.65f, 6, "上限4", "每次釋放召喚 2 只,最大同時召喚 4 只"));
- /* // Agnidox
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Agnidox", AnimSnoEnum._demonflyer_mega_firebreath_01), new DAV_BossSkill("Agnidox", "Flame Breath", 1f, 7, "", "> Only used when a player is within 15 yards\n> Procs 4 ticks of thorns @ 100%/tick)"));
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Agnidox", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_fire_10foot), new DAV_BossSkill("Agnidox", "Mark of Fire", 1f, 12, "", "> 10-yard radius, lasts 5s"));// tiered CDs, 9s at lower HP; needs further testing
- BossActor_List.Add(new DAV_KeyActor("Agnidox", ActorSnoEnum._x1_unique_monster_generic_projectile_fire), new DAV_BossSkill("Agnidox", "Fire Ball", 1f, 4, "", ""));
- BossActor_List.Add(new DAV_KeyActor("Agnidox", ActorSnoEnum._grenadier_proj_mortar_inpact), new DAV_BossSkill("Agnidox", "Mortar", 1f, 3, "", ""));
- //Fire Nova lacks animation and actor
- // Blighter
- BossSkill_List.Add(new DAV_KeyAnime("Blighter", AnimSnoEnum._creepmob_attack_04_in), new DAV_BossSkill("Blighter", "Plagued Line", 1f, 5));
- BossSkill_List.Add(new DAV_KeyAnime("Blighter", AnimSnoEnum._creepmob_generic_cast), new DAV_BossSkill("Blighter", "Poison Nova", 1f, 5));
- BossSkill_List.Add(new DAV_KeyAnime("Blighter", AnimSnoEnum._creepmob_attack_04_middle), new DAV_BossSkill("Blighter", "Plague Storm", 0.5f, 10));
- // Bloodmaw
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Bloodmaw", AnimSnoEnum._x1_westmarchbrute_taunt), new DAV_BossSkill("Bloodmaw", "Leap", 1f, 21, "Stun for Krysbins", "> Procs 5 ticks of thorns per pool @ 100%/tick"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Bloodmaw", AnimSnoEnum._x1_westmarchbrute_b_attack_06_in), new DAV_BossSkill("Bloodmaw", "Leaping Strike", 1f, 5));
- // Bone Warlock
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Bone Warlock", AnimSnoEnum._skeletonsummoner_attack_01), new DAV_BossSkill("Bone Warlock", "Arcane Bolt", 1f, 2, "Stun for Krysbins")); //%thorns?
- // Cold Snap
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Cold Snap", AnimSnoEnum._bigred_firebreath_combo_01), new DAV_BossSkill("Cold Snap", "Frozen Nova", 1f, 16, "", "> Procs 1 tick of thorns @ 100%/tick"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Cold Snap", AnimSnoEnum._bigred_charge_01), new DAV_BossSkill("Cold Snap", "Charge", 1f, 6, "", "> Only used when players are beyond 15 yards"));
- var tmpskill = new DAV_KeyActor("Cold Snap", ActorSnoEnum._x1_monsteraffix_frozenpulse_monster);
- BossActor_List.Add(tmpskill, new DAV_BossSkill("Cold Snap", "Frozen Pulse", 0.75f, 10, "", "> Unlocks at 75% HP"));
- BossActor_List[tmpskill].AddSecendCD(0.5f, 7);
- BossActor_List.Add(new DAV_KeyActor("Cold Snap", ActorSnoEnum._monsteraffix_frozen_iceclusters), new DAV_BossSkill("Cold Snap", "Frozen Storm", 0.5f, 8, "> Unlocks at 50% HP", "> Insignificant thorns effect against this skill"));
- // Crusader King
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Crusader King", AnimSnoEnum._skeletonking_whirlwind_start), new DAV_BossSkill("Crusader King", "Triple Swing", 1f, 20, "Stun for Krysbins", "> Swings 4 times\n> Procs 1 tick of thorns per swing, @ 100%/tick"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Crusader King", AnimSnoEnum._skeletonking_teleport), new DAV_BossSkill("Crusader King", "Teleport", 1f, 9, "Stun to interrupt", ""));
- BossSkill_List.Add(new DAV_KeyAnime("Crusader King", AnimSnoEnum._skeletonking_cast_summon), new DAV_BossSkill("Crusader King", "Summonning", 1f, 15, "Stun to interrupt", "> Caps at 14 (2 waves)"));
- // Ember
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Ember", AnimSnoEnum._morluspellcaster_attack_aoe_01), new DAV_BossSkill("Ember", "Meteor", 1f, 5, "Stun for Krysbins")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Ember", AnimSnoEnum._morluspellcaster_generic_cast), new DAV_BossSkill("Ember", "Summoning", 0.95f, 4, "","> Fallen Lunatics (95%),\n> Fallen Shaman (60%),\n> Caps at 5 shamans")); // change by DAV 1f to 0.95f > ty ^.^
- // Erethon
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Erethon", AnimSnoEnum._angel_corrupt_attack_dash_in), new DAV_BossSkill("Erethon", "Dash", 1f, 8,"", "> Short Dash triggered when any player is beyond 5 yards\n> Long Dash triggered when any player is beyond 15 yards")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Erethon", AnimSnoEnum._x1_lr_boss_angel_corrupt_a_cast_01), new DAV_BossSkill("Erethon", "Poison Blast", 1f, 3)); //%thorns?
- // Eskandiel
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Eskandiel", AnimSnoEnum._x1_dark_angel_cast), new DAV_BossSkill("Eskandiel", "Repulsion Wave", 1f, 3)); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Eskandiel", AnimSnoEnum._x1_dark_angel_attack_02), new DAV_BossSkill("Eskandiel", "Vortex", 1f, 11, "", "Only used when players are beyond 25 yards"));
- BossActor_List.Add(new DAV_KeyActor("Eskandiel", ActorSnoEnum._arcaneenchanteddummy_spawn), new DAV_BossSkill("Eskandiel", "Arcane", 1f, 4, "", ""));
- // Hamelin
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Hamelin", ActorSnoEnum._p4_ratking_thunderdome_proxyactor), new DAV_BossSkill("Hamelin", "Plagued Arena", 1f, 12, "", "Lasts for 10s"));
- // headbutt has no unique animation
- // Infernal Maiden
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_attack_04_aoe), new DAV_BossSkill("Infernal Maiden", "Overhead Smash", 1f, 14, "", "> Procs 2 tick of thorns @ 100%/tick"));
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_attack_special_360_01), new DAV_BossSkill("Infernal Maiden", "Spinning Attack", 1f, 11, "", "> Procs 4 tick of thorns @ 50%/tick"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_attack_special_flip_01), new DAV_BossSkill("Infernal Maiden", "Fire Nova", 0.45f, 25, "", "> Unlocks at 45% HP\n> Insignificant thorns effect against this skill"));
- BossSkill_List.Add(new DAV_KeyAnime("Infernal Maiden", AnimSnoEnum._x1_deathmaiden_temp_cast_01), new DAV_BossSkill("Infernal Maiden", "Teleport", 1f, 7));
- // Man Carver
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_charge_01_in), new DAV_BossSkill("Man Carver", "Charge", 1f, 19)); //%thorns?
- BossActor_List.Add(new DAV_KeyActor("Man Carver", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_fire_10foot), new DAV_BossSkill("Man Carver", "Mark of Fire", 1f, 12, "", "> 10-yard radius, lasts 15s")); //%thorns?
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_fanofchains), new DAV_BossSkill("Man Carver", "Fan of Spears", 0.75f, 12, "", "> Unlocks at 75% HP")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_05_telegraph), new DAV_BossSkill("Man Carver", "Heavy Smash", 1f, 11));
- BossSkill_List.Add(new DAV_KeyAnime("Man Carver", AnimSnoEnum._butcher_attack_chain_01_in), new DAV_BossSkill("Man Carver", "Sickle Grab", 0.5f, 12, "", "> Unlocks at 50% HP"));
- // Orlash
- // needs work: skills on cooldowns in a difficult pattern
- // Perdition
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Perdition", AnimSnoEnum._lordofdespair_attack_energyblast), new DAV_BossSkill("Perdition", "Blade Cleave", 1f, 1, "", "> Procs 1 tick of thorns @ 100%/tick"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Perdition", AnimSnoEnum._lordofdespair_attack_teleport_full), new DAV_BossSkill("Perdition", "Blink Strike", 1f, 11, "Stun to interrupt", "> Procs 1 tick of thorns @ 100%/tick"));
- BossSkill_List.Add(new DAV_KeyAnime("Perdition", AnimSnoEnum._lordofdespair_spellcast), new DAV_BossSkill("Perdition", "Volley", 1f, 11, "", "> Only used when players are beyond 5 yards\n> Procs 1 tick of thorns @ 33%/tick"));
- // Perendi
- // Good Skills
- BossActor_List.Add(new DAV_KeyActor("Perendi", ActorSnoEnum._x1_lr_boss_malletdemon_fallingrocks), new DAV_BossSkill("Perendi", "Cave In", 1f, 5, "Stun for Krysbins", "> Only used when there is enough space\n> Procs 3 ticks of thorns @ 25%/tick)"));
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Perendi", ActorSnoEnum._coreelitedemon_b_lr_boss), new DAV_BossSkill("Perendi", "Summoning", 1f, 6)); // needs work: more frequent on enrage?
- // Raiziel
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Raiziel", AnimSnoEnum._x1_sniperangel_firebomb_01), new DAV_BossSkill("Raiziel", "Lightning Orb", 1f, 3, "Stun for Krysbins", "> Only used when players are beyond 5 yards")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Raiziel", AnimSnoEnum._x1_sniperangel_temp_cast_01), new DAV_BossSkill("Raiziel", "Holy Bolt Nova", 0.75f, 8, "", "> Volley of 7 holy dmg bolts (wide arc) when below 75% HP\n> Volley of 13 holy dmg bolts (360) when below 25% HP"));
- // Rime
- // Good Skills
- BossActor_List.Add(new DAV_KeyActor("Rime", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_cold_10foot), new DAV_BossSkill("Rime", "Frost Pools", 1f, 6, "", "> Procs 1 tick of thorns @ 100%/tick"));
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Rime", ActorSnoEnum._x1_unique_monster_generic_aoe_dot_cold_20foot), new DAV_BossSkill("Rime", "Frost Ring", 1f, 6, "", "> Procs 1 tick of thorns @ 100%/tick"));
- BossActor_List.Add(new DAV_KeyActor("Rime", ActorSnoEnum._x1_unique_monster_generic_projectile_cold), new DAV_BossSkill("Rime", "Volley", 1f, 6, "", ""));
- // Sand Shaper
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_direct_cast_04), new DAV_BossSkill("Sand Shaper", "Fire Ball", 1f, 3)); //%thorns?
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_aoe_01), new DAV_BossSkill("Sand Shaper", "Cave In", 0.65f, 9, "Stun for Krysbins", "> Unlocks at 65% HP, unavailable after 40% HP")); // change by DAV 75% HP to 65% HP @DAV Cave In is locked after 40%, can you code this in? //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_taunt_01), new DAV_BossSkill("Sand Shaper", "Taunt", 1f, 8));
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_omni_cast_05_fadeout), new DAV_BossSkill("Sand Shaper", "Teleport", 1f, 7));
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_omni_cast_01), new DAV_BossSkill("Sand Shaper", "Twister", 0.75f, 5, "", "> Unlocks at 75% HP"));
- BossSkill_List.Add(new DAV_KeyAnime("Sand Shaper", AnimSnoEnum._zoltunkulle_omni_cast_04), new DAV_BossSkill("Sand Shaper", "Slow Time", 0.65f, 13, "", "> Unlocks at 65% HP"));
- // Saxtris
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Saxtris", ActorSnoEnum._zoltunkulle_energytwister), new DAV_BossSkill("Saxtris", "Twister", 1f, 8, "", "> Lasts 30s"));
- BossSkill_List.Add(new DAV_KeyAnime("Saxtris", AnimSnoEnum._snakeman_melee_generic_cast_01), new DAV_BossSkill("Saxtris", "Summoning", 0.75f, 1, "", "> Winged Larvae unlocks at 75% HP\n > Snakechild unlocks at 50% HP\n> Caps at two full sets"));
- // StoneSinger
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Stonesinger", AnimSnoEnum._sandmonster_temp_rock_throw), new DAV_BossSkill("Stonesinger", "Shovel", 1f, 2)); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Stonesinger", AnimSnoEnum._sandmonsterblack_attack_03_sandwall), new DAV_BossSkill("Stonesinger", "Summoning", 1f, 7));
- // Tethrys
- // Good Skills
- BossActor_List.Add(new DAV_KeyActor("Tethrys", ActorSnoEnum._x1_adria_geyser), new DAV_BossSkill("Tethrys", "Geyser", 0.6f, 9, "Stun for Krysbins", "> Unlocks at 60% HP\n> 4 pools")); //%thorns?
- // Normal Skills
- BossActor_List.Add(new DAV_KeyActor("Tethrys", ActorSnoEnum._x1_unique_monster_generic_projectile_fire), new DAV_BossSkill("Tethrys", "Fire Ball", 1f, 3)); // Unpredictable; needs further testing
- BossActor_List.Add(new DAV_KeyActor("Tethrys", ActorSnoEnum._succubus_bloodstar_projectile), new DAV_BossSkill("Tethrys", "Blood Star", 1f, 9)); // Unpredictable; needs further testing
- // The Binder
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Binder", AnimSnoEnum._mistressofpain_attack_spellcast_poison), new DAV_BossSkill("The Binder", "Poison Spit", 0.65f, 3, "", "> Unlocks at 65% HP")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Binder", AnimSnoEnum._mistressofpain_attack_spellcast_summon_webpatch), new DAV_BossSkill("The Binder", "Net Toss", 1f, 8, "", "> Insignificant thorns effect against this skill"));
- // The Choker
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Choker", AnimSnoEnum._x1_squigglet_taunt_01), new DAV_BossSkill("The Choker", "Plagued Circle", 0.75f, 19, "Stun for Krysbins", "> Unlocks at 75% HP")); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("The Choker", AnimSnoEnum._x1_squigglet_generic_cast), new DAV_BossSkill("The Choker", "Summoning", 1f, 4, "", "> Slimes (100%),\n> Caps at 10"));
- // Vesalius
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Vesalius", AnimSnoEnum._p6_envy_cast_02), new DAV_BossSkill("Vesalius", "Energy Barrage", 1f, 1)); //%thorns?
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Vesalius", AnimSnoEnum._p6_envy_teleport_start_02), new DAV_BossSkill("Vesalius", "Gateway", 1f, 12, "Stun to interrupt"));
- BossActor_List.Add(new DAV_KeyActor("Vesalius", ActorSnoEnum._x1_monsteraffix_frozenpulse_monster), new DAV_BossSkill("Vesalius", "Frozen Pulse", 1f, 6, "", ""));
- BossActor_List.Add(new DAV_KeyActor("Vesalius", ActorSnoEnum._x1_monsteraffix_teleportmines), new DAV_BossSkill("Vesalius", "Wormhole", 1f, 9, "", ""));
- // Voracity
- // Good Skills
- BossSkill_List.Add(new DAV_KeyAnime("Voracity", AnimSnoEnum._gluttony_attack_areaeffect), new DAV_BossSkill("Voracity", "Fart Cloud", 1f, 11, "", "> Stun just before Skeletons enter Fart Cloud for Krysbins\n> Procs 1 tick of thorns per Cloud, per entry @ 20%/tick"));
- // Normal Skills
- BossSkill_List.Add(new DAV_KeyAnime("Voracity", AnimSnoEnum._gluttony_attack_sneeze), new DAV_BossSkill("Voracity", "Vile Spew", 0.4f, 4, "", "> Unlocks at 40% HP\n> Procs 1 tick of thorns @ 33%/tick"));
- BossSkill_List.Add(new DAV_KeyAnime("Voracity", AnimSnoEnum._gluttony_attack_ranged_01), new DAV_BossSkill("Voracity", "Summoning", 0.65f, 6, "", "> Acid Slime (65%),\ncaps at 4"));
- */
- }
- public void PaintWorld(WorldLayer layer) {
- if (Hud.Game.SpecialArea != SpecialArea.GreaterRift) return ;
- if (Hud.Game.RiftPercentage < 100) return;
- float bosslife = 1f;
- var bosses = Hud.Game.AliveMonsters.Where(m => m.Rarity == ActorRarity.Boss && m.SummonerAcdDynamicId == 0);
- foreach(IMonster m in bosses) {
- if (!BossFlight) {
- BossFlight = true;
- BossSkill_This.Clear();
- BossActor_This.Clear();
- preSkill.BossAnime = AnimSnoEnum._p7_cos_pet_azmodan_walk;
- thisActor.BossActor = ActorSnoEnum._p7_cos_wings_cosmic_bat_01_wdm;
- preSkill.Name = m.SnoMonster.NameEnglish;
- thisActor.Name = m.SnoMonster.NameEnglish;
- var curTime = Hud.Game.CurrentGameTick / 60d;
- foreach(KeyValuePair<DAV_KeyAnime, DAV_BossSkill> BossSkill in BossSkill_List)
- if(BossSkill.Value.Name == m.SnoMonster.NameEnglish)
- BossSkill_This.Add(BossSkill.Key.BossAnime, curTime - BossSkill.Value.CooldownTime);
- foreach(KeyValuePair<DAV_KeyActor, DAV_BossSkill> BossActor in BossActor_List)
- if(BossActor.Value.Name == m.SnoMonster.NameEnglish)
- BossActor_This.Add(BossActor.Key.BossActor, curTime - BossActor.Value.CooldownTime);
- }
- bosslife = (float) (m.CurHealth / m.MaxHealth);
- if (bosslife < 0 || bosslife > 1)
- bosslife = 1;
- if (m.Animation == preSkill.BossAnime) continue;
- preSkill.BossAnime = m.Animation;
- if (!BossSkill_List.ContainsKey(preSkill)) continue;
- var cTime = Hud.Game.CurrentGameTick / 60d;
- if (showDebug) {
- var tmplist = BossSkill_List[preSkill];
- var curCD = (tmplist.ChangeCD && bosslife < tmplist.ChangeCD_time) ? tmplist.ChangeCD_valve : tmplist.CooldownTime;
- BossSkill_List[preSkill].CooldownDebug = cTime - BossSkill_This[preSkill.BossAnime] - curCD;
- }
- BossSkill_This[preSkill.BossAnime] = cTime;
- }
- if (!BossFlight) return;
- var yref = YPos;
- if (BossSkill_This.Count > 0) {
- var tmpanime = new DAV_KeyAnime(preSkill.Name, AnimSnoEnum._p7_cos_pet_azmodan_walk);
- foreach(KeyValuePair<AnimSnoEnum, double> BossCD in BossSkill_This) {
- tmpanime.BossAnime = BossCD.Key;
- BossSkillPaint(BossSkill_List[tmpanime], BossCD.Value, bosslife, ref yref);
- }
- }
- if (BossActor_This.Count == 0) return;
- var bossActor = Hud.Game.Actors.Where(a => a.LastSpeak == null && BossActor_This.ContainsKey(a.SnoActor.Sno));
- foreach (var actor in bossActor) {
- var cTime = Hud.Game.CurrentGameTick / 60d;
- thisActor.BossActor = actor.SnoActor.Sno;
- if (showDebug) {
- var tmplist = BossActor_List[thisActor];
- var curCD = (tmplist.ChangeCD && bosslife < tmplist.ChangeCD_time) ? tmplist.ChangeCD_valve : tmplist.CooldownTime;
- BossActor_List[thisActor].CooldownDebug = cTime - BossActor_This[actor.SnoActor.Sno] - curCD;
- }
- actor.LastSpeak = Hud.Time.CreateWatch();
- BossActor_This[actor.SnoActor.Sno] = cTime;
- }
- var tmpactor = new DAV_KeyActor(thisActor.Name, ActorSnoEnum._p7_cos_wings_cosmic_bat_01_wdm);
- foreach(KeyValuePair<ActorSnoEnum, double> BossCD in BossActor_This) {
- tmpactor.BossActor = BossCD.Key;
- BossSkillPaint(BossActor_List[tmpactor], BossCD.Value, bosslife, ref yref);
- }
- }
- public void OnNewArea(bool newGame, ISnoArea area) {
- BossFlight = false;
- }
- public void BossSkillPaint(DAV_BossSkill skillData, double preCDvalue, float bosslife, ref float yref) {
- if (skillData == null || string.IsNullOrEmpty(skillData.SkillName)) return;
- var text = skillData.SkillName;
- if (!string.IsNullOrEmpty(skillData.HintShort))
- text += " (" + skillData.HintShort + ")";
- var textLayout = SkillFont.GetTextLayout(text);
- SkillFont.DrawText(text, XPos, yref);
- var rect = new RectangleF(XPos, yref, barW, barH + textLayout.Metrics.Height * 1.2f);
- yref += textLayout.Metrics.Height * 1.2f;
- if (bosslife > skillData.AvailableTime) {
- Brush_NA.DrawRectangle(XPos, yref, barW, barH);
- text = "Ready at Life " + skillData.AvailableTime.ToString("0%");
- }
- else {
- var curCD = (skillData.ChangeCD && bosslife < skillData.ChangeCD_time) ? skillData.ChangeCD_valve : skillData.CooldownTime;
- var skillCD = curCD - (Hud.Game.CurrentGameTick / 60d - preCDvalue);
- if (skillCD < 0) {
- Brush_Ready.DrawRectangle(XPos, yref, barW, barH);
- text = "Ready to Cast";
- }
- else {
- Brush_BG.DrawRectangle(XPos, yref, barW, barH);
- Brush_CD.DrawRectangle(XPos, yref, (float) (barW * skillCD / curCD), barH);
- text = skillCD.ToString(CDformat) + "s";
- }
- }
- textLayout = SkillFont.GetTextLayout(text);
- SkillFont.DrawText(text, XPos + 3, yref + (barH - textLayout.Metrics.Height)/2);
- if (showDebug) SkillFont.DrawText(skillData.CooldownDebug.ToString("F1") + "s | life: " + bosslife.ToString("F2"), XPos + 3 + barW, yref + (barH - textLayout.Metrics.Height)/2);
- yref += barH * 1.3f;
- if (!string.IsNullOrEmpty(skillData.HintHided) && Hud.Window.CursorInsideRect(rect.X, rect.Y, rect.Width, rect.Height))
- Hud.Render.SetHint(skillData.HintHided);
- }
- }
- public class DAV_KeyActor {
- public string Name { get; set; }
- public ActorSnoEnum BossActor { get; set; }
- public DAV_KeyActor(string name, ActorSnoEnum actor) {
- Name = name;
- BossActor = actor;
- }
- public class EqualityComparer : IEqualityComparer<DAV_KeyActor> {
- public bool Equals(DAV_KeyActor x, DAV_KeyActor y) { return x.Name == y.Name && x.BossActor == y.BossActor; }
- public int GetHashCode(DAV_KeyActor obj) {
- string combined = obj.Name + "|" + obj.BossActor.ToString();
- return combined.GetHashCode();
- }
- }
- }
- public class DAV_KeyAnime {
- public string Name { get; set; }
- public AnimSnoEnum BossAnime { get; set; }
- public DAV_KeyAnime(string name, AnimSnoEnum anime) {
- Name = name;
- BossAnime = anime;
- }
- public class EqualityComparer : IEqualityComparer<DAV_KeyAnime> {
- public bool Equals(DAV_KeyAnime x, DAV_KeyAnime y) { return x.Name == y.Name && x.BossAnime == y.BossAnime; }
- public int GetHashCode(DAV_KeyAnime obj) {
- string combined = obj.Name + "|" + obj.BossAnime.ToString();
- return combined.GetHashCode();
- }
- }
- }
- public class DAV_BossSkill {
- public string Name { get; set; }
- public string SkillName { get; set; }
- public string HintShort { get; set; }
- public string HintHided { get; set; }
- public float AvailableTime { get; set; }
- public double CooldownTime { get; set; }
- public double CooldownDebug { get; set; }
- public bool ChangeCD { get; set; }
- public float ChangeCD_time { get; set; }
- public double ChangeCD_valve { get; set; }
- public DAV_BossSkill(string name, string skill, float life, double CD, string Desc = "", string hideMsg = "") {
- Name = name;
- SkillName = skill;
- HintShort = Desc;
- HintHided = hideMsg;
- AvailableTime = life;
- CooldownTime = CD;
- CooldownDebug = 0d;
- ChangeCD = false;
- }
- public void AddSecendCD(float life, double CD) {
- ChangeCD = true;
- ChangeCD_time = life;
- ChangeCD_valve = CD;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement