Jump to content

[Request] Targeting System (Plugin or Build in system)


Weicheng

Recommended Posts

Hi All

I have been using the WRotation for a long time and it release me from pressing keys on keyboard. So I can focus more on PvE strategy and movement.

By using Fighter Class, we are able to create highy customiable, well functioning combat rotation without write any code. This is powerful.

 

However, the WRotation should implement another important system, that is auto changing target if necessary.

Let's say you are a Tank, so by definition, you need to keep all mobs attacking you, this means you have to target any mobs that are not attacking you and taunt them/apply treats.

And maybe you need to save your unfortunate teammate from death. So you may want to give hands of protection to your teammate if you are paly.

As a healer, you need to switch target frequently and save them. (By browsing this forum, I find that there are lots of requests about building Healer FighterClass profile or Plugin or something relates to it)

Even for dps, you need to switch target between ADD and Boss by a specific killing priority.

 

Therefore, I was wondering if we can have a targeting system that can let user to define how to switch target. just like FighterClass that allows user to customize Rotation.

So we can have our own strategy, combines with FighterClass system, WRobot can build a much more intelligent products.

 

Other functions that can be expanded on targeting system with strategy:

1, pulling, if current in battle mobs is less than X, targeting nearby mobs that is not in combat.

2, "prove of kill", if you are near a world boss or quest boss and somebody else is attacking it. you just need to simply attack the boss once and you can leave and do something else if you don't want to possibility get "dirty".

3, "kill stealing", in battleground, you are more likely want to steal some kills, this means you will always target the player will lowest heath percent or somebody's heath percent is lower than 10%.

4, ass saving/pro player mode, you got 3 mobs attacking you, you want to stun one of them and silence the other and then attacking the third mob, which has lowest health. 

...

Implementation Analysis:

There are two ways that can involve targeting system:

1, Create another separate system. Can be a sub system in Rotation or a Plugin

    All you need is a priority queue, that stores the targeting strategy, e.g

        For tank:

            0, <type:hostile target, condition: target is casting == true>

            1, <type:hostile target, condition: target targeting != me>

            2, <type:teammate, condition: target health percent < 20%>

            3,<type:hostile target, condition: target is elite>

            4,<type:hostile target, condition: none>

        For healer:

            1, <type:tank, condition:target health percent < 80% >

            2, <type:teamate, condition: target health percent < 40%>

            3, <type:hostile target> // if everyone is in good health, the healer can do some dps

        

2, Embed in Filght Class

     Add a target condition to each spell, so we can specify what target to choose. 

     we do have a target condition in Fighter Class now, but it is not powerful enough to make some condition on them

Combine with Targeting system, in theory, the user can build Raiding Rotation as good as TuanHA in Honorbuddy. 

Thank you for your patience to read my post and forgive my BAD ENGLISH if there is something makes no sense....

 

    

 

Link to comment
Share on other sites

Possible pseudocode:

Function TargetingSystem_Pluse()

   let current = current player's target

   let new      = SelectTarget()

   if (current != new)

      API_CALL changeTarget(new)

   end

end

 

Function SelectTarget():

  let EnemyList = All enemy nearby

  let FriendList = All teammate nearby

  let target = current player's target

  let StrategyList = parse strategy in file

 

  For each strategy in StrategyList :

      if strategy.type == hostile:

          for each enemy in enemyList:

               if fit(enemy,strategy.condition):

                    target = enemy

                    return target;

               end

          end

      else

         for each friend in FriendList:

              if fit(friend,strategy.condition):

                   target = enemy

                   return target

              end

           end

       end

  end

return target

end

    

Link to comment
Share on other sites

Since we have no API documentation for WRobot developer and I don't have much time to do research on writing plugin. (I am student)

That's all I can help... if someone is interesting in targeting system, please create it as a plugin....

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...