So this is the healing logic code ATM for this cc if anyone wants to add suggestions their more then welcome to. If you feel like something is missing in the logic say so I've got a month and a half of vacation left so m-th ill be working on this like 14+ hours a day and f-sun ill do so in the morning's since i still want to party during my vacation I'll give credit where its due and take any and all suggestions on improvements. Purpose: Healing Logic that outheals all Human players. Only Designed for lvl 85's atm with instances/raids in mind. other additions such as pvp to come later. Code: if (GotBuff("Nature's Swiftness") && CanCast("Healing Touch", tar) && (Me.Combat || tar.Combat)) { s = "Healing Touch"; } else if (hp < 15 && !GotBuff("Nature's Swiftness") && CanCast("Nature's Swiftness")) { s = "Nature's Swiftness"; } else if (hp < 25 && !GotBuff("Nature's Grace") && CanCast("Regrowth", tar) && (!(ng.ElapsedMilliseconds < 45000) || (ng.ElapsedMilliseconds == 0))) { s = "Regrowth"; ng.Restart(); } else if (hp < 35 && GotBuff("Nature's Grace") && CanCast("Healing Touch", tar)) { s = "Healing Touch"; } //Tree of Life else if (ShouldTree(3)) { s = "Tree of Life"; } else if (GotBuff("Tree of Life") && CanCast("Wild Growth")) {tar = Clusters.GetBestUnitForCluster(Unit.NearbyFriendlyPlayers, ClusterType.Radius, 30f); s = "Wild Growth";} else if (GotBuff("Tree of Life") && CanCast("Tranquility")) { s = "Tranquility"; } //End Tree of Life else if (ShouldTranquility(3)) { s = "Swiftmend"; } else if (hp < 70 && GotBuff("Nature's Grace") && CanCast("Healing Touch", tar)) { s = "Healing Touch"; } else if (hp < 70 && GotBuff("Clearcast") && CanCast("Healing Touch", tar)) { s = "Healing Touch"; } else if (hp < 80 && GotBuff("Clearcast") && CanCast("Regrowth", tar)) { s = "Regrowth"; } //Tank HoT's else if (tar.Guid == tank.Guid && CanCast("Lifebloom") && !GotBuff("Lifebloom", tar)) { s = "Lifebloom"; Logging.Write("Tank doesn't have Lifebloom"); } else if (tar.Guid == tank.Guid && CanCast("Lifebloom") && GotBuff("Lifebloom", tar) && tar.ActiveAuras["Lifebloom"].StackCount < 3) { s = "Lifebloom"; Logging.Write("Tank has less than 3 stacks of Lifebloom"); } else if (tar.Guid == tank.Guid && CanCast("Lifebloom") && GotBuff("Lifebloom", tar) && tar.ActiveAuras["Lifebloom"].TimeLeft.TotalMilliseconds <= 1500 && hp > 50) { Logging.Write("Tank's HP is more than 60% and Lifebloom's duration is {1}", tar.HasAura("Lifebloom")? tar.ActiveAuras["Lifebloom"].TimeLeft.TotalMilliseconds : 1500); s = "Lifebloom"; } else if (hp < 90 && tar.Guid == tank.Guid && CanCast("Rejuvenation", tar)) { s = "Rejuvenation"; } //End of Tank HoT's else if (hp < 85 && CanCast("Rejuvenation",tar) && (tar.ActiveAuras.ContainsKey("Rejuvenation") || tar.ActiveAuras.ContainsKey("Regrowth"))) { s = "Swiftmend"; } else if (ShouldWildGrowth(2) && CanCast("Wild Growth", tar)) { tar = Clusters.GetBestUnitForCluster(Unit.NearbyFriendlyPlayers, ClusterType.Radius, 30f); s = "Wild Growth"; } else if (ShouldEfflorescence(2) && CanCast("Swiftmend",tar)) { tar = Clusters.GetBestUnitForCluster(Unit.NearbyFriendlyPlayers, ClusterType.Radius, 8f); s = "Swiftmend"; } else if (hp < 85 && CanCast("Rejuvenation",tar) && !tar.ActiveAuras.ContainsKey("Rejuvenation")) { s = "Rejuvenation"; } else if (hp < 90 && CanCast("Rejuvenation",tar) && (tar.ActiveAuras.ContainsKey("Rejuvenation") || tar.ActiveAuras.ContainsKey("Regrowth") || tar.ActiveAuras.ContainsKey("Wild Growth") || tar.ActiveAuras.ContainsKey("Lifebloom"))) { s = "Nourish"; } else if (hp < 70 && CanCast("Healing Touch",tar)) { s = "Healing Touch"; } Current Credits go to: Sm0k3d and his pally CC i used his as the Base for the cc and then modified it to suit me. Apoc and the Singuler CC team I Stole some code from them for cluster's and friendly unit's fpsware for his help and suggestion for Stopwatch usage much appreciated. CodenameG for his explanation on what Blacklist.X does was quite helpful.
can you have it to it has some settings since your making it for raids maybe a 1 click adjustable healing at 10% for chim and tranq on an off
Once I get it working with hard coded values I'll start on getting every value fully customizable. It's in the plan's
Some healing logic suggestions... To outheal human players (like shamwow does), you need to do things that humans cannot do... such as calculate distance between players when casting AOE heals... 1. Remember to /stopcast whenever target received heal during a long heal (to avoid overhealing or spending time casting unnecessary heals) 2. The tank or healer must NEVER die, even if a DPS should be sacrificed for that. I have seen many healing routines that fail for that. Even if a DPS is at 10% life, if teh tank is at 15 or 20% probably the bot should prioritize the tank and let the DPS die. Many healing bots try to keep "everyone" alive when tank (and everyone else) is taking massive damage. The concept of "sacrifice" must be implemented in any "perfect" healing scheme. When everyone is taking massive damage, and healing resources simply are "not enough", dps must be left 4 death and tank + healer combo must be prioritized. 3. Calculating "damage speed" for tank or DPS must be considered, not only raw "life left". if tank is at 20% but taking barely or no damage, and DPS is at 50% but losing life fast (usually when a DPS gets agro from tank), cooldowns should be spent at DPS... (for exemple, I always cast "earth shield" at a DPS that gets agro. 4. Cooldowns at tank should be spent calculated the same way.... not only based on raw HP left but also the speed that damage is taken (HP lost per second). When that hunter pet overagro the whole room, its time to use cooldowns even if tank is at 50%, but lost that 50% life in 2 seconds... well... those are my 50 cents
Hmm this is worth at least a full dollar But yea I like the way you think, I'm gonna be implementing this stuff into the ultimate pally healer cc. Thanks for the info
Well so far I have the smart aoe's in place calculates the distance from players and places it in the location where it is most beneficial, sacrificing dps over the tank and healer is going to take a bit more time. So whats left is prioritizing Tank & Healer, Pre-Casting, and prob some other stuff, I'm looking at making it multi threaded if that's possible. Don't know as of yet if anyone does feel free to let me know. I would release it but Hazzard accused me of plagiarizing his work. And thus I can't nor am i even going to bother to try and reverse it since quite frankly I was doing it for my self from the beginning, if anyone wants a copy you can pm. BTW thanks again Sm0kd for letting me use your cc as a base for mine <3, much love.
Really? Hazard isn't letting you use his work? That's stupid, you are giving credit where's it's due and it's for the good of the community...
I didn't even use anything from his, i stole like 95% of it from you lol. that's the sadist part. literally i took your scraped the heal logic and renamed the the spells and stuff and then added a little bit that's about all.
Haha well you added a decent amount for drood hots and stuff. But o well whatcha gonna do. Look at what he did and write it on your own. He can't say "o I wrote how you search for players in my cc you can't use it" cuz that's how you search for players in general. I know thats dumbing down the situation but it's code not literature... Anyway what were you trying to do with "hazard's code"
I was a little annoyed at first but it's not like it really hurts me, just means development will go a little slower. Since I can't get suggestions from others. Honestly it's the dumbest thing I've ever hear. I think the worst part about it all was that i even mentioned him in the credits. Overall I'll get it all working for myself and then people that want to use it can just message me less work and hassle for me. I mean really I make something and release it, I'm not getting paid, I had to pay!, and then on top of that people want to make headaches for me no thanks. I think the dumbest part about the whole thing is that when you write something for the same purpose and you write it using the same api(right word?) there will inherently be ALOT of similarity. its not like theres 10 was to call ObjectManager.GetObjectsOfType<WoWPlayer>(true, true) I mean you have to use that line. that or iterate though all the guids and build your own list just to avoid him saying he copied me which is stupid and inefficient. At this point I'm working on trying to prioritize the tank and healers health over dps and then track incoming dmg on party members, but i think that's going to eat up to much time and slow it down. I personally think some of the problems i'm having with CC's is that i have like a 400+ min ping. Dam Peru, vacation sounded great but ya the internet not so much. as far as what i tried to do with "hazard's code" lol, release it get some feedback etc. I'd think you'd be a bit miffed too considering most of it is your code.
Well glideroy and I are doing the same thing with our pally healing cc. Trying to calc incoming damage and prioritize tanks and healers.
ok well since the project cant be released, since its against the development rules, im going to lock the thread. but wildice i think this is an interesting project, so i wanna extend my knowledge and ability to help you fast track this project using 100% new code, or at least not what what the guy was claiming to be his. remember i did write Kaboomkin. oh and here is the development rules if you want to read them. http://www.thebuddyforum.com/honorb...2433-[rules]-cc-plugin-development-rules.html