chinajade
Community Developer
- Joined
- Jul 20, 2010
- Messages
- 17,540
- Reaction score
- 172
First, Don't Panic
With the release of a Honorbuddy-2.0.0.4555, users and profile writers will notice a new wave of warning messages being emitted when using custom behaviors. Please note these are warnings, and not errors. Behaviors should continue to operate normally even in the presence of these warnings.
The blame for all this rests squarely on Chinajade. Please don't blame the HBcore development team or anyone else for any inconvenience caused by this transition.
So why are there warnings now?
Basically, we listened to the feedback from the Community. We also read through the forums and analyzed the problem areas most experienced by Profile Writers with respect to behavior use.
Since Custom Behaviors were introduced in Honorbuddy-2.0.0.3391, many gifted Community and HBcore developers have contributed behaviors that extend the functionality of the HBcore product. Most of these behaviors provide much needed functionality, and some of them do things that are simply unbelievable (e.g., fly a bird to rescue passengers and drop them at a particular point, or climb a tree to rescue bears, and toss them safely onto a trampoline).
With so many diverse people contributing these behaviors without any formal guidelines, confusion was a natural result when the behaviors were collected and distributed as part of the Honorbuddy core. For example,
In short, we are attempting to remedy the shortcomings listed here and more. As for naming, we tried to adopt the following convention:
You will also see warnings for things that were simply wrong to expose to the Community. For instance, allowing a QuestId="0" is the most obvious example. This was simply a bug to allow an invalid value to be specified for an attribute. A QuestId of zero now emits a warning message. In the future, a QuestId of zero will be disallowed, just as a value of zero is also disallowed for MobId, SpellId, etc. today.
In the case of the QuestId, if you'd like the behavior to be executed outside of the context of a quest, simply omit the QuestId rather than specifying an invalid one.
Additionally, the behaviors are trying to tell you *exactly* what they don't like, and where the problem lies. Messages now inform you of their severity both through text and color. They will also tell you the default corrective action they are taking, if an automatic corrective action is possible.
What is still owed to the Community
The comment block at the top of many of the behaviors is simply outdated or wrong (before these changes) and still is. This is a serious problem for profile writers that don't read C#.
We still owe the Community these items:
How a profile writer can rapidly eliminate the warnings
To make the changes needed to make the warnings 'go away' does not require a lot of effort. Most of the renaming can be rapidly handled through simple global search-and-replace facilities.
The ProfileDebuggingMode switch allows a Profile Writer to identify all needed changes without having to actually execute (and re-test) the profile. If you are not familiar with it, more info about ProfileDebuggingMode can be found here...
Before we committed the changes for behavioral warnings, approximately two dozen existing profiles were converted as a 'test' to make sure the required changes would not be an unreasonable burden on profile writers. We also tested all these changes heavily to make sure behaviors weren't 'broken' any worse than they already were.
Some problematical behaviors
We know that profiles that use the BasicVehicleBehavior are in for surprises--that one was a mess:
And these are the error messages you'll get with 4555 as a result:
This is one case where the changes 'broke' profiles, but it was because the behavior wasn't working correctly with the profile-provided arguments. To fix this, rename DestX/DestY/DestZ to X/Y/Z, and delete the NpcId. You should be off and running, and the behavior (hopefully) now works as expected.
What we are finding
Many users do not do a clean install of Honorbuddy. Some simply copy Honorbuddy.exe and TripperTools.dll on top of their existing Honorbuddy installation. Some install the new Honorbuddy, then copy inappropriate things (like old Custom Behaviors) on top. Both of these situations cause many many problems, and this is the cause of most of the profile/behavior 'broken' reports in the forum.
For example, consider this report:
Since InteractWith.cs that shipped with HB-2.0.0.4555 only has 304 lines, we know the user somehow botched the install. This is just one example, but a large number of Honorbuddy problems are caused by users inappropriately copying files on top of new distributions, or doing other things to the same effect.
[Note to self: Provide second example of UserSettings when you can find it again in the forums]
Summary
What this recent set of changes provides:
In short, there should be less time spent figuring out why a behavior is not working as expected. This translates into faster development of solid profiles, and better quality overall.
This period of transition for Custom Behaviors should be a one-time effort. We apologize for any inconvenience caused, but feel it is necessary to provide a clean, coherent facade to the Community.
cheers,
chinajade
With the release of a Honorbuddy-2.0.0.4555, users and profile writers will notice a new wave of warning messages being emitted when using custom behaviors. Please note these are warnings, and not errors. Behaviors should continue to operate normally even in the presence of these warnings.
The blame for all this rests squarely on Chinajade. Please don't blame the HBcore development team or anyone else for any inconvenience caused by this transition.
So why are there warnings now?
Basically, we listened to the feedback from the Community. We also read through the forums and analyzed the problem areas most experienced by Profile Writers with respect to behavior use.
Since Custom Behaviors were introduced in Honorbuddy-2.0.0.3391, many gifted Community and HBcore developers have contributed behaviors that extend the functionality of the HBcore product. Most of these behaviors provide much needed functionality, and some of them do things that are simply unbelievable (e.g., fly a bird to rescue passengers and drop them at a particular point, or climb a tree to rescue bears, and toss them safely onto a trampoline).
With so many diverse people contributing these behaviors without any formal guidelines, confusion was a natural result when the behaviors were collected and distributed as part of the Honorbuddy core. For example,
- Arguments were named inconsistently--sometimes MobId, sometimes NpcId, sometimes ObjectId
- Argument handling was inconsistent--some behaviors would inform you of missing required arguments, others would silently fail
- Argument parsing was inconsistent--some behaviors informed you of malformed entities, others just silently substituted default values. Some forgot to check for argument 'aliases'. Some checked for 'aliases', but failed to provide default values. Sometimes, the default values were not initializing the behavior properly.
- Error messages were reported inconsistently. It was hard to determine if the problem was a 'warning' or an 'error'. Many error messages were omitted, and the behavior simply failed silently under certain conditions.
In short, we are attempting to remedy the shortcomings listed here and more. As for naming, we tried to adopt the following convention:
- MobId/MobID/NpcId/NpcID/NPCID/ObjectId is now simply MobId (interaction-type behaviors)
- MobId/MobID/ObjectId/VehicleId/VehicleID that represent vehicles are now VehicleId (vehicle-type behaviors)
- Attributes that reference a hotbar button are now called 'SomethingButton' (previously some were referred to as 'Index' or 'Id')
- Any attribute that should be available from WoWhead should end in the word 'Id'. (E.g., Some behaviors used the attribute 'Spell' or 'Aura', the preferred name is now 'SpellId' or 'AuraId' respectively).
- Older attributes that took a triplet (e.g., Location="123.45 -532.24 5304.5") will now tell you their preferred usage is X="123.45" Y="-532.24" Z="5304.5"
- In some cases, attributes were renamed to remove ambiguity. For instance, a behavior that accepts an NpcId, X, Y, Z, Name, and other attributes had Name changed to a preferred name of DestName. Two reasons for this, Name was ambiguous as to what was being named (it could have easily been the NPC, profession, or another attribute), and selecting DestName as preferred brought it into alignment with other behaviors that allowed a DestName attribute.
You will also see warnings for things that were simply wrong to expose to the Community. For instance, allowing a QuestId="0" is the most obvious example. This was simply a bug to allow an invalid value to be specified for an attribute. A QuestId of zero now emits a warning message. In the future, a QuestId of zero will be disallowed, just as a value of zero is also disallowed for MobId, SpellId, etc. today.
In the case of the QuestId, if you'd like the behavior to be executed outside of the context of a quest, simply omit the QuestId rather than specifying an invalid one.
Additionally, the behaviors are trying to tell you *exactly* what they don't like, and where the problem lies. Messages now inform you of their severity both through text and color. They will also tell you the default corrective action they are taking, if an automatic corrective action is possible.
[MyBehaviorName(error) @line 142]: PullDistance is not on the closed interval [1..75] (saw 100).'
[MyBehaviorName(warning) @line 417]: Unrecognized attribute 'Location' encountered--ignoring.'
[MyBehaviorName(info) @line 726]: Wait Timer expired (ran for 1500 ms)
As you can see, the line number in the profile will also be supplied as part of the message (if possible).[MyBehaviorName(warning) @line 417]: Unrecognized attribute 'Location' encountered--ignoring.'
[MyBehaviorName(info) @line 726]: Wait Timer expired (ran for 1500 ms)
What is still owed to the Community
The comment block at the top of many of the behaviors is simply outdated or wrong (before these changes) and still is. This is a serious problem for profile writers that don't read C#.
We still owe the Community these items:
- A terse, accurate comment block at the top of each behavior that briefly describes each argument
- Wiki pages for each behavior
How a profile writer can rapidly eliminate the warnings
To make the changes needed to make the warnings 'go away' does not require a lot of effort. Most of the renaming can be rapidly handled through simple global search-and-replace facilities.
The ProfileDebuggingMode switch allows a Profile Writer to identify all needed changes without having to actually execute (and re-test) the profile. If you are not familiar with it, more info about ProfileDebuggingMode can be found here...
[wiki]Honorbuddy: Internal Configuration Options[/wiki]
Before we committed the changes for behavioral warnings, approximately two dozen existing profiles were converted as a 'test' to make sure the required changes would not be an unreasonable burden on profile writers. We also tested all these changes heavily to make sure behaviors weren't 'broken' any worse than they already were.

Some problematical behaviors
We know that profiles that use the BasicVehicleBehavior are in for surprises--that one was a mess:
- It required a DestX/DestY/DestZ attribute that it never used internally
- It required a MobId that it never used internally
- It internally used an X/Y/Z that was not required in the arguments list
<CustomBehavior File="BasicVehicleBehaviour" QuestId="27000"
NpcId="44836" VehicleMountId="44832" SpellId="83605"
MountX="2352.673" MountY="-1631.735" MountZ="106.0424"
DestX="2352.673" DestY="-1631.735" DestZ="106.0424" />
NpcId="44836" VehicleMountId="44832" SpellId="83605"
MountX="2352.673" MountY="-1631.735" MountZ="106.0424"
DestX="2352.673" DestY="-1631.735" DestZ="106.0424" />
And these are the error messages you'll get with 4555 as a result:
[BasicVehicleBehaviour(error)]: Attribute 'X' is required, but was not provided.
[BasicVehicleBehaviour(error)]: Attribute 'Y' is required, but was not provided.
[BasicVehicleBehaviour(error)]: Attribute 'Z' is required, but was not provided.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'DestX' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'DestY' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'DestZ' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'NpcId' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(error) @line 5537]: Stopping Honorbuddy. Please repair the profile!
[BasicVehicleBehaviour(error)]: Attribute 'Y' is required, but was not provided.
[BasicVehicleBehaviour(error)]: Attribute 'Z' is required, but was not provided.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'DestX' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'DestY' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'DestZ' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(warning) @line 5537]: Attribute 'NpcId' is not recognized by this behavior--ignoring it.
[BasicVehicleBehaviour(error) @line 5537]: Stopping Honorbuddy. Please repair the profile!
This is one case where the changes 'broke' profiles, but it was because the behavior wasn't working correctly with the profile-provided arguments. To fix this, rename DestX/DestY/DestZ to X/Y/Z, and delete the NpcId. You should be off and running, and the behavior (hopefully) now works as expected.
What we are finding
Many users do not do a clean install of Honorbuddy. Some simply copy Honorbuddy.exe and TripperTools.dll on top of their existing Honorbuddy installation. Some install the new Honorbuddy, then copy inappropriate things (like old Custom Behaviors) on top. Both of these situations cause many many problems, and this is the cause of most of the profile/behavior 'broken' reports in the forum.
For example, consider this report:
[11:13:05 AM:836] Could not compile quest behavior from 'C:\UsersHB2\Quest Behaviors\InteractWith.cs'
[11:13:05 AM:837] Line 314: Operator '*' cannot be applied to operands of type 'ulong' and 'int'
[11:13:05 AM:837] Line 328: Operator '*' cannot be applied to operands of type 'ulong' and 'int'
[11:13:05 AM:837] Line 314: Operator '*' cannot be applied to operands of type 'ulong' and 'int'
[11:13:05 AM:837] Line 328: Operator '*' cannot be applied to operands of type 'ulong' and 'int'
Since InteractWith.cs that shipped with HB-2.0.0.4555 only has 304 lines, we know the user somehow botched the install. This is just one example, but a large number of Honorbuddy problems are caused by users inappropriately copying files on top of new distributions, or doing other things to the same effect.
[Note to self: Provide second example of UserSettings when you can find it again in the forums]
Summary
What this recent set of changes provides:
- Behaviors inform you precisely what they don't like about their provided arguments
- Behaviors inform you of missing arguments that are required for proper operation
- Any malformed entities are clearly spelled out in the resulting messages
- Messages clearly identify their severity, and which line in the profile is the offender
- Behaviors inform you of the default actions they take if something is unexpected/unwanted
In short, there should be less time spent figuring out why a behavior is not working as expected. This translates into faster development of solid profiles, and better quality overall.
This period of transition for Custom Behaviors should be a one-time effort. We apologize for any inconvenience caused, but feel it is necessary to provide a clean, coherent facade to the Community.
cheers,
chinajade
Last edited: