Smaman Malaise VIII AA

neknet

Greenman
Joined
Jul 3, 2016
Messages
29
Reaction score
1
Points
3
bot seems to continually cast this. Doesn't prevent it from casting other things but seems to cast it every chance it has.
 
  • Wow
Reactions: EQDAB
Slow too afaik. My mages also spam malaise. I have had them disabled for months as I have not been able to find anything about a fix. Sorry I can't help. :/
 
Name of the AA or the spell it cast was changed about two months ago. Probably will end up chain casting or not casting if its referring to the old version of the AA.


They changed all debuffs, i.e. enchanter, magician and necromancer AA debuffs as well.



- Shaman - Malosinete and Wind of Malosinete have been renamed Malaise / Wind of Malaise and will now trigger the highest known spell in the Malaise spell line that you have scribed depending on rank. The Pathosis component has been changed to trigger the highest known spell in the Putrid Decay spell line that you have scribed depending on rank. Additional ranks have been added for levels 106 and 107.
- Shaman - Consolidated Spirit Walk and Group Spirit Walk into a single line named Lupine Spirit, which will now cast Spirit of Wolf, Spirit of Bih`Li, or Spirit of Tala'Tak on your target's group based on rank.
- Shaman - Turgur's Swarm now triggers the standard spell form of Turgur's Insects in addition to Turgur's Diminishment.
- Shaman - Consolidated Crippling Apparition, Crippling Spirit, and Tigir's Insect Swarm into a single line, Turgur's Virulent Swarm. This ability triggers the standard spell form of Turgur's Insects in addition to Turgur's Diminishment on multiple creatures around your target.
- Shaman - Changed Preincarnation to trigger the highest rank spell version that you have scribed. Rank 2 now extends the duration of your Preincarnation spells by 30 minutes.
- Shaman - Activating Pact of the Wolf now triggers an aura that buffs your group with Group Pact of the Wolf. Increased the health and mana offered by the self and group buffs and added a maximum endurance component.
- Shaman - Group Pact of the Wolf has been replaced with a new ability line, Soothsayer's Intervention, which will trigger the highest rank spell you have scribed from the Ancestral Intervention line.
- Enchanter - Crippling Aurora has been renamed Enveloping Helix and the ability line has been changed to trigger the highest rank of your Helix line of slow spells on multiple targets.
- Enchanter - Dreary Deeds has been renamed Slowing Helix and the ability line has been changed to trigger the highest rank of your Helix line of slow spells on your target.
- Enchanter - Added 3 ranks to Bite of Tashani and changed the ability line to trigger the highest rank of your Tashina line of spells on multiple targets.
- Enchanter - Changed the icon for Noctambulate to match other mesmerize effects.
- Necromancer - Adjusted Death Bloom to stack with the Manaskin line of spells.
- Necromancer - Scent of Terris has been renamed Scent of Thule and the ability line has been changed to trigger Death's Malaise, your Scent of Terris spell, and the highest rank of your Scent of Gloom line of spells on your target.


- Magician - Malosinete and Wind of Malosinete have been renamed Malaise / Wind of Malaise and will now trigger the highest known spell in the Malaise spell line that you have scribed depending on rank. An additional rank has been added for level 106.
 
Last edited:
  • Like
Reactions: EQDAB
I tried doing an if statement using bot but never got it to stop casting so just set it to 0 (so it wont cast at all)

Code:
!${Target.Buff[Malosenete Rk.II].ID}

that's what actually lands when it uses the AA
 
  • Like
Reactions: EQDAB
Name of the AA or the spell it cast was changed about two months ago. Probably will end up chain casting or not casting if its referring to the old version of the AA.


They changed all debuffs, i.e. enchanter, magician and necromancer AA debuffs as well.



- Shaman - Malosinete and Wind of Malosinete have been renamed Malaise / Wind of Malaise and will now trigger the highest known spell in the Malaise spell line that you have scribed depending on rank. The Pathosis component has been changed to trigger the highest known spell in the Putrid Decay spell line that you have scribed depending on rank. Additional ranks have been added for levels 106 and 107.
- Shaman - Consolidated Spirit Walk and Group Spirit Walk into a single line named Lupine Spirit, which will now cast Spirit of Wolf, Spirit of Bih`Li, or Spirit of Tala'Tak on your target's group based on rank.
- Shaman - Turgur's Swarm now triggers the standard spell form of Turgur's Insects in addition to Turgur's Diminishment.
- Shaman - Consolidated Crippling Apparition, Crippling Spirit, and Tigir's Insect Swarm into a single line, Turgur's Virulent Swarm. This ability triggers the standard spell form of Turgur's Insects in addition to Turgur's Diminishment on multiple creatures around your target.
- Shaman - Changed Preincarnation to trigger the highest rank spell version that you have scribed. Rank 2 now extends the duration of your Preincarnation spells by 30 minutes.
- Shaman - Activating Pact of the Wolf now triggers an aura that buffs your group with Group Pact of the Wolf. Increased the health and mana offered by the self and group buffs and added a maximum endurance component.
- Shaman - Group Pact of the Wolf has been replaced with a new ability line, Soothsayer's Intervention, which will trigger the highest rank spell you have scribed from the Ancestral Intervention line.
- Enchanter - Crippling Aurora has been renamed Enveloping Helix and the ability line has been changed to trigger the highest rank of your Helix line of slow spells on multiple targets.
- Enchanter - Dreary Deeds has been renamed Slowing Helix and the ability line has been changed to trigger the highest rank of your Helix line of slow spells on your target.
- Enchanter - Added 3 ranks to Bite of Tashani and changed the ability line to trigger the highest rank of your Tashina line of spells on multiple targets.
- Enchanter - Changed the icon for Noctambulate to match other mesmerize effects.
- Necromancer - Adjusted Death Bloom to stack with the Manaskin line of spells.
- Necromancer - Scent of Terris has been renamed Scent of Thule and the ability line has been changed to trigger Death's Malaise, your Scent of Terris spell, and the highest rank of your Scent of Gloom line of spells on your target.


- Magician - Malosinete and Wind of Malosinete have been renamed Malaise / Wind of Malaise and will now trigger the highest known spell in the Malaise spell line that you have scribed depending on rank. An additional rank has been added for level 106.
Code:
	int					UseOnce;				// only use this spell once per mob? this will be an option ini entry


Optional UseOnce int variable in the _BotSpells typedef struct inside MQ2Bot.cpp. This is loaded from the INI

Code:
v[i].UseOnce = GetPrivateProfileInt(INISection, szSpell, 0, INIFileName);
in the LoadBotSpell function where v is a vector of _BotSpells
So assuming _BotSpells stores every currently memorized spells or AA's, and there is an optional parameter of the Int type of UseOnce then you should be able to create an INI entry for the spell that specifies that it should only be used once.

If I'm reading the below code correctly
Code:
char szTemp[MAX_STRING] = { 0 }, szSpell[MAX_STRING];
	for (unsigned int i = 0; i < v.size(); i++)
	{
		// move next 6 lines to the create spell vector
		sprintf_s(szSpell, "%sSpellName%d", VectorName, i);
		if (GetPrivateProfileString(INISection, szSpell, NULL, szTemp, MAX_STRING, INIFileName))
		{
			strcpy_s(v[i].SpellName, szTemp);
			v[i].CanIReprioritize = 0;
			WriteChatf("%s=%s", szSpell, szTemp);
		}

Then it's creating the szSpell variable and it's going to hold a character array, then inside of the loop the size of the vector that's passed to the LoadBotSpell function then store %sSpellName%d where %s is the VectorName (passed on the call of LoadBotSpell) and the %i which is the int value of the loop, then

Your INI should be like VectorNameSpellName1=Malo Spell Name Here

Once that's complete then the INI would check for UseOnce in the INI and if it finds that value then save it to the variable for later referencing.

So for the spell in Question it may be like
Code:
MaloSpellName1=Malaise
MaloUseOnce1=1


There are several other INI items for each spell referenced in the code, but for this situation I feel like this would likely reduce the likely hood of recast the most.

With that said. I'm not finding where it's checked using a find all references.

Currently with the file I have the existing references is limited to only 4.
1. The creation of the variable
2. Getting the variable from the INI
3. Storing the variable to the INI
4. Displaying the setting with a WriteChatf function call.

To be perfectly honest, the code for MQ2Bot is quite elaborate. There are vectors for various different things.

For example void CreateDebuff() function creates an array of debuffs by name.

Code:
	PCHAR szDebuff[] = { "Malaise", "Turgur's Swarm", "Helix of the Undying", "Bite of Tashani", "Dreary Deeds",
		"Blessing of Ro", "Vortex of Ro", "Scent of Terris", "Death's Malaise", "Crippling Sparkle", "Ethereal Manipulation",
		 "Lower Element", "Sha's Reprisal", "Turgur's Virulent Swarm","Wind of Malaise", "Season's Wrath", "Eradicate Magic", NULL };

Malaise is listed.

So thinking DebuffSpellName1=Malaise

would be listed
Then some information about the spell is collected and pushed into the PSPELL vector VDebuff, then the vector is then pushed to the loadspell function. It appears that everything that is needed to avoid this is present. but if the name of the AA and the debuff in question aren't the same then it could cause the constant recasting without the UseOnce flag set to 1. But as I mentioned I'm not seeing it called. So perhaps check for the INI entry for DebuffUseOnce#=0/1 and set to 1 for the Malise, if it then only casts one, check reliability of that. If not, then the INI option was creating, but possibly never used. I reference void CheckDebuffs() and I find a lot of base cases, but I cannot seem to find a check for UseOnce to be present.


This is of course all speculation on my based on what I'm reading in the code. I could be overlooking something that @PeteSampras did and would have more knowledge on the matter if he can get a chance to look.
 
Last edited:
  • Wow
Reactions: EQDAB
I tried doing an if statement using bot but never got it to stop casting so just set it to 0 (so it wont cast at all)

Code:
!${Target.Buff[Malosenete Rk.II].ID}

that's what actually lands when it uses the AA

You could also check ${Target.Maloed} which I believe is part of core now.

Code:
12 Jul 2017 by eqmule
- Updated for TEST
- All instances of "Malod" has been renamed to "Maloed"
- Darkened Malosenia is now correctly returned when doing a ${Target.Maloed}

Note that the return value of that is a string and will require an ID or a Length check to avoid potential error

IE:

Code:
!${Target.Maloed.ID}


or

Code:
!${Target.Maloed.Length}

or something along those lines.


Relevant chunk of code from MQ2DataTypes.cpp


Code:
case Maloed:
		if (PCHARINFO2 pChar2 = GetCharInfo2()) {
			int nBuff = -1;
			if ((nBuff = GetSelfBuffBySubCat("Resist Debuffs", (1 << Shaman) + (1 << Mage))) != -1)
			{
				Dest.Ptr = &pChar2->Buff[nBuff];
				Dest.Type = pBuffType;
				return true;
			}
		}
		break;

There is also .Crippled, .Tashed, .Mezzed, .Slowed, .Rooted, .Snared, .Hasted, and .Beneficial that you can check for various other things.


For example, for Eradicate Magic I use
Code:
${If[${Target.Beneficial},0,1]}
 
Last edited:
  • Like
Reactions: EQDAB
Code:
    int                    UseOnce;                // only use this spell once per mob? this will be an option ini entry
Optional UseOnce int variable in the _BotSpells typedef struct inside MQ2Bot.cpp. This is loaded from the INI

Code:
v[i].UseOnce = GetPrivateProfileInt(INISection, szSpell, 0, INIFileName);
in the LoadBotSpell function where v is a vector of _BotSpells
So assuming _BotSpells stores every currently memorized spells or AA's, and there is an optional parameter of the Int type of UseOnce then you should be able to create an INI entry for the spell that specifies that it should only be used once.

If I'm reading the below code correctly
Code:
char szTemp[MAX_STRING] = { 0 }, szSpell[MAX_STRING];
    for (unsigned int i = 0; i < v.size(); i++)
    {
        // move next 6 lines to the create spell vector
        sprintf_s(szSpell, "%sSpellName%d", VectorName, i);
        if (GetPrivateProfileString(INISection, szSpell, NULL, szTemp, MAX_STRING, INIFileName))
        {
            strcpy_s(v[i].SpellName, szTemp);
            v[i].CanIReprioritize = 0;
            WriteChatf("%s=%s", szSpell, szTemp);
        }
Then it's creating the szSpell variable and it's going to hold a character array, then inside of the loop the size of the vector that's passed to the LoadBotSpell function then store %sSpellName%d where %s is the VectorName (passed on the call of LoadBotSpell) and the %i which is the int value of the loop, then

Your INI should be like VectorNameSpellName1=Malo Spell Name Here

Once that's complete then the INI would check for UseOnce in the INI and if it finds that value then save it to the variable for later referencing.

So for the spell in Question it may be like
Code:
MaloSpellName1=Malaise
MaloUseOnce1=1


Sorry dude. that is new version of mq2bot code that is just sitting in old mq2bot. it isnt actually used in any way and cannot convert to the old code. it was part of the total rewrite that was never finished. it needs deleted from the plugin so as not to confuse anyone.
 
  • Haha
Reactions: EQDAB
Sorry dude. that is new version of mq2bot code that is just sitting in old mq2bot. it isnt actually used in any way and cannot convert to the old code. it was part of the total rewrite that was never finished. it needs deleted from the plugin so as not to confuse anyone.

Ahh I see. Makes sense.
 
  • Like
Reactions: EQDAB
Sorry dude. that is new version of mq2bot code that is just sitting in old mq2bot. it isnt actually used in any way and cannot convert to the old code. it was part of the total rewrite that was never finished. it needs deleted from the plugin so as not to confuse anyone.

So .. I'm a dummy about this.. Are you going to update the plugin or should I change the code to fix it?
 
Last edited:
  • Wow
Reactions: EQDAB
Did this ever happen? Using mq2bot, pretty standard settings. When I /bot on the necro, the Scent of Thile doesn't show up in the list and therefore, does not cast it. Would love some help on how to get it working if not.
 
  • Like
Reactions: EQDAB
Scent of Thule will be in the next MQ2Bot update.
@Fry Scent of Thule is now casting, however, it casts every other spell or so. When I /bot on it shows Debuff0: Eradicate Magic 1 Debuff1:Scent of Thule XV



Here is the output when I am killing a mob
1613180921307.png

Code:
[ZoneInfoWindow]
ChatTop=10
ChatBottom=210
ChatLeft=10
ChatRight=410
Locked=0
WindowTitle=Zone Information
Fades=1
Delay=0
Duration=500
Alpha=255
FadeToAlpha=255
BGType=1
BGTint.alpha=255
BGTint.red=255
BGTint.green=255
BGTint.blue=255
[MQ2Bot]
Debugging=0
BotVersion=20210211.2130
PulseCycle=100
BotCommandsOn=
BotCommandsOff=
AlwaysCheckAdds=1
RestrictedZones=,344,202,151,345,
BuffPassword=NULL
AuthorizedUsers=|guild|group|netbots|
CycleDelay=3
DefaultGem=1
AnnounceEcho=1
AnnounceEQBC=0
AnnounceAdds=1
AnnounceMezBreaks=1
AutoInvisDistance=0
AssistAt=99
AssistRange=100
UseManualAssist=0
AssistName=
MercAssistAt=99
MercAssistRange=100
MeleeAt=0
MeleeDistance=40
DoPetSwarm=1
PetAttackAt=99
PetAttackRange=100
RepositionIfSummoned=1
MedStartAt=0
MedStopAt=0
MedToFull=0
MedDuringCombat=0
EndMedStartAt=0
EndMedStopAt=0
EndMedToFull=0
MinManaToNuke=0
NukeToTAt=80
ManaToSummon=100
SummonModRods=1
UseModRods=1
AACutoffTime=10
AAStopAt=25
AggroAt=70
AutofireAt=0
AutofireDistance=100
DebuffAdds=1
DebuffAt=99
DebuffStopAt=20
DebuffAEAmount=3
DotAt=99
DotStopAt=10
FaceAngle=360
FadeAt=20
GrabAdds=0
GrabPrimary=0
InterruptToHealAt=0
HealAt=50
HealToTAt=80
HealSelfAt=80
HealDelayedAt=95
HealDurationAt=95
HealGroupAt=80
HealPetAt=40
ImHitAt=50
JoltAt=70
KnockbackAdds=0
KnockbackPrimary=0
LifetapAt=80
LootInCombat=0
LootWithAdds=0
LootRadius=0
ManaAt=50
NukeAt=99
RezRadius=100
RootAdds=0
RootPrimary=0
SnareAt=0
SwarmAt=99
UseAutoFire=0
UseAENukes=1
UseAura=0
UseClickyBuffs=1
UseClickyNukes=1
DebuffsSpellFirst=1
UseFightBuffs=1
UseMainTankBuffs=1
UseManaInCombat=1
UseManaOnOthers=1
UseMez=0
UsePet=1
PetReagentCheck=1
PetIllusionItem=NULL
CustomPetSpell=NULL
UsePetBuffs=1
StandOnPetAttack=0
UseSelfBuffs=1
AutoFollowLeader=0
AutoFollowSettings=30 healer
UseNetBots=1
NetBotsName=NULL
PullingDistance=0
MaxNavPathDistance=0
PullSkillRange=0
PullingMaxZ=30
PullingLOS=1
DoPulls=0
PullSkillName=
PullingFilter=1
AnnounceBehaviorChange=0
AttackCommand=/killthis
SafetyInvisOnWarp=0
SafetyCommandOnTell=
SafetyCommandOnGM=
SafetyCommandOnMyWarp=
SafetyCommandOnOthersWarp=
SafetyCommandOnTooFarFromCamp=
IgnoreTheseSkills=
ClickyNukeif2=0
[MQ2Twist]
Delay=33
Quiet=0
Adjust=1
Recast=0
21_CastTime=0
21_ReCastTime=0
21_Name=DISABLED
21_Slot=DISABLED
22_CastTime=0
22_ReCastTime=0
22_Name=DISABLED
22_Slot=DISABLED
23_CastTime=0
23_ReCastTime=0
23_Name=DISABLED
23_Slot=DISABLED
24_CastTime=0
24_ReCastTime=0
24_Name=DISABLED
24_Slot=DISABLED
25_CastTime=0
25_ReCastTime=0
25_Name=DISABLED
25_Slot=DISABLED
26_CastTime=0
26_ReCastTime=0
26_Name=DISABLED
26_Slot=DISABLED
27_CastTime=0
27_ReCastTime=0
27_Name=DISABLED
27_Slot=DISABLED
28_CastTime=0
28_ReCastTime=0
28_Name=DISABLED
28_Slot=DISABLED
29_CastTime=0
29_ReCastTime=0
29_Name=DISABLED
29_Slot=DISABLED
30_CastTime=0
30_ReCastTime=0
30_Name=DISABLED
30_Slot=DISABLED
31_CastTime=0
31_ReCastTime=0
31_Name=DISABLED
31_Slot=DISABLED
32_CastTime=0
32_ReCastTime=0
32_Name=DISABLED
32_Slot=DISABLED
33_CastTime=0
33_ReCastTime=0
33_Name=DISABLED
33_Slot=DISABLED
34_CastTime=0
34_ReCastTime=0
34_Name=DISABLED
34_Slot=DISABLED
35_CastTime=0
35_ReCastTime=0
35_Name=DISABLED
35_Slot=DISABLED
36_CastTime=0
36_ReCastTime=0
36_Name=DISABLED
36_Slot=DISABLED
37_CastTime=0
37_ReCastTime=0
37_Name=DISABLED
37_Slot=DISABLED
38_CastTime=0
38_ReCastTime=0
38_Name=DISABLED
38_Slot=DISABLED
39_CastTime=0
39_ReCastTime=0
39_Name=DISABLED
39_Slot=DISABLED
40_CastTime=0
40_ReCastTime=0
40_Name=DISABLED
40_Slot=DISABLED
[MQ2PiggyZone]
PCCheck=off
UseGate=on
NoGroup=off
PCRange=500
MinZoneDelay=15
MaxZoneDelay=45
UseNPC=off
UseDelay=off
UseWarp=off
[MQ2AutoSkills]
AutoInventory=off
Backstab=off
Bash=off
Begging=off
Disarm=off
DragonPunch=off
EagleStrike=off
ENRAGE=off
Evade=off
FeignDeath=off
Forage=off
FlyingKick=off
Frenzy=off
Intimidation=off
Infuriate=off
Kick=off
Mend=off
RoundKick=off
PickPockets=off
SenseTraps=off
Slam=off
Taunt=off
TigerClaw=off
MeleeRange=15.000
BackOffHP=0
DoMendHP=80
Verbose=off
[MQ2AutoForage]
AutoKeepAll=on
AutoAddAll=on
AutoStart=off
StopOnHail=off
StopOnTell=off
StopOnAFK=off
StopOnGM=on
AutoRestart=on
MaxMinutes=0
[MQ2AutoBuff]
AutoBuff=on
MaxRetries=3
Keys1=keyword1,keyword2,keyword3
Name1=Spell Name
Type1=gem1
Keys2=keyword1,keyword2,keyword3
Name2=Another Spell Name
Type2=gem5
[MQ2DoCrack]
Top=180
Left=290
Bottom=398
Right=830
Locked=0
WindowTitle=MMOBugs MQ2DoCrack
Fades=1
Delay=2000
Duration=500
Alpha=255
FadeToAlpha=255
BGType=1
BGTint.alpha=255
BGTint.red=255
BGTint.green=255
BGTint.blue=255
ShowWindow=0
[MQ2Rez]
Accept=Off
RezPct=90
SafeMode=Off
VoiceNotify=Off
ReleaseToBind=Off
SilentMode=Off
Command Line=DISABLED
[MQ2Melee]
enrage=1
enragingkick=25
facing=1
feigndeath=30
groupcheck=1
infuriate=1
override=1
petassist=1
petenrage=1
pethot=20
petinfuriate=1
petmend=20
petrange=75
petswarm=1
plugin=1
resume=20
stickbreak=1
stickrange=70
version=2021.0121
ShowAbility=0
ShowAltAbility=0
ShowAttacking=1
ShowBash=0
ShowCasting=0
ShowCombatAbility=0
ShowControl=0
ShowDebug=0
ShowDownShit=0
ShowEnrageDebug=1
ShowEnraging=1
ShowFeign=1
ShowHolyShit=0
ShowMoveUtilsDebug=0
ShowOverride=1
ShowProvoking=0
ShowRange=0
ShowSkills=0
ShowSpecial=0
ShowSticking=1
ShowStrike=0
ShowStunning=0
ShowSwitching=1
CADelay=500
AADelay=250
SpellDelay=350
SkillDelay=250
PotionDelay=500
DownDelay=0
HolyDelay=0
DownCycleDelay=0
HolyCycleDelay=0
 
  • Like
Reactions: EQDAB
I changed Debuffstopat=95 Now he only casts it once. So might be working as expected that way!
 
  • Like
Reactions: EQDAB
I changed Debuffstopat=95 Now he only casts it once. So might be working as expected that way!

I spoke to htw about this.

MQ2Bot doesn't really handle AA's that debuff with slightly different spell effects. It's on the todo list. There are 15 ranks of that and they all do slightly different stuff as far as spell effects.

Something like this in your ini should handle it.

This is for if it is Debuff2, and the debuff it's casting is "Death's Malaise IV". Change it to fit your character.

DebuffIf2=${Target.BuffsPopulated} && !${Target.Buff[Death's Malaise IV].ID}
 
  • Like
Reactions: EQDAB
I spoke to htw about this.

MQ2Bot doesn't really handle AA's that debuff with slightly different spell effects. It's on the todo list. There are 15 ranks of that and they all do slightly different stuff as far as spell effects.

Something like this in your ini should handle it.

This is for if it is Debuff2, and the debuff it's casting is "Death's Malaise IV". Change it to fit your character.

DebuffIf2=${Target.BuffsPopulated} && !${Target.Buff[Death's Malaise IV].ID}
Ill give this a try later tonight!
 
  • Like
Reactions: EQDAB