|
|
 |
 |
 |
 |
|
 |
 |
|
 |
 |
|
 |
|
Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum) |

10-20-2012, 10:18 AM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
Okay, good to know.
5 stances should be okay, I believe. I'll have to check for any that might have more. Caster has the most - Passive, Balanced, Burn, and BurnAE for sure, maybe Efficient or Aggressive (I don't have them right in front of me). Healers have Passive, Balanced, Efficient and Reactive.
We will need to increase Merc Types, though. While I'm not even sure if they have any Master Mercenaries, there are a few Mercenary Merchants who have 2 races, so they will have at least 4 (6 if you include master).
I was able to get mercs to follow last night, and dismiss and suspend mostly working. Also, I fixed a couple of issues that allow the illusion packet to work (purchasing mercs from Guardian Norerd in PoK who needs to be changed to be a froglok now results in a froglok merc). I still need to add the SQL to fix the mercenary merchants, but i know him and Mercenary Mdjai in Crescent Reach work.
|
 |
|
 |

10-20-2012, 04:39 PM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
I apparently made a few changes before I committed that I forgot about. One is causing a crash when hiring a merc. To fix this, add the following to the Merc constructor:
I'll add it tonight and try to fix another issue when the merc is dismissed. He's dismissed all right, but apparently his group doesn't think so. I'll get it sorted out. Good news though is that it does dismiss him.
|
 |
|
 |

10-22-2012, 09:35 AM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
I had planned to write up some stuff over the weekend, but was too busy to get to it. I started to work on stats last night and did give them an inventory, but could take it away just as easily. I would lean towards having it for customization reasons, and it allows for better code reuse from clients. But, I could be convinced otherwise. It would save the hassle of coming up with equipment sets, since they change weapons every 5 levels. They also change weapon types, as I had seen 1hs, 1hp, and 1hb all used by like level 30.
As far as race and npc_types, there is no different between races, and actually, they are all the same race (human?) with an illusion of their actual race. That is already in. I'm not sure I see the need for any entries in npc_types for a couple of reasons. First, everything needed is already in the current merc tables (most everything is dependent on class, proficiency (apprentice, journeyman) and tier). I think its very similar to pet power, which I believe was poorly implemented by having to use different records for each power for each pet. The rest just need to be handled in code based on those factors. Also, I think most fields in the npc_types table are not relevant to mercs (or at least won't vary among them) while there are also additional fields that aren't relevant to npcs but are for mercs.
Once I get a bit of time to write up what's done and what's not, I will have a better idea what can easily be delegated without us tripping over one another. I don't have a problem with others working on it, as another opinion from someone who doesn't work on bots may be beneficial, since I think of how to attack problems like they are bots. A fresh perspective is definitely helpful.
Once a little more work is done to handle the packets and most of the work is done that affects clients ( suspending, hiring, etc), I would feel better about merging. I don't want one of these big changes to mess anyone up. Once most of the work is just getting merc behavior correct, I say go ahead.
Also regarding equipment and stats. We need to decide on a way to scale spell casting as well as melee damage, especially if we choose not to give them an inventory. For journeyman healers, there can be almost a 100% increase in healing on a rank II spell at level 85. We need to determine if that holds true across the board, or if they also receive AA like bonuses that increase with levels (my assumption). I don't think my mercs currently heal for more than the base amount (level in mid 50s) but I would have to look through my logs.
Last edited by bad_captain; 10-22-2012 at 11:28 PM..
|
 |
|
 |
 |
|
 |

10-23-2012, 03:42 AM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Yeah, definitely not all fields in npc_types would be relevant for mercs. I was just thinking it would be a nice way for servers to be able to adjust merc stats so they aren't hard coded in the source. If it used npc_types, it would let servers adjust stats and min/max damage etc so you could scale them in any way you want. This would remove the issue of trying to have gear come into play for mercs. I think having a gearing option for mercs might be nice as well to make them more flexible, but it might also be nice to be able to just create them similar to creating a pet. Though, given that mercs can range to any level and there are quite a few variations of mercs, that could mean quite a few npc_types entries to do it that way.
One possibility might be to have it load the base stats, min/max damage, health/mana, regen, weapon models, and so on from the db along with maybe a scaling ratio or something right from the merc_types table with a few new fields. Just like NPCs, they could use the npc_types_tint table to load the armor colors. If material/texture was added to that table as well, it would make it easy to simulate the appearance of any armor set on live for mercs.
The main argument I would have for allowing mercs to use stats over armor sets is that stats are much easier to tweak than armor sets are. It seems pretty clear to me that mercs on Live don't reflect exactly what a character of the same class type (such as warrior compared to merc tank) is capable of. I leveled a trio on Live recently from 1 to 60 and had a tank merc that is able to well out tank my warrior that is fairly well geared for his level now. I don't know if it is just that his mitigation is higher or if he just has a ton more HPs, but he probably tanks 2 or 3 times as well as my warrior does. Unless he is geared far beyond the standard gear for that level, I assume Live uses different base stats and/or formulas for mercs from what player characters use. I am sure there is more solid data out there somewhere from the crazy number crunchers, but I haven't done enough research to find it yet.
It could just be that mercs on Live are wearing the same armor set until they reach the higher levels or maybe only the higher tier mercs. If the set has a recommended level on it, maybe the armor just scales as the merc levels, which makes sense for simplifying the process. If that is the case, armor sets might not be a bad option and then we would just need to adjust the weapons that are used, which is much less work. I am guessing we would have to add support to make sure gear scales to level for recommended level gear that mercs are wearing.
You are probably right that AAs are used to increase spell effects. I don't think it would be hard to get that working for mercs. The other possibility would be if they use focus effects on gear they wear. If using the same armor set as they level as mentioned above, the focus effects wouldn't kick in until they reached the recommended level I think.
I wasn't aware that they are all a single race with an illusion cast on them. That should simplify things a bit as far as DB entries go.
|
 |
|
 |

10-23-2012, 05:55 AM
|
Administrator
|
|
Join Date: Sep 2006
Posts: 1,348
|
|
Just create a mercs table to store stats. A lot of the npc_types info is completely useless to mercs and it sucks having to give up valuable npc type ids.
|
 |
|
 |

10-23-2012, 10:30 AM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
That seems like a good idea to just maintain it all in a new table. I think it will be important to decide how to scale the stats based on level. Tier also must affect stats since otherwise, why get the highest tier tank, when the lower tier and cheaper one would work almost as well.
With regards to equipment, just for testing, I had planned to give them the defiant gear for their level, with it changing every 20 levels or so. Weapons are a different story, but they are already in with pretty easy to determine effective level ranges. But, that also adds in another level of complexity. But, then we still need to figure out a way to give the mercs bonuses.
Also, Trevius, I think a lot of the merc tank's ability to tank is its regen. I can't remember the exact numbers, but I know at least at lower levels, they would regen more than 10% (I think closer to 15%) of their hps every tick. They could easily tank 3-4 even con mobs at least through level 30-35 or so without a heal.
|
 |
|
 |
 |
|
 |

10-24-2012, 06:13 PM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
Below is a first attempt at breaking up the remaining work to be done for mercs. Some of the areas are very broad, but will get refined once work is done on them or in other areas. I have done some work on stats, but until the exact method of giving mercs stats and skills is decided, a lot of the other areas can't be worked on (such as combat). I will try to update this as work is done and further clarify the remaining items to do.
Packets
Merc Merchant List- send correct stances instead of hard coded ones
Merc Hire- check if client has enough coin, deduct purchase cost from client
Timer- send response packet, check if client has enough coin, if so- deduct upkeep from client; if not- dismiss merc
Merc Command- zone, change stance, etc
Remove most if not all of the hard coded values left
Finish extracting packet sending functions
Stats
NPC style stats or equipment based?
Weapons or Max/Min hit?
Stats db table
Skills stored in db table?
if using equipment, need equipment lists
stat scaling based on lvl, proficiency, tier
Spells
Spell & Skill lists per lvl & proficiency
Combat
Melee Attacks
Spell Casting
AI based on proximity
Group Roles
Flee based on confidence & situation
Out of Combat
Buffs
Resurrections
Misc
Save merc to DB
Last edited by bad_captain; 11-03-2012 at 01:57 PM..
|
 |
|
 |
 |
|
 |

10-24-2012, 10:48 PM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
I may be tired and not thinking correctly, but was trying to figure out the upkeep part. I looked at a log I did in December on live, and was watching for when I had my upkeep deducted. Here are the only unknown packets arriving at that time. Note: I was charged the upkeep just before I said 'Upkeep' as shown in the last packet. I was charged 1 platinum, 9 gold. I'm having trouble getting 1 platinum, 9 gold out of that, as well as matching it up with one of the existing structs. Am I missing something?
Code:
12/8/2011 9:02:45 PM
[OPCode: 0x7062] OP_ClientUpdate [Client->Server] [Size: 42]
000 | 59 6b 00 00 ce 55 02 00 00 00 b6 24 59 44 b6 2f | Yk...U.....$YD./
016 | a0 42 00 00 a1 c4 00 00 00 00 00 00 00 00 68 cb | .B............h.
032 | 58 40 00 00 00 00 00 78 18 00 | X@.....x..
12/8/2011 9:02:45 PM
[OPCode: 0x528f] OP_Unknown [Server->Client] [Size: 16]
000 | 2d 00 00 00 00 00 00 00 06 00 00 00 05 00 00 00 | -...............
12/8/2011 9:02:45 PM
[OPCode: 0x6537] OP_Unknown [Server->Client] [Size: 4]
000 | 0a 00 00 00 | ....
12/8/2011 9:02:46 PM
[OPCode: 0x2e79] OP_ChannelMessage [Client->Server] [Size: 51]
000 | XX XX XX XX XX XX 00 00 00 00 00 00 00 00 00 00 | MyName..........
016 | 08 00 00 00 00 00 00 00 00 64 00 00 00 75 70 6b | .........d...upk
032 | 65 65 70 00 00 00 00 00 00 00 00 00 00 00 00 00 | eep.............
048 | 00 00 00
|
 |
|
 |

10-24-2012, 11:00 PM
|
Demi-God
|
|
Join Date: Aug 2010
Posts: 1,742
|
|
Are there any AA or faction type mods that might change the amount you're charged?
|
 |
|
 |

10-24-2012, 11:09 PM
|
 |
Fire Beetle
|
|
Join Date: Aug 2012
Posts: 10
|
|
Quote:
Originally Posted by lerxst2112
Are there any AA or faction type mods that might change the amount you're charged?
|
no but you can have a marketplace tokenthat gets deducted rather then plat from your character and the amount per upkeep goes up with levels and merc tier type ... possibly the easiest way to see upkeep is to put away and recall your merc since every time you dismiss and recall mercs it charges a upkeep cost.
Code:
12/8/2011 9:02:45 PM
[OPCode: 0x7062] OP_ClientUpdate [Client->Server] [Size: 42]
000 | 59 6b 00 00 ce 55 02 00 00 00 b6 24 59 44 b6 2f | Yk...U.....$YD./
016 | a0 42 00 00 a1 c4 00 00 00 00 00 00 00 00 68 cb | .B............h.
032 | 58 40 00 00 00 00 00 78 18 00 | X@.....x..
Could be totally off but this looks like during the upkeep it checks for diffrence currencies first.
Code:
12/8/2011 9:02:45 PM
[OPCode: 0x528f] OP_Unknown [Server->Client] [Size: 16]
000 | 2d 00 00 00 00 00 00 00 06 00 00 00 05 00 00 00 | -...............
12/8/2011 9:02:45 PM
[OPCode: 0x6537] OP_Unknown [Server->Client] [Size: 4]
000 | 0a 00 00 00 | ....
Then possibly how much of what to minus plat or token
Mind you thats really just a guess.
|
 |
|
 |

10-24-2012, 11:12 PM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
I don't think so. The only thing I've found that can change the amount is if you use a mercenary contract instead of purchasing from one of the merchants. The mercenary contract ones are a little cheaper (maybe 2/3 the regular price) for upkeep. There is no purchase price.
I think I just had a duh! moment. When spawned, the client requests the merc data, and the server responds, which includes the purchase price as well as the upkeep cost. The server just needs to tell the client to deduct the upkeep cost. Only issue is if the client levels after the data is sent, then the cost would be greater. I would assume (haven't found evidence in my logs yet, though) that the server would resend the merc data to include the updated costs, since the client is charged the correct amount after leveling. I guess I'll need to do more searching.
|

10-24-2012, 11:17 PM
|
 |
Fire Beetle
|
|
Join Date: Aug 2012
Posts: 10
|
|
hey bad_captain was this pre level 50 or post because I know mercs are free no upkeep cost up to a certain level as long as its a Tier 1 or 2 merc
actually just read merc will start costing you 2g every 15 minutes at level 14. so guess the better question is were you 14+
|

10-25-2012, 12:52 AM
|
Developer
|
|
Join Date: Feb 2009
Location: Cincinnati, OH
Posts: 512
|
|
I was around level 20. I was charged 1 plat, 9 gold. I received the message that I was charged, then I said 'upkeep' so I knew where to look. One packet may be the message that I was being charged, but that may be handled client side. I guess I just need to get back in there and get a bunch more packet collects.
|

10-25-2012, 06:25 AM
|
Opcode Ninja
|
|
Join Date: Mar 2009
Location: San francisco
Posts: 426
|
|
Code:
OP_ClientUpdate=0x7062 #
OP_MoneyUpdate=0x528f #
OP_MercenaryDataResponse=0x6537 #
OP_CommonMessage=0x2e79 # You have been Charged for Upkeep
Opcode 0x6537 looks like your 12min timer was rest the opcode converted from hex to dec in ms time
2D65 hex converted to dec 11621 ms timer
|

10-25-2012, 08:43 AM
|
 |
Dragon
|
|
Join Date: Nov 2008
Location: GA
Posts: 904
|
|
I like the idea of being able to control their stats per level / tier in a table like current NPCs, but using that method how would you scale stats for say Level 60 players who are going from Kunark to Velious and eventually into SoL. The level cap stayed 60 that entire time but the content got exponentially harder.
The tier system wouldn't work for this because once a tier is unlocked it's always unlocked. The progression of merc power needs to work similar to the players and not eventually permanently pass the player (especially not by a significant margin like current Live mercs).
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 09:06 AM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |