Coder Social home page Coder Social logo

the-alpha-project / alpha-core Goto Github PK

View Code? Open in Web Editor NEW
236.0 11.0 74.0 51.86 MB

0.5.3 experimental emulator written in Python.

License: GNU General Public License v3.0

Python 99.91% Dockerfile 0.03% Shell 0.06%
mmo emulator python warcraft wow alpha 3368 053

alpha-core's Introduction

ko-fi

alpha-core

0.5.3 experimental emulator written in Python.

Installation

You need Python 3.9+ and a MariaDB server. For project requirements, install them with pip3 install -r requirements.txt.

You will need a realm, a dbc and a world database, more info can be found in the config.yml file you will find inside etc/config/. Also, you will need to rename the .dist config file to match the correct config name.

Once you create the three databases, populate them using the corresponding sql files located inside etc/databases. If there are any sql updates, apply them in order.

To generate .map files, look for the Extractor settings inside config.yml, set wow_root_path and then run main.py -e, after that, enable use_map_tiles setting.

Run in Docker

Minimum requirements are docker 19.03+ and docker-compose 1.28+. You can install docker through your OS package manager or via download through the docker.com site and docker-compose using pip3 install docker-compose.

  1. Copy etc/config/config.yml.dist to etc/config/config.yml.
  2. Run: docker-compose up -d.

Development in Docker

The docker-compose configuration will mount the entire project folder on /var/wow in the main container. To access the container run docker-compose exec main bash as usual, to inspect the logs docker-compose logs -f main.

To enable extra development features please run docker-compose --profile dev up to run the project with the developer profile on.

If run with the development profile the codebase will be under a continuous watch process and server will reboot everytime the code has changed. To manually restart the server run docker-compose restart main.

In addition, a phpmyadmin image is provided in the docker-compose for ease of browsing the database, this is accessible through compose profiles. You can access phpmyadmin by visiting http://localhost:8080.

Rebuilding the database

To rebuild the database from scratch and apply again all the updates run docker-compose up --renew-anon-volumes sql. Note: this will WIPE any custom handmade changes, including accounts.

alpha-core's People

Contributors

a-ivanov avatar cullenwatson avatar cyberrebell avatar daribon avatar devw4r avatar diff3 avatar dirtbikercj avatar dynat avatar fluglow avatar geo-tp avatar grenderg avatar henhouse avatar imgmaterial avatar klorine28 avatar luigimannoni avatar mindphluxnet avatar n67094 avatar owniz avatar paddimir avatar radongc avatar ratkosrb avatar siralireza avatar thateuler avatar yushe 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

alpha-core's Issues

Windrider quests can't be completed and flight path window appears instead

Description
It tells you to bring a item to the griffin rider but he just shows you the flight paths when talking to him.

Steps to reproduce

  1. Take quest that tells you to give a item to transport to X city - Ex: Honor Students , A Swift Message
  2. When talking to Griffinrider he gives flight paths - Ex: Thorgrum Borrelson , Thor

Expected behavior
See a screen to either select the quest for completion or see flight path screen

TODO: NPC display_id and equipement Teldrassil

Update display_id c.f images:

Just let me know if some aren't legit.

display_id shadowglen
74_RcmSZnZ

display_id bloodfeather Rogue
images_2149

display_id bloodfeather Sorceress
images_2150

display_id teldrassil sentinel
jokey_WoWScrnShot_041704_231459_resize
jokey_WoWScrnShot_041704_225325_resize

display_id Syral bladeleaf
Weapon Syral bladeleaf
jokey_WoWScrnShot_041804_002033_resize

Weapon Athridas Bearmantle
wowpc_032504_022

display_id zeen foulhoof
worldofwarcraft_040904_001

disaply_id Strigid Owl
worldofwarcraft_040904_002

TODO: Correct Nez'raz display id

Describe what needs to be implemented or enhanced
The current display id of Nez'raz (Zeppelin Operator) (3149) is guessed, find the correct one if it exists in 0.5.3.

Expected end result
He should look like this:
image

QUESTION: Working features list

Hello,

awesome project!

Do you have a list of working features?
Something similar to this:
https://github.com/barncastle/Alpha-WoW

Current status of features:

Chat and emotes
Chat channels not implemented
Items
Trading
No enchanting through the chat window
Groups
Group loot not implemented
Quests
No ScriptDev equivalent so scripted quests won't work
Not all of the correct quest filters are applied
Issue with displaying quest objective count
Instance portals
Instancing itself is not implemented
Gameobjects
Only spawning (chests are animated though!)
NPCs
Vendors, talent trainers, bankers and skill trainers are working to some degree
Basic faction implementation
Friend/Ignore List
Talent "tree"
Spell effects not implemented
Spell casting
Spell effects not implemented but cast animations and pre cast checks are
Creatures
Can melee combat
Looting works, couldn't figure out how looting worked in terms that tagging mobs wasn't a feature, should everyone have access to the dead mob's loot?
Movement isn't correct
AI not implemented
Basic faction implementation
Levelling
Correct talent and skill points being applied

Deadmines cannon to last room

When engering deadmines, everything seems to work just fine until you reach the cannon to enter the final boss room.

You can load in the Defias gunpowder and the cannon says it's firing, however many times you do this the door stays locked.

TODO: Critical strikes

Describe what needs to be implemented or enhanced
Implement critical strikes for spells.

Expected end result
Spells should be able to result in critical strikes and deal extra damage or healing.

Guidance

  1. Implement a method in StatManager that resolves the total critical strike chance for a spell. This should for example account for the difference in critical strike chance between magic spells and abilities. You may be able to utilize existing logic for base attacks. Spell school skill can also be accounted for similar to weapon skills, since we don't have information on how they affected combat.
  2. Roll critical strike chance in either the previously mentioned method or another one depending on requirements.
  3. Add critical strike bonus multiplier in calculate_spell_damage for spells. Different spell types may(?) have varying critical strike bonus values.

Dwarf Mage crashing client

As soon as you enter world with a dwarf mage, the client will crash.

Edit // Seems to only occurred once, created several dwarf mages and it didn't crash.
Have no idea why the first entry on my first dwarf mage made it crash and why that character kept crashing afterwards.

TODO: Implement creature and gameobject pooling

Describe what needs to be implemented or enhanced
At this moment all creatures and gameobjects are spawned directly from the spawns_ tables. That's not correct, pools should be taken into account to prevent, for example, multiple gameobjects spawning in the same spot (i.e. Barrels + Food Crates) or rare mobs that have different spawns, appearing in all spots at once.

Expected end result
Before spawning a creature or gameobject, it should be checked if they belong to a pool or not and then decide (randomly?) what to spawn based on the pool information.

Guidance
Provide any useful information, hints or guidance in general that can be useful for another developer to start working on this task.

  1. At this moment we are lacking the pool database tables, they need to be taken from VMaNGOS.
  2. load_gameobjects and load_creatures will probably need to be heavy altered.

Can't attack critters with spells

Describe the bug
If you try to cast a spell on a critter it will never damage the critter or make the critter aggro.
The mana is spent and the cast finishes, but nothing happens after that.

Auto attack works, not any spells.

Steps to reproduce

  1. .tel goldshire
  2. Cast any spell on a critter
  3. Mana is spent but nothing happens after cast.

Expected behavior
Critter should take damage.

TODO: Despawn NPCs with high NPC entry

There are vast amount of NPC entries at high entry that should not be spawned in alpha.

When it comes to totems there are several NPC entries that does not exist in 0.5.3 spell dbc:
image
image
However the spell could have been added after the npc getting created.
Since not even Stoneskin totem has in the 0.5.3 dbc, but rank 1 npc has entry 5873

Last NPC totem entries that has spells in dbc:
image

heidisql_F2KzUY4zlE
heidisql_0ljcvM1ZFc
Between 5,9k and 6,1k tons of totems added not available in 0.5.3 but probably in 0.5.4.

fevrier2004-01
Alyssa Blaye has entry 5665 and the image is from 0.5.4, fishing in UC slime wasn't possible until 0.5.4.

EarlyEnchanting
Vance Undergloom has entry 5695 and the image is from 0.5.3.

unindel_wow55
From 0.5.3. Winifred Kerwin has entry 5703. Image dated 2003-12-14.
The summoned NPCs exist as well at just a bit higher entry:
image

image
Up to entry 5700 100% confirmed for being in alpha.
Guardian of blizzard is located at entry 5764, NPC was used to prevent players from entering unfinished locations.
I've only been able to find images of Guardian of Blizzard from 0.5.4 and above.
Image from 0.5.4:
shot8
heidisql_1T9gjGSqlt
Guardian of Blizzard has entries above and below it which are from either WC or Barrens, fitting the 0.5.4 theme of Tri-Horde push (Troll, Orc, Tauren).
Going into broadcast text and looking at the text that Guardian of Blizzard uses one can see that its broadcast text entry is located almost right next to last entry for Undercity broadcast texts:
EmEditor_GMBj0jEiCx
The very last entry next to Guardian of Blizzard text "%s whispers to $N the secret to opening his strongbox." is used by unknown NPC. Might be unused text used for the Apothecary Keever event, which the entry next to it belongs to.

However we can dig even deeper than this.
What are the last displayids used in 0.5.3?
explorer_EYzWLZAipV
What displayid of those are used by an NPC with high NPC entry. Answer is displayid 4179.
The displayid 4179 is used by NPC entry 5759.
heidisql_RS9q7jUF6O
The NPC entry next to 5759 uses a displayid not available in 0.5.3 and is located in kalimdor, fitting for 0.5.4. Following entries are from WC, also fitting for 0.5.4 Tri-horde push.

The last NPC entry in the 0.5.3 client should be 5759.

image
Entry 6706 flight master in Nijhels point, the location has a gryphon stand in 0.5.3 but is very very unfinished. Nijhels point didn't receive its final look until 0.10.0.3892, with only a bridge and the location being retextured between 0.5.3 and 0.10.0. Nijhels point does not exist in TaxiNodes.dbc for 0.5.3, which means it was never any location where you could use flight path in 0.5.3. Nijhels flight path was added in 0.6.0.
firefox_fJQsSoZVM8
Entry 6726, flight master in Shadowprey Village, that village doesn't even exist in alpha. Shadowprey Village was added in 0.10.0.3892.
If Shadowprey Village didn't exist then why does this entry exist at such a low entry?
Because the NPC wasn't spawned in Shadowprey Village, it used to be spawned in Ghost Walker Post in 0.6.0, when the flight path was added, from TaxiNodes.dbc 0.6.0:
firefox_djI2ATNkbL

firefox_3P2lEr8Xss
Last entry of flight master NPC in the 0.5.3 which has a node in taxipathnodes.dbc is 4407 Teloren in Stonetalon Peak.
Not a single flightmaster entry after 4407 has any node in taxipathnodes.
The first flight master NPC entry that shows up after 4407 is 6026, Breyk, flightmaster in Swamp of Sorrows. The first time Swamp of Sorrows shows up in taxipathnode is 0.5.5, which means that it was either added in 0.5.4 or 0.5.5 (since we do not have the 0.5.4 we cannot check).

Then there is this:
image
It continues with other entires with a few entries later down too.
With innkeepers come you guessed it, Spirit healer:
image

Ghost spirit healer were added in patch 0.6.
The tons of innkeepers getting added starting with 6,7k entry? Because hearthstones got added in 0.6.
firefox_5yK3zFTT91

heidisql_791z5asyBr
7k entries almost instantly start with winterspring NPCs, a zone completely unfinished in alpha.

heidisql_YrdtxcH9ws
Undercity entries are at around 4,5k and knowing that it UC was added in 0.4 we can build on top of that.
heidisql_vbPacYLnUh
Knowing that ironforge wasn't finished a month prior to human push 0.5 (and might not even been finished in human push) it too is reflected in NPC entries, around Ironforge entries are at around early 5k.

heidisql_mLd2Ilu69Z
heidisql_tbY03zDklo
7314, TEST battlemaster and a bunch of racial mounts added between at around 7,6k.
Racial mounts was added in 0.7.0 and battlegrounds was announced in 0.7.0, however it was not available on the beta.
image
image

Patch 0.8 added auction house.
image
And the auctioneer NPCs appear about 1k entries above known what is presumed to be 0.7.0 entries.

It appears that blizz added about 500 NPC entries per patch.

heidisql_agbSboXvr0
Entry 10919, Shatterspear Troll in Shatterspear village.
The entire village didn't exist until 0.10.0.3892.

CG6dT1TUkAAVJkN
Onyxia, entry 10184 was first spawned on August 12, 2004. It is possible that the entry was created earlier but considering raid content was rushed most likely not much earlier.

heidisql_SyQR7OmZox
Sylvanas wasn't added until at least 0.9.0+ and her entry is 10181.
WoWScrnShot_052004_222822
Image from 20-05-2004 still does not have her spawned.
62
First image with Sylvanas showing uses a placeholder model and is from patch 0.9.0, or above (due to talent icon being 0.9.0+.

Starting NPCs in Eversong Woods in TBC are at around entry 15k.
Those entries were added sometime between early 2005 and blizzcon 2005 (october 2005)
Molten Core entries start at about 12k, which was developed at very end before wow launch.
Meanwhile last entry of vanilla is 18k.
It is therefor extremely unlikely that entries above 10k should exist in 0.5.3.

TL;DR only entries up to 5700 are 100% confirmed have existed during 0.5.3.

Describe what needs to be implemented or enhanced

Despawn all entries above 10k
UPDATE spawns_creatures SET ignored = 1 WHERE spawn_entry1 > 10000;

I do not recommend going lower yet, due to the large amount of NPCs that get despawned. It has to be researched more before going lower and double checked that no entries that possibly should be in alpha, do not get despawned.

Expected end result
Clears up NPC spawns that should clearly not be in alpha.
Considering only entries above 10k is despawned thus far, not much should change.
Thus far I've only seen silithus completely despawn, which is expected, considering how it was unfinished even at release.

TODO: [Elywynn Forest] Find Antonio Perelli Correct DisplayID & Remove Bad Object

Incorrect DisplayIDs
Antonio Perelli (Entry: 844 - [worldport 0 -9631 -1180 42])
Uses a DisplayID that doesn't exist in the game yet.

Bad Object
In the Eastvale Logging Camp there are objects called "Bundle of Wood" related to the quest "A Bundle of Trouble" which doesn't seem to be in the game yet as the NPC that gives this quest 10616 is too high to exist yet.
I can't confirm or deny if the quest is meant to exist or not since the quest itself has a low ID but the object currently uses a Display ID not present in the game.

  • Find Antonio Perelli's DisplayID
  • Despawn Bundle of Wood

Inventory Bug - Quivers and Bags if full have issues when swapping items outside the bag

Describe the bug
When swapping arrow stacks outside the quiver (example main inventory) the arrow stack from outside the quiver are labeled as the ones inside the quiver (if different types) and the ones in the quiver remain(?) unchanged from before swap.

  • If you want to drag any of the arrow stacks in previous interaction, both dim as like moving both.
  • if actually moved the one inside the quiver in the main inventory the previous one that was dimmed in the main inventory disappears visually.
    • If you drag the one that was previously inside the quiver on the "empty" slot it remains dimmed and can't interact.
    • If new item is put in "empty" slot the game recovers the item
    • If you logout while you have the "empty" slot, on relog the item slot is actually empty, losing the arrow stack.

Steps to reproduce

  1. Swap arrow stack of type A with arrow stack B in main inventory. (Quiver has to be full)
  2. Try to drag arrow stack from the quiver (from previous interaction) in main inventory
  3. a. Drag the same arrow stack to slot that "emptied"
  4. b. Drag any item to slot that "emptied"
  5. c. Logout and login to observe arrow stack in slot that "emptied" is missing completely and non recoverable

Expected behavior
Arrow stacks swap inventory slots

Screenshots
2.
image
image
3. a.
image
3. b.
image

TODO: Remove items not in 0.5.3

There are vast amount of item entries at high entry that should not exist in 0.5.3 alpha.

image
Image from item_template DB.
No such spells exist spell.dbc in 0.5.3 client.
Instant poison rank 2 exists in the 0.5.5 spell.dbc.

image
Starting gear exists in 0.5.3 client.
Which gives us us a baseline that 0.5.3 ends somewhere between entry 6,1k and 7k.

image
None of those spells exists in 0.5.3 client.

image
image
All of the spells above exists in the 0.5.3 client.
Therefor 0.5.3 ends somewhere between entry 6,1k and 6,4k.

image
Last item Pattern: Dark silk shirt in the 0.5.3 that has a spell that exists in the 0.5.3 client.
Meaning that 0.5.3 ends somewhere around 6,4k entry.

image
If one takes last item displayid from itemdisplayinfo.dbc into account.
Then last item is the quest item Shadowstalker Scalp.
It is an unique item displayid and only used for that item.

image
The item drops off Hatefury Shadowstalker, a NPC that does exist in the 0.5.3 client.

TL;DR last item in 0.5.3 should be item entry 6441.

Describe what needs to be implemented or enhanced
Remove all items above item entry 6441.

Expected end result
Only items that existed in 0.5.3 will be available.

Guidance
Nuke all items entries above 6441 from item_template, npc_vendor and item_loot_template.

TODO: Complete pet/charm/mind control behavior.

Describe what needs to be implemented or enhanced
The ability to have temporary pets should be available for all units. Players should also be able to have permanent pets that have persistent names (and other states?).
Pets are actively being worked on, and I'll keep a list of missing core behavior below. The list will be updated when new requirements arise or features are implemented.

  • Basic beast taming spell handling.
  • Pet spell action bar loading.
  • Pet action packet handling.
  • Pet SpellManager usage.
  • Temporary, time-limited possess pet behavior (charm beast).
  • Basic pet command state application (handling packets and storing values to pass to AI).
  • Player following and combat movement.
  • Permanent pet summoning (hunter pet / warlock pets).
  • Database persistency.
  • Research (and fix if needed) how much damage pet auto attacks should deal.
  • Complete pet leveling behavior.
  • Spellbook populating for pet spells (Demon/pet tab).
  • Pet talents for hunter pets and spell teaching.
    • Pets can learn talents at Pet Trainers, and other abilities can be learned to be taught at family-specific trainers.
    • Summoned warlock pets can be trained at Demon Trainers.
    • The pet training system has a lot of its aspects guessed since we have no data on pet trainers in 0.5.3.
  • Active pet persistence and display in character selection.
  • Pet react state usage in AI.
  • Temporary, on-spawn summoned pets for creatures.
  • Basic automatic pet spell cast behavior.
    • Cast available pet spells on cooldown until a proper AI system is implemented.
  • Player mind control behavior.
  • Pet despawn behavior when mounted or out of range of summoner.

Expected end result

  • Pets are summonable, persistent and fully commandable for hunters and warlocks.
  • Units can temporarily mind control/charm other units and control/command them.
  • Players have the ability to teach their permanent pets spells and talents. Hunters can learn pet spells by taming and playing with different pets, warlocks via demon trainers.
  • Creatures in the world have pets where intended with working combat AI.

Guidance
Most work being done on pets should be isolated into pet-related files such as PetManager.
If you want to contribute to implementing this system (including sharing related screenshots etc. that might help), please contact me via the project's Discord. I'm actively working on pet behavior in Fluglow/alpha-core/tree/pets.

TODO: Correct Captain Eo display_id

Describe what needs to be implemented or enhanced
Captain Eo (3895) is not using the correct display_id, try to find the correct one in 0.5.3 (if it exists).

Expected end result
He should look like this:
image

Quest item not recognized for completion after level

Description
When a quest that tells you take this and report/send it to this other guy then level up and after that you can't finish the Q because it doesn't register as you having the item

Steps to reproduce

  1. Take quest - Ex: Report to Goldshire
  2. Level Up
  3. When trying to complete quest, NPC shows that you need item from start of Q to complete Ex: Marshal McBride's Documents

Expected behavior
Quest is complete-able

Also happened with Report to Thomas

The Barren's Horde Guards are dabiri cubes

Describe the bug
The horde guard NPCs that are dotted around the barrens use a display id that is 100 or so digits higher than what is available in 0.5.3.
They need to be updated to use the same display ids which Orgrimmar Grunts & Razor Hill Grunts use.

NPC Info
Entry: 3501
Display ID: 4261

TODO: Take into account all 4 spawn_entries of the spawns_creatures table.

Describe what needs to be implemented or enhanced
Each spawn entry can hold 4 different creatures that will be randomly selected. At this moment only the first one is being taken into account to spawn the creature (spawn_entry1).

Expected end result
All 4 spawn entries need to be taken into account (when > 0) when deciding which creature to spawn.

Guidance

  1. The foreign key that's in spawns_creatures referencing creature_template might need to be deleted as currently it's only applied to spawn_entry1.

TypeError: 'type' object is not subscriptable when try to run

Hi. Tryin to run server but get that error:

(venv) C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core>python main.py
Traceback (most recent call last):
File "main.py", line 9, in
from game.world import WorldManager
File "C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core\game\world\WorldManager.py", line 9, in
from game.world.WorldLoader import WorldLoader
File "C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core\game\world\WorldLoader.py", line 6, in
from game.world.managers.objects.creature.CreatureManager import CreatureManager
File "C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core\game\world\managers\objects\creature\CreatureManager.py", line 9, in
from game.world.managers.objects.UnitManager import UnitManager
File "C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core\game\world\managers\objects\UnitManager.py", line 10, in
from game.world.managers.objects.spell.AuraManager import AuraManager
File "C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core\game\world\managers\objects\spell\AuraManager.py", line 4, in
from game.world.managers.objects.spell.AppliedAura import AppliedAura
File "C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core\game\world\managers\objects\spell\AppliedAura.py", line 89, in
class AuraManager:
File "C:\Users\IGOR FEDOROV\PycharmProjects\alpha-core\game\world\managers\objects\spell\AppliedAura.py", line 162, in AuraManager
def get_auras_by_spell_id(self, spell_id) -> list[AppliedAura]:
TypeError: 'type' object is not subscriptable

Gold Dust Exchange can not be handed in

You can complete this quest, but you can not hand it in to the quest npc.

If you do, you can no longer use any ingame options.

No talking to npc's, no using quit or logout in menu either.

Python alpha 5 project

Who can help me write a Python alpha 5 project to get internal and external data analytics for my company praxis consulting LLC?

A ideal model that can calculate and increase efficiency and visualize it very well numerically and statistically.

Jasperlode mine cannot be handed in

You can complete this quest, but you can not hand it in to the quest npc.

If you do, you can no longer use any ingame options.

No talking to npc's, no using quit or logout in menu either.

Recently learned spells visually disappearing from the Spellbook after teleporting to a different map.

Describe the bug
Learning spells and then teleporting to a different map will make them visually disappear from your Spellbook. Logging out and logging back in will make them appear again (and permanently).

Steps to reproduce

  1. Create a new character.
  2. Learn any spell (.lspell).
  3. Teleport (.tel) to a different map and see them disappear from the Spellbook.

Expected behavior
Already learned spells shouldn't disappear after teleporting to a different map.

Crash when out of window on kill

I was attacking a target with melee attacks. The client was started with -windowed. When changing to another window just before the target would have died, the server crashed.

I don't know if this is related of if the server just randomly crashed. Here is the server log (windows)

←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_SET_TARGET
Exception in thread Thread-3700:
Traceback (most recent call last):
File "C:\Program Files\Python39\lib\threading.py", line 954, in _bootstrap_inner
self.run()
File "C:\Program Files\Python39\lib\threading.py", line 892, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\player\PlayerManager.py", line 883, in update
self.attack_update(elapsed)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\player\PlayerManager.py", line 750, in attack_update
self.update_melee_attacking_state()
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\UnitManager.py", line 296, in update_melee_attacking_state
self.attacker_state_update(self.combat_target, AttackTypes.BASE_ATTACK, False)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\UnitManager.py", line 339, in attacker_state_update
self.send_attack_state_update(damage_info)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\UnitManager.py", line 405, in send_attack_state_update
self.deal_damage(damage_info.target, damage_info.total_damage)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\UnitManager.py", line 436, in deal_damage
target.die(self)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\CreatureManager.py", line 230, in die
self.reward_kill_xp(killer)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\CreatureManager.py", line 239, in reward_kill_xp
player.give_xp([Formulas.CreatureFormulas.xp_reward(self.level, player.level, is_elite)], self)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\player\PlayerManager.py", line 442, in give_xp
self.mod_level(self.level + 1)
File "C:\Users\Kyoril\Desktop\alpha-core-master\game\world\managers\objects\player\PlayerManager.py", line 467, in mod_level
data = pack('<3I',
struct.error: argument out of range
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING
←[36m←[1m[DEBUG]←[0m [127.0.0.1] Handling OpCode.CMSG_ATTACKSWING

TODO: Rage generation on damage received

Describe what needs to be implemented or enhanced
Implement rage generation on damage received.

Expected end result
Rage users should see their rage increment when receiving damage (if conditions are met).

Guidance

  1. I assume a good place to implement it would be in receive_damage.
  2. We can use the Vanilla formulae.

EDIT: Please read #235 (comment) for further clarification of how it should work.

Two more bugs related to quests

Another turn-in reward bug
You can turn-in quests with a full inventory and it will tell you that you've received the reward even when thats impossible.

Object inspection quests bug
Some quests require you to inspect an object to complete the quest and then show a follow-up quest but currently it won't give you the follow-up quest right away and will require you to inspect the object again.

Mana bug when druid shapeshifts

Describe the bug
Druid loses mana when he shapeshifts and returns to normal form.

Steps to reproduce

  1. Shapeshisft to bear/cat.
  2. Remove shapeshift.
  3. If you were in bear form, your mana is now 0 (default rage value), if you were in cat form, your mana is now 100 (default energy value).

Expected behavior
Druid should have the same mana amount as before the shapeshift.

TODO: Spell miss results

Describe what needs to be implemented or enhanced
Implement miss results (miss/dodge/parry etc.) for spells.

Expected end result
Casting a spell on a unit should be able to lead to all results listed in SpellMissReason based on the associated units' stats.

Guidance

  1. Spell hit results are resolved for each effect. CastingSpell.get_effect_target_miss_results resolves effect targets and miss results for each effect.
  2. The effect miss results are merged into CastingSpell.object_target_results. It should be verified if a spell's effects should be able to have different outcomes on the same target. If that is the case, TargetMissInfo should be modified accordingly.
  3. Miss results should be returned by EffectTargets.get_effect_target_miss_results. The method should use the associated units' StatManagers to get the outcome for the spell.
  4. StatManager should implement a method for spell miss outcomes similar to StatManager.get_attack_result_against_self, which is used to roll the chance for a melee attack outcome.

Column missing in alpha_realm

item_flags is missing in character_inventory. Without it, the client crashes after creating a character.

My quick fix was adding the column to the table.

ALTER TABLE alpha_realm.character_inventory ADD item_flags int NULL;

Reset issues for creatures after dying while fighting them.

Describe the bug
Health and position (of non wandering ones) of creatures is not being reset if you die while fighting them.

Steps to reproduce

  1. Fight a creature and die in combat after damaging it.
  2. See how it doesn't return to its spawn position unless they have wandering movement and also how the health is not reset.

Expected behavior
Health and position should be reset after the combat ended due to their target dying.

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.