Yiyotop / ro-rail

Automatically exported from code.google.com/p/ro-rail
0 stars 0 forks source link

Actor Notify #49

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What feature would enhance usability or efficiency?
Usability

What steps would demonstrate the improvement granted by the recommended
feature?
1. Walk or Teleport Around
2. Actor on Notify List appears within GetActors
3. RAIL displays a message indicating that the Actor has been found

What is the current behavior in the above situation?
Nothing-- not implemented

What revision of the product are you using?
r194

What type of homunculus/mercenary are you using?
Vanil

Please provide any additional information below.
I would love it if we had a way to auto notify the player when certain Actors 
came onstage. In particular, I envisioned the state file addition to look like 
this:

rail_state["ActorOptions"]["ByType"][1159]["Notify"] = true

The behavior would illicit a dialogue box of some sort indicating that the mob 
(in this case, Phreeoni) was found on the screen (this is a pretty good 
indicator for me to stop my teleport happy tendencies).

I know that Actors are processed by priority, but typically this option would 
be used for high priority mobs, like MVPs, so it shouldn't be an issue.

I realize that this has the potential for abuse re: PvP cloaked and hidden 
characters, but that isn't why I want it. Any chance something like this can be 
added?

Original issue reported on code.google.com by landstei...@gmail.com on 9 Dec 2010 at 12:41

GoogleCodeExporter commented 8 years ago
It is unlikely I will implement something like this. One reason is, as you 
mentioned, the ability to easily identify when cloaked/hidden characters are on 
the screen. I realize that there are already ways of doing this by reading the 
log output, but I do not want to implement it as part of the AI.

Another reason is that there's not really a clean, easy way to do it. Sending 
up a message when a particular actor or type of actor isn't the problem. The 
problem is that causing a box to appear also has the side-effect of restarting 
the AI. The only way to have the AI send up a box is with the built-in Lua 
function error(). When any error in the AI occurs, the Ragnarok client reloads 
the entire AI. The problem is that if Phreeoni is on the screen, the error box 
would just keep notifying you. I don't think you want infinite notices that 
Phreeoni (in your example) is around, do you? It'd be pretty hard to MVP him 
like that.

So of course, it is possible to write data out to a file before throwing the 
error. Then the initialization would check for data in that specific file 
before allowing the AI to toss another error. But the problem is what data 
should be written? And to which file? (Probably state-file; but then there's a 
chance homu+merc will each notify the players, which is undesirable for people 
who use both.) Once that's figured out, how should the AI know that the data is 
old/expired and a new notification is needed?

As you can see, it starts to get ugly really fast. For a feature with limited 
legitimate use, with a great potential for rules-abuse or even rule-breaking, I 
just think that the amount of work is too great to justify implementation.

So at this point, I won't implement it. I may reconsider later.

Original comment by faithful...@gmail.com on 9 Dec 2010 at 2:03

GoogleCodeExporter commented 8 years ago
I fully understand the concern, though this could be implemented just as easily 
by anyone else. Still, I respect your decision to not implement it for the 
reasons discussed, though its unfortunate a useful feature has to be killed 
because of potential abuse.

There is not a clean, easy way to do it, perhaps, but:
rail_state["ActorOptions"]["ByType"][1159]["Notify"]

could  changed from 'true' to a tick count. It is certainly possible, but not 
necessarily clean.

Original comment by landstei...@gmail.com on 9 Dec 2010 at 3:55