public override void OnLevelUp(GamePlayer player, int previousLevel)player.AddAbility(SkillBase.GetAbility(Abilities.Protect, 1));
player.AddSpellLine(SkillBase.GetSpellLine("Stormcalling"));
player.AddSpecialization(SkillBase.GetSpecialization(Specs.Stormcalling));114 if (spec.Level >= client.Player.BaseLevel)
115 {
116 client.Out.SendMessage("You can't train in this specialization again this level!", eChatType.CT_System, eChatLoc.CL_SystemWindow);
117 return;
118 }client.Player.SkillSpecialtyPoints -= (ushort)(spec.Level + 1);
if (spec.KeyName == "Running")
client.Player.SkillSpecialtyPoints -= 2;
else
client.Player.SkillSpecialtyPoints -= (ushort)(spec.Level + 1);2530 public virtual void SendTrainerWindow()
2531 {
2532 using (var pak = new GSTCPPacketOut(GetPacketCode(eServerPackets.TrainerWindow)))
2533 {
2534 IList specs = m_gameClient.Player.GetSpecList();
2535 pak.WriteByte((byte) specs.Count);
2536 pak.WriteByte((byte) m_gameClient.Player.SkillSpecialtyPoints);
2537 pak.WriteByte(0);
2538 pak.WriteByte(0);
2539
2540 int i = 0;
2541 foreach (Specialization spec in specs)
2542 {
2543 pak.WriteByte((byte) i++);
2544 pak.WriteByte((byte) spec.Level);
2545 pak.WriteByte((byte) (spec.Level + 1)); <-- guessing this is the training cost, set to 2 if spec.KeyName == running
2546 pak.WritePascalString(spec.Name);
2547 }
2548 SendTCP(pak);
2549 }My project won't be an exact replica of AC. I'm just bringing in my favorite elements. I don't plan on modifying the levelling system since AC had a level cap of over 200.This is called when a character levels up; any leveling code could be placed in here. I'm not familiar with how Asheron's call played as a game, but if it had anything like a character level you'd want to add that here.
I have actually worked on a DOL server before and created a new class, though that was two years ago. I've also got some experience with python when I made a mod for Mount & Blade. One of the concerns I have with creating this single class for all races is that of the mana/casting stat. AC Had two magic-related stats: Focus and Self. The DAOC classes have only one magic stat per class. That's not really the problem, I'll probably settle on Intelligence for the magic stat. But settling on a single magic stat will make the other three magic-related stats useless. So, that would mean to make sure all races remain relevant, I'll need to modify their stats. For example if they're geared toward using Empathy for magic, I'll need to modify their Intelligence to match their Empathy if possible.How much programming experience do you have?
I don't think I'll change the way skills are trained either. DAOC has a good system and I don't feel the need to change it. As I said above, I'm not really trying to make a replica of AC. What I'm doing is more along the lines of creating something that AC2 should have been instead of the disappointment that it was.You should also be able to change the required number of spec points to 'level up' in a given specialisation if you delve into the code - as an example, make it so upgrading running always takes two spec points.
This idea I like!On the running skill, you needn't make a series of self-haste spells. It might be better to change one of the many property calculators in DOL to exact your specification:
http://dolserver.svn.sourceforge.net/vi ... iew=markup
That's the code for the MaxSpeedCalculator! You could just change it so that if we are calculating the speed of a player, we look at their 'Running' skill to figure out their speed. Then it works truelly in the sense you described; players invest points in this spec line, and as a result always run faster.
I probably won't change the magic system too much. Most of the AC spells have something similar in DAOC. Take AC's War Magic for example. There are 7 basic types with 7 levels which is perfect. 7x7=49. Since characters will start with a War Magic spec, there will be no spell at skill level 1 (I don't plan on having ANY baseline spells), thus speccing the War Magic spec to 50 would give you all 7 levels of all 7 spells. Here are the 7 spell types and what I plan to make them into for DAOC:Also, as a quick aside - you can re-do the entire magic system if you want.
So if I wanted a player's run speed at spec 50 to be double that of level 1, would something like this work do you think?You could just change it so that if we are calculating the speed of a player, we look at their 'Running' skill to figure out their speed.
speed = 1 + (player.GetModifiedSpecLevel(Specs.RunSkill) * 0.02)
Ah. I was going for percentage.yes, except 1 base speed is awfully slow (try with 50 or 80 as base)
A quick notice, as we all wondered when we started to play DAoC, you can now have quickness which influence move speed
if (ServerProperties.Properties.ENABLE_PVE_SPEED)
{
if (speed == 1 && !player.InCombat && !player.IsStealthed && !player.CurrentRegion.IsRvR)
speed *= 1.25; // new run speed is 125% when no buff
}speed *= 1 + (((player.GetModified(eProperty.Quickness) / 2) * 0.01) + (player.GetModifiedSpecLevel(Specs.RunSkill) * 0.02))I can confirm this. From my memory, you either set this field on the spell or the spell line... Been so long I can't remember which. If I think really hard, I believe it's on the spell line. But, I could be completely wrong there.From memory, Hybrid has a different view of spell lists (only shows the most recent spell of a given spell type - think skald, bard, etc)
Users browsing this forum: No registered users and 1 guest