Giter Club home page Giter Club logo

dolsharp's People

Contributors

benfalk avatar bifrosttitan avatar digitalbox94 avatar digitalbox98 avatar dol-apo avatar dol-leodagan avatar elcotek avatar elliotb256 avatar graveen avatar hunabku94 avatar jeremv42 avatar jeremyisversioning avatar loki1976 avatar lord-seithenin avatar lotendan avatar lrfalk01 avatar mannik avatar mavcraft avatar merec avatar netdwarf avatar onthedol avatar scrubtasticx avatar shursan avatar tegstewart avatar xanxicar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dolsharp's Issues

Modify "Trigger" "Interact" in GameNPC.cs so Broadcast (b) and Yell (y) options work

OnTheDOL has mentioned it should be easy to make this change so Broadcast (b) and Yell (y) work when triggers with interact are assigned to a mob. This will allow you to assign yell and broadcast text to mobs so they don't pop up a window every time, instead a message can be put into the chat window.

This code snip is the original GameNPC.cs and I think where the modification needs to be made.

// for interact text we pop up a window
if (trigger == eAmbientTrigger.interact)
{
(living as GamePlayer).Out.SendMessage(text, eChatType.CT_System, eChatLoc.CL_PopupWindow);
return;
}

        // broadcasted , yelled or talked ?
        if (chosen.Voice.StartsWith("b"))
        {
            foreach (GamePlayer player in CurrentRegion.GetPlayersInRadius(X, Y, Z, 25000, false, false))
            {
                player.Out.SendMessage(text, eChatType.CT_Broadcast, eChatLoc.CL_ChatWindow);
            }
            return;
        }
        if (chosen.Voice.StartsWith("y"))
        {
            Yell(text);
            return;
        }

Item has already been added. Key in dictionary: '31' Key being added: '31'

As discussed in #database-discussion on discord. The following actions to setup a new DOL server on Ubuntu 16.04 or Debian Jessie result in an exception message when adding Guard Paths.

The below (mostly scripted) can be used on a fresh Debian Jessie VM to reproduce the error.

apt-get install -y git

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian jessie main" | sudo tee /etc/apt/sources.list.d/mono-official.list
apt-get update

apt-get install -y mono-complete nuget mariadb-server

mysql -u root -p
> use mysql;
> update user set plugin = '' where user = 'root';
> flush privileges;
> create database dol;

git clone https://github.com/Eve-of-Darkness/db-public.git
cd db-public/src/scripts/bin/linux
./concat

cat public-db.sql | mysql -u root -p -D dol

cd ~
git clone https://github.com/Dawn-of-Light/DOLSharp.git
cd DOLSharp/
git checkout 1.9.7.3665
nuget restore DOLServer/packages.config -SolutionDirectory ./
MONO_IOMAP=case xbuild /p:Configuration=Debug "Dawn of Light.sln"

cd Debug

LANG=en_US.CP1252 mono --debug --gc=sgen --server DOLServer.exe

# exit DOLServer

sed -i 's/ColoredConsoleAppender/ConsoleAppender/g' config/logconfig.xml

# Point server to local DB
nano config/serverconfig.xml
# <DBType>MYSQL</DBType> # Change DBType to MYSQL
# <DBConnectionString>server=localhost;port=3306;database=dol;user id=root;password=root;treattinyasboolean=False;minimumPoolSize=10;maximumpoolsize=20;</DBConnectionString>

LANG=en_US.CP1252 mono --debug --gc=sgen --server DOLServer.exe

The full error stack trace is

[22:03:46,225] Registered Keep: Molvik Albion Tower
[22:03:46,226] Registered Keep: Midgard Leirvik Tower
[22:03:46,226] Registered Keep: Molvik Midgard Tower
[22:03:46,226] Registered Keep: Albion Leirvik Tower
[22:03:46,226] Registered Keep: Molvik Hibernian Tower
[22:03:46,226] Registered Keep: Hibernia Leirvik Tower
[22:03:46,329] Failed to load keep door from position! DoorID=710101501. Component SkinID=10. KeepID=101
[22:03:46,419] Failed to load keep door from position! DoorID=713201301. Component SkinID=10. KeepID=132
[22:03:46,426] Failed to load keep door from position! DoorID=713201301. Component SkinID=10. KeepID=132
[22:03:46,567] Failed to load keep door from position! DoorID=710402101. Component SkinID=10. KeepID=104
[22:03:46,570] Failed to load keep door from position! DoorID=710402101. Component SkinID=10. KeepID=104
[22:03:46,918] ExecuteSelectImpl: SQL Select (DEFAULT) took 544ms!
SELECT PathID, Step, X, Y, Z, MaxSpeed, WaitTime, LastTimeRowUpdated, PathPoints_ID FROM PathPoints WHERE PathID = @Pathid
[22:03:47,127] Failed to start the server
System.AggregateException: One or more errors occurred. ---> System.ArgumentException: Item has already been added. Key in dictionary: '31' Key being added: '31'
at System.Collections.SortedList.Add (System.Object key, System.Object value) [0x00054] in <2e7c1c96edae44d496118948ca617c11>:0
at DOL.GS.Keeps.PositionMgr.LoadPatrolPath (System.String pathID, DOL.GS.Keeps.GameKeepComponent component) [0x00085] in /root/DOLSharp/GameServer/keeps/Managers/Position Manager.cs:332
at DOL.GS.Keeps.Patrol.InitialiseGuards () [0x0001e] in /root/DOLSharp/GameServer/keeps/Gameobjects/Guards/Patrol.cs:87
at DOL.GS.Keeps.GameKeepComponent.FillPositions () [0x00173] in /root/DOLSharp/GameServer/keeps/GameKeepComponent.cs:458
at DOL.GS.Keeps.GameKeepComponent.LoadFromDatabase (DOL.Database.DBKeepComponent component, DOL.GS.Keeps.AbstractGameKeep keep) [0x001a7] in /root/DOLSharp/GameServer/keeps/GameKeepComponent.cs:376
at DOL.GS.Keeps.DefaultKeepManager.b__11_1 (System.Linq.IGrouping2[TKey,TElement] components) [0x00039] in /root/DOLSharp/GameServer/keeps/KeepManager.cs:166 at System.Linq.Parallel.ForAllOperator1+ForAllEnumerator1[TInput,TKey].MoveNext (TInput& currentElement, System.Int32& currentKey) [0x00029] in <b0fca80f08474611b248e2d30bb75230>:0 at System.Linq.Parallel.ForAllSpoolingTask2[TInputOutput,TIgnoreKey].SpoolingWork () [0x00010] in :0
at System.Linq.Parallel.SpoolingTaskBase.Work () [0x0005d] in :0
at System.Linq.Parallel.QueryTask.BaseWork (System.Object unused) [0x00015] in :0
at System.Linq.Parallel.QueryTask+<>c.<.cctor>b__10_0 (System.Object o) [0x00000] in :0
at System.Threading.Tasks.Task.InnerInvoke () [0x00025] in <2e7c1c96edae44d496118948ca617c11>:0
at System.Threading.Tasks.Task.Execute () [0x00010] in <2e7c1c96edae44d496118948ca617c11>:0
--- End of inner exception stack trace ---
at System.Linq.Parallel.QueryTaskGroupState.QueryEnd (System.Boolean userInitiatedDispose) [0x00081] in :0
at System.Linq.Parallel.SpoolingTask.SpoolForAll[TInputOutput,TIgnoreKey] (System.Linq.Parallel.QueryTaskGroupState groupState, System.Linq.Parallel.PartitionedStream2[TElement,TKey] partitions, System.Threading.Tasks.TaskScheduler taskScheduler) [0x00045] in <b0fca80f08474611b248e2d30bb75230>:0 at System.Linq.Parallel.DefaultMergeHelper2[TInputOutput,TIgnoreKey].System.Linq.Parallel.IMergeHelper.Execute () [0x00054] in :0
at System.Linq.Parallel.MergeExecutor1[TInputOutput].Execute () [0x00000] in <b0fca80f08474611b248e2d30bb75230>:0 at System.Linq.Parallel.MergeExecutor1[TInputOutput].Execute[TKey] (System.Linq.Parallel.PartitionedStream2[TElement,TKey] partitions, System.Boolean ignoreOutput, System.Linq.ParallelMergeOptions options, System.Threading.Tasks.TaskScheduler taskScheduler, System.Boolean isOrdered, System.Linq.Parallel.CancellationState cancellationState, System.Int32 queryId) [0x00082] in <b0fca80f08474611b248e2d30bb75230>:0 at System.Linq.Parallel.PartitionedStreamMerger1[TOutput].Receive[TKey] (System.Linq.Parallel.PartitionedStream2[TElement,TKey] partitionedStream) [0x00000] in <b0fca80f08474611b248e2d30bb75230>:0 at System.Linq.Parallel.ForAllOperator1[TInput].WrapPartitionedStream[TKey] (System.Linq.Parallel.PartitionedStream2[TElement,TKey] inputStream, System.Linq.Parallel.IPartitionedStreamRecipient1[TElement] recipient, System.Boolean preferStriping, System.Linq.Parallel.QuerySettings settings) [0x00045] in :0
at System.Linq.Parallel.UnaryQueryOperator2+UnaryQueryOperatorResults+ChildResultsRecipient[TInput,TOutput].Receive[TKey] (System.Linq.Parallel.PartitionedStream2[TElement,TKey] inputStream) [0x00000] in :0
at System.Linq.Parallel.ScanQueryOperator1+ScanEnumerableQueryOperatorResults[TElement].GivePartitionedStream (System.Linq.Parallel.IPartitionedStreamRecipient1[TElement] recipient) [0x00020] in :0
at System.Linq.Parallel.UnaryQueryOperator2+UnaryQueryOperatorResults[TInput,TOutput].GivePartitionedStream (System.Linq.Parallel.IPartitionedStreamRecipient1[TElement] recipient) [0x000b2] in :0
at System.Linq.Parallel.QueryOperator1[TOutput].GetOpenedEnumerator (System.Nullable1[T] mergeOptions, System.Boolean suppressOrder, System.Boolean forEffect, System.Linq.Parallel.QuerySettings querySettings) [0x000cb] in :0
at System.Linq.Parallel.ForAllOperator1[TInput].RunSynchronously () [0x00039] in <b0fca80f08474611b248e2d30bb75230>:0 at System.Linq.ParallelEnumerable.ForAll[TSource] (System.Linq.ParallelQuery1[TSource] source, System.Action1[T] action) [0x00023] in <b0fca80f08474611b248e2d30bb75230>:0 at DOL.GS.Keeps.DefaultKeepManager.Load () [0x002ee] in /root/DOLSharp/GameServer/keeps/KeepManager.cs:151 at DOL.GS.GameServer.StartKeepManager () [0x0029e] in /root/DOLSharp/GameServer/GameServer.cs:1053 at DOL.GS.GameServer.Start () [0x00415] in /root/DOLSharp/GameServer/GameServer.cs:738 ---> (Inner Exception #0) System.ArgumentException: Item has already been added. Key in dictionary: '31' Key being added: '31' at System.Collections.SortedList.Add (System.Object key, System.Object value) [0x00054] in <2e7c1c96edae44d496118948ca617c11>:0 at DOL.GS.Keeps.PositionMgr.LoadPatrolPath (System.String pathID, DOL.GS.Keeps.GameKeepComponent component) [0x00085] in /root/DOLSharp/GameServer/keeps/Managers/Position Manager.cs:332 at DOL.GS.Keeps.Patrol.InitialiseGuards () [0x0001e] in /root/DOLSharp/GameServer/keeps/Gameobjects/Guards/Patrol.cs:87 at DOL.GS.Keeps.GameKeepComponent.FillPositions () [0x00173] in /root/DOLSharp/GameServer/keeps/GameKeepComponent.cs:458 at DOL.GS.Keeps.GameKeepComponent.LoadFromDatabase (DOL.Database.DBKeepComponent component, DOL.GS.Keeps.AbstractGameKeep keep) [0x001a7] in /root/DOLSharp/GameServer/keeps/GameKeepComponent.cs:376 at DOL.GS.Keeps.DefaultKeepManager.<Load>b__11_1 (System.Linq.IGrouping2[TKey,TElement] components) [0x00039] in /root/DOLSharp/GameServer/keeps/KeepManager.cs:166
at System.Linq.Parallel.ForAllOperator1+ForAllEnumerator1[TInput,TKey].MoveNext (TInput& currentElement, System.Int32& currentKey) [0x00029] in :0
at System.Linq.Parallel.ForAllSpoolingTask`2[TInputOutput,TIgnoreKey].SpoolingWork () [0x00010] in :0
at System.Linq.Parallel.SpoolingTaskBase.Work () [0x0005d] in :0
at System.Linq.Parallel.QueryTask.BaseWork (System.Object unused) [0x00015] in :0
at System.Linq.Parallel.QueryTask+<>c.<.cctor>b__10_0 (System.Object o) [0x00000] in :0
at System.Threading.Tasks.Task.InnerInvoke () [0x00025] in <2e7c1c96edae44d496118948ca617c11>:0
at System.Threading.Tasks.Task.Execute () [0x00010] in <2e7c1c96edae44d496118948ca617c11>:0 <---

---> (Inner Exception #1) System.ArgumentException: Item has already been added. Key in dictionary: '31' Key being added: '31'
at System.Collections.SortedList.Add (System.Object key, System.Object value) [0x00054] in <2e7c1c96edae44d496118948ca617c11>:0
at DOL.GS.Keeps.PositionMgr.LoadPatrolPath (System.String pathID, DOL.GS.Keeps.GameKeepComponent component) [0x00085] in /root/DOLSharp/GameServer/keeps/Managers/Position Manager.cs:332
at DOL.GS.Keeps.Patrol.InitialiseGuards () [0x0001e] in /root/DOLSharp/GameServer/keeps/Gameobjects/Guards/Patrol.cs:87
at DOL.GS.Keeps.GameKeepComponent.FillPositions () [0x00173] in /root/DOLSharp/GameServer/keeps/GameKeepComponent.cs:458
at DOL.GS.Keeps.GameKeepComponent.LoadFromDatabase (DOL.Database.DBKeepComponent component, DOL.GS.Keeps.AbstractGameKeep keep) [0x001a7] in /root/DOLSharp/GameServer/keeps/GameKeepComponent.cs:376
at DOL.GS.Keeps.DefaultKeepManager.b__11_1 (System.Linq.IGrouping2[TKey,TElement] components) [0x00039] in /root/DOLSharp/GameServer/keeps/KeepManager.cs:166 at System.Linq.Parallel.ForAllOperator1+ForAllEnumerator1[TInput,TKey].MoveNext (TInput& currentElement, System.Int32& currentKey) [0x00029] in <b0fca80f08474611b248e2d30bb75230>:0 at System.Linq.Parallel.ForAllSpoolingTask2[TInputOutput,TIgnoreKey].SpoolingWork () [0x00010] in :0
at System.Linq.Parallel.SpoolingTaskBase.Work () [0x0005d] in :0
at System.Linq.Parallel.QueryTask.BaseWork (System.Object unused) [0x00015] in :0
at System.Linq.Parallel.QueryTask.RunTaskSynchronously (System.Object o) [0x00000] in :0
at System.Threading.Tasks.Task.InnerInvoke () [0x00025] in <2e7c1c96edae44d496118948ca617c11>:0
at System.Threading.Tasks.Task.Execute () [0x00010] in <2e7c1c96edae44d496118948ca617c11>:0 <---

object fastcreate command is not taken the object name

The syntax for object fastcreate is :
/object fastcreate [name] [model id]

When using the command :
/object fastcreate "Albion Pennant" 464

The "worldobject" table in the DB is containing Name="World Object" and not the name given as parameter (ie "Albion Penant" here)
The "model" is containing value 100 and not the value given as parameter (ie 464)

Workaround : change the Name and Model directly in the DB once object fastcreate has been used

Arrows pausing in the air until target in range/LOS

Archer mobs will draw and loose multiple arrows, but if the target is out of LOS or range, the shot won't be cancelled. As a result, moving back into range means being insta-killed by multiple arrows at once.

I've noticed the behaviour both with keep guards and bonedancer archer pets, so it's got to be in GameNPC, GameLiving, or StandardMobBrain somewhere.

I'm guessing that the draw action is creating the shot, but it isn't being cleared when the target isn't valid.

spellcrafting combine not working

sshot005
but the not powerfull enough is before i even add a gem.

i know for sure it used to work
added a screenshot, hope it helps in finding the issue

CryptoKey Packet

A friend asked me to poke around the client to look into packets for this game and I found a small discrepancy with the "CryptoKey (0x22)" packet that may be of interest.

The client disassembly shows the data being read as a string (4 byte size followed by string text) followed by an int16 (build according to your code)

Here is a sample packet, 0x22 opcode followed by the packet data.

` 0000: 00 0D 22 07 00 00 00 31 2E 31 32 37 64 00 7D 05 .."....1.127d.}...
After these elements are read the client appears to generate some sort of random key, I'm assuming for crypto.

However if you send the same data above as packet 0x23 it saves the string/build without generating the key. I'm not sure if this string/build is useful but it might make getting around crypto simpler.

EDIT: I made this post late last night but just to add, there is actually 1 byte (bool) before the string32 in the 0x23 version.

Reading obsolete entries from delve.txt

Currently it tries to read every entry from delve.txt which means it's also reading obsolete entries or entries from Live or other shards. This can cause wrong display.

Current workaround: Delete $HOME\Documents\Electronic Arts\Dark Age of Camelot\delve.txt before logging in.

Friend monitor not showing friends anymore

Friend's names don't appear anymore in the friend monitor when adding a new friend in your friend's list.

Trying to fix it in Packetlib168.cs and Packetlib169.cs does not change anything. Maybe something should be added in Packetlib1124.cs, Packetlib1125.cs, Packetlib1126.cs or Packetlib1127.cs ?

05-04-2023 10-56-05

Client 1.127 - Warmap Teleport Button not being handled

When using the Warmap Teleport Button this error is triggered.

PacketPreprocessor: Preprocessor prevents handling of a packet with packet.ID=67
PacketPreprocessor: Preprocessor prevents handling of a packet with packet.ID=67
PacketPreprocessor: Preprocessor prevents handling of a packet with packet.ID=67
PacketPreprocessor: Preprocessor prevents handling of a packet with packet.ID=67

This change may have happened before 1.127

Question - What's the point of this block of code (what appears to send player positions that are out of range without isVisible check)

https://github.com/Dawn-of-Light/DOLSharp/blob/master/GameServer/world/WorldUpdateThread.cs#L185

It looks like the preceding section of code sends out player locations/updates for players within range (3600 units or less by default).

Then, this section looks like it sends out the rest of the player locations (in zone?).

If the server only sent out positions of players in range, what would be the consequence? Would it reduce radar viability? Would it have bad side-effects on the client side?

Focus Spell are not properly removed on move or cancel

Two distinct bugs are in focus spells, which however look fairly similar.

When character is moving while a focus is running, the focus is interrupted and properly removed from Concentration spells however the effect is still on the target for the remaining duration which should not be the case. On Live the focus spell is immediately removed.

The second one is cancelling the spell by clicking it again, which has the same remaining duration problem, but here it also doesn't remove the EventHandler and therefore gets triggered once the character moves (long after it has been cancelled).

I think I found a possible fix for it and will post it later or tomorrow, if I don't find an obvious bug in it.

No confirmation mail on dolserver.net

Hello,

I know this does not belong here, yet I don't really see another option reaching out.

The problem is that new accounts don't get confirmation e-mails and you don't get an e-mail to your known mail account if you forgot your password (which is the case for me).

Kind regards :)

Pet brains use hardcoded spells

Currently, most of the pet brains (underhill is an exception) have hardcoded lists of spells they can use. They won't cast new spells added to them in the DB.

I intend to fix this myself, but wanted to have it here as a reminder, but if it isn't resolved in six months it's safe to assume I've been hit by a car and somebody else should do it.

Heretic Focus Damage spells behavior different on live

Hello,

I am currently poking around a bit in the Heretic spell code. First of all I want to lay out what I found out on Live so it is at least clear what has to be done.

tl;dr:

  1. damage growth for each successive tick is m * ( 1 + growthrate * (n-1) ) where m is base damage and n is the number of (successive) focus ticks
  2. resists do not have an influence on the damage of following ticks
  3. the focus ends after a certain duration
  4. growth is 50% for all damage focus spells but the uninterruptable where it is 60%
  5. there is a growth cap which can not be exceeded by more successive ticks

Current/wrong state:
Example 1:
1. tick: 100 Damage
2. tick: 125 Damage
3. tick: 156 Damage
4. tick: 195 Damage
and so on ... so the damage is roughly m*1.25^n-1 where n is the number of ticks and m is the damage on first tick before variance.

Example 2:
1. tick: 100 Damage
2. tick: Resist //lowers effective damage by 25%
3. tick: 93 Damage
here we see that the addition and subtraction is not symmetric. 1*(1+0.25)*(1-0.25) โ‰  1

Same examples on Live: (assuming 100 base damage and 25% growth)
Example 1:
1. tick: 100 Damage
2. tick: 125 Damage
3. tick: 150 Damage
4. tick: 175 Damage
This is more of an extrapolation of the Live behavior. There is no spell with this growth and start damage, but the pattern is the same. Damage difference is always from the delve multiplied by growth rate (on Live you see 50% or 60%)

Example 2:
1. tick: 100 Damage
2. tick: Resist //implicitly 25 damage added to 125
3. tick: 150 Damage
Resists do not stagnate or even lower the damage, but increase it implicitly for the next tick. The 3rd tick does 150 Damage regardless of resists if it is not resisted itself.

Example 3: (growth_cap of 60%)
1. tick: 100 Damage
2. tick: Resist //implicitly 25 damage added to 125
3. tick: 150 Damage
4. tick: 160 Damage // (60%+100%)*initialDamage
5. tick: 160 Damage

Another thing to mention is duration. The focus stops after a certain duration (or number of ticks if you will) and this duration is even affected by spell duration (surprised me).

This is not exhaustive, so I will add some additional problems as well.

Xp Issues

Fresh compile of DOLserver and fresh DB from github when new char is made their xp stays at 100% and they keep leveling no mobs killed at all
client 1.125

Heretic Focus Damage Snare(+AE) not livelike

  • target requirement needs to be fixed (you can click anywhere on Live)
  • simultaneous double tick for all snare damage focus spells need to be fixed
  • growth and cap need to be applied like on normal damage focus spells
  • make power usage dependent on tick and not number of targets
  • remove damage fade out on AE damage (all targets get same base damage)
  • if unfocused target walks out of focus radius it should no longer be damaged

Skin for keeps in Thidranki

No sure what is the reason of the issue, but I have noticed the skin for the keeps in Thidranki is partially blanks.

Looking at an old change performed on Los-Ojos/DOLSharp-1127, only the case corresponding to USE_NEW_KEEPS == 1 has been kept in the code.

By applying the same change on DefaultKeepManager.cs on this repo, I have the keep skin back to normal. So, should we propose this behavior as well on the official repo ?

Capture

What AI changes do you want to see?

I'm planning on tweaking the brains a bit, and wanted to see what people would like to see changed.

A few things I'm thinking of are:

  1. Mobs don't always face in the direction they're attacking, so having them face their current target each tick is a good idea.
  2. Caster mobs tend to melee forever rather than stopping to cast again.
  3. Spell casting currently forces the brain to iterate through the entire spell list, so I'd like to sort spells the same way I sorted styles. For categories, I'm thinking: Damage spells, instant damage spells, heal spells, instant heal spells, buffs/misc spells, and buffs/misc instant spells. Can anybody think of other categories we'd need?

More suggestions are welcome!

1.126 support

I hacked in 1.126 support by adding a packet lib that extends 1.125 without changing anything. The client does not react to DoL's crypt key response. Is there any knowledge of what changed in 1.126, or plans to support it?

old archery

the old archery. Longbow skill "Critical shot" "Penetrating Arrow" and all others are not assigned to the archery. they are in the database but are ignored.

Stable Merchants don't accept some tickets

When a quest gives a ticket for a horse ride, the stable master won't accept it.

I suspect this has to do with stable merch behaviour checking for hardcoded values, but might be quest scripts hardcoding stuff instead.

Edit: Looks like some stable masters don't accept some of their own tickets, either.

In-Game Chat Bug

When porting, the chat history is gone. If you have two clients running, sometimes you have the history of the other client.

Consignment Merchant

GameServer\housing - LotMarker.cs: The "Consignment Merchant" is missing in the file for all realms.

Name Generator

Hello,

I'm looking for the name generator code that powers the initial character creation screen. For some reason I recall seeing it in the source, but I can't seem to find it.. Could anyone point me in the right direction?

If this is done client-side, my apologies, feel free to close this issue.

Thanks!

-niothiel

Combat mechanics - Block/guard incorrect

One aspect, it using con level to diminish block/guard when it more natural progression due to level difference.

Tested block rates with a level 50 Valkrie with high blocking, blocking against a level 50, was 98.7, against a 51 98.8, against a level 53 98.1. One level difference despite going from a yellow to oj con caused no appreciable difference, but going up to 53 does.

Next there is a modifier on guard to make it "slightly worse than block" when guarding is same or better (at least at guard 3, below that your shield is so low hardly worth guarding so have limited experience or testing with this scenario). It better in that it does not have the attacker penalty except in situation.

The attacker penalty is not necessarily implemented correctly either. More attackers doesn't reduce blocking until you have more attacks in a round than shield size can handle (1 small, 2 medium, 3large) at which point any over that do not get blocked. Guard is subject to same block caps (60 against players and pve it shield size dependent small, medium, large respectively 80, 90,99)

This is evident in following tests conducted years ago:
https://gaheris.net/p/test_shield_size.html

1.125 Client spell tool tips

On client 1125 all the spell tooltips say all spells are level 1 and they don't say how much damage or runspeed % they do now.

Combat skills are fine its just spells

P.S. They work on Los-Ojo's repo say maybe somthing was missed on merge?

Friends Manager is behaving weirdly

On Admin Sandbox Server,

Every time your character zone there is a warning in log about Friends Manager Cache and Status Cache

Gameplayer (DOL.GS.GamePlayer name=Haniaan DB_ID=d239dc89-ccf8-4763-8e14-bdb4b4ff0ed2 oid=-1 state=Inactive reg=181 loc=423089,444756,5959 class=Enchantress(41)) is already registered in Friends Manager Cache while adding!
Gameplayer (DOL.GS.GamePlayer name=Haniaan DB_ID=d239dc89-ccf8-4763-8e14-bdb4b4ff0ed2 oid=-1 state=Inactive reg=181 loc=423089,444756,5959 class=Enchantress(41)) is already registered in Friends Manager Status Cache while adding!

Faulty spells

  • The minstrels songs are not displayed correctly as a pulse.

  • The Bard's healing songs are not in the "Songs" category

  • The songs of the bard have the wrong icon

  • If at Ranger, Scout, Hunter selects the arrow type, arrows come towards you.

  • In the Bonedancer, the Sub-Pets of the Commander do not attack with the Commander.

  • If you click on your own player from his realm and you also want to shoot him, he pulls an arrow out of the quiver and wants to shoot, but then says that you can not attack any player from his realm. Normally, he should not even pull an arrow out of the quiver and it should come soon, that you can attack any player from his own realm.

  • The BP Healer Pet only buffs the player with the HP regen buff, but not the commander or other pets

  • LvL 40 Spec Commander (Summon Bone Keeper, mob summoned: Dread Guardian) seems to stop combat after spell cast. If sent to attack a mob on its own, minion pets will run towards the mob while Guardian is casting, but then come back after the spell is cast. They also will attempt to disengage if the minions are in melee with the mob and the Guardian finishes casting, drawing the mob back towards the player.

  • You can not use Left Axe in Midgard, you have two hammers instead.

  • RR5 Enchanter Ability: Sometimes you can not activate RR when mobs are on the pet. In addition, you have the same Aggro, if you activate the RR.

The pet stops after the fight and does not come if you follow it after the fight. You have to get the pet on passively for it to come.

-The Necropet does too little melee damage and the spells like Bomb or Damageshield do too little damage.

Spell icons update when levelling up (packet issues) or when talking with merchants

Hello,
I think there is a small issue with packets when a player is levelling up (or leveling his training) because spell icons are not updated on the spell bars. (unless the player disconnects)
For example we have a druid level 5 having in "Nurture" spell list spells like Strenght of the Oak, Oak's Stoutness... etc
Let's level up the druid to level 20 "vigor of the redwood" replaces "Strenght of the Oak", obviously, but the icon isn't updated in the spell bar.
I think those icons were uptating themselves with the version 1.109 of the game.dll. but with recent versions it seems that it doesn't work.

Same issue when for exemple a player checks an item with procs/spell in his inventory then talks to a merchant all items sold "seems" to have the same procs/spells and show their icons. Same if you talk to another merchant, and this as long as the player hasn't selected another item in his inventory that has no spell/procs.

Here's a video showing the issues :
https://youtu.be/UdxK5PonLPg

Animist gains XP after death if spores are still active.

Animist class has an open exploit in which they will die, but continue to gain XP from kills that are targeted by their summoned Mushrooms. To replicate, lay down some mushrooms and have them pull in mobs. Once you have a set amount of mushrooms, allow a mob to kill you. During the release timer you will continue to earn XP for each kill by your mushrooms.

DivineInterventionAbility.cs

Divine Intervention generates aggro on the healed in PvE, as if it had healed the appropriate amount of hitpoints itself. in the current form, the healer gets the aggro. this is not correct.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.