the-alpha-project / alpha-core Goto Github PK
View Code? Open in Web Editor NEW0.5.3 experimental emulator written in Python.
License: GNU General Public License v3.0
0.5.3 experimental emulator written in Python.
License: GNU General Public License v3.0
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;
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.
load_gameobjects
and load_creatures
will probably need to be heavy altered.Describe the bug
A clear and concise description of what the bug is.
Steps to reproduce
Expected behavior
Get teleported to Mage Quarter tower in Stormwind. (or respective city in name next to portal trainer)
Elaine Trias display_id and location were updated.
We need to find information about Corbett Schneider.
See discussion below.
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.
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.
In westfall, standing behind the vendor carts http://puu.sh/FyNoQ/e500e2ab2d.jpg
There are vast amount of item entries at high entry that should not exist in 0.5.3 alpha.
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.
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.
None of those spells exists in 0.5.3 client.
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.
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.
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.
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.
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:
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:
Between 5,9k and 6,1k tons of totems added not available in 0.5.3 but probably in 0.5.4.
Alyssa Blaye has entry 5665 and the image is from 0.5.4, fishing in UC slime wasn't possible until 0.5.4.
Vance Undergloom has entry 5695 and the image is from 0.5.3.
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:
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:
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:
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?
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.
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.
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.
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:
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:
It continues with other entires with a few entries later down too.
With innkeepers come you guessed it, Spirit healer:
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.
7k entries almost instantly start with winterspring NPCs, a zone completely unfinished in alpha.
Undercity entries are at around 4,5k and knowing that it UC was added in 0.4 we can build on top of that.
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.
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.
Patch 0.8 added auction house.
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.
Entry 10919, Shatterspear Troll in Shatterspear village.
The entire village didn't exist until 0.10.0.3892.
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.
Sylvanas wasn't added until at least 0.9.0+ and her entry is 10181.
Image from 20-05-2004 still does not have her spawned.
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.
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.
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
Expected behavior
Health and position should be reset after the combat ended due to their target dying.
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
spawns_creatures
referencing creature_template
might need to be deleted as currently it's only applied to spawn_entry1
.Describe the bug
Equipped items that show as red question mark disappear on log out. (In inventory they are kept just fine)
Steps to reproduce
Expected behavior
Item is still present and equipped.
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
.lspell
)..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.
Describe the bug
When swapping arrows inside the quiver they remain dimmed and you can't interact withe them until relog. It happens with same and different type of arrows.
Steps to reproduce
Expected behavior
Arrow stacks swap properly
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.
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.
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
Expected behavior
Critter should take damage.
Description
If you have a neutral (yellow) mob selected and try to heal or buff , it tries to target the mob and does nothing at end of cast
Steps to reproduce
Expected behavior
Have cursor change to select target for cast
Describe the bug
Druid loses mana when he shapeshifts and returns to normal form.
Steps to reproduce
Expected behavior
Druid should have the same mana amount as before the shapeshift.
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
calculate_spell_damage
for spells. Different spell types may(?) have varying critical strike bonus values.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.
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.
Expected end result
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.
While fighting Hogger Yushe (Alphawow) went invisible on my screen after I charged to the same position as him, once he started moving again he became visible.
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
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
Expected behavior
See a screen to either select the quest for completion or see flight path screen
Describe the bug
A clear and concise description of what the bug is.
Steps to reproduce
Expected behavior
Ice Armor should replace Frost Armor
Describe the bug
Using the Ancient Moonstone Seal on Ancient Flame for quest=957 dc's the player similar to the dc in #340
Steps to reproduce
Use Ancient Moonstone Seal on Ancient Flame at 5632 171 31 1
Describe the bug
Sometimes when I step off of the Ironforge elevator I get teleported away, sometimes multiple times, then back to the elevator. So far I've been unable to reproduce this consistently it's happened 2x in about 10 attempts.
Smelting ore should require the player to be standing next to a forge but currently can be done anywhere.
how can i fix this error ?
(Background on this error at: https://sqlalche.me/e/14/e3q8)
(pymysql.err.OperationalError) (1049, "Unknown database 'alpha_dbc'")
Hi, not really an issue just a suggestion, would you consider adding a docker build ?
https://www.docker.com/
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
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
receive_damage
.EDIT: Please read #235 (comment) for further clarification of how it should work.
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
Expected behavior
Quest is complete-able
Also happened with Report to Thomas
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
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.
Steps to reproduce
Expected behavior
Arrow stacks swap inventory slots
At low weapon skill it should be pretty much impossible to hit, which is true for auto attacks but my abilities hit 100% of the time
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.
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
Gilbin at XYZMapid -4850 -1003 494 0
has the wrong faction set and is able to be attacked by alliance players.
Wanted to buy some armor, right clicked and murdered him :(
If Tunnel Rat Kobold has it's enrage spell active when the killing blow is dealt it stays alive clientside, you can no longer attack it or loot it and are taken out of combat as you would be , persists through relog.
Also, if death touch is used while the enrage is active, it crashes your character and you have to relog.
Video 1 (Normal Killing Blow) https://youtu.be/2Ry6wuxV7UY
video 2 (death touch) https://youtu.be/16ssHs03Oi4
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
CastingSpell.get_effect_target_miss_results
resolves effect targets and miss results for each effect.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.EffectTargets.get_effect_target_miss_results
. The method should use the associated units' StatManagers to get the outcome for the spell.StatManager.get_attack_result_against_self
, which is used to roll the chance for a melee attack outcome.A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.