Git Product home page Git Product logo

arcemu / arcemu Goto Github PK

View Code? Open in Web Editor NEW
356.0 61.0 208.0 61.46 MB

World Of Warcraft 3.3.5a server

License: GNU Affero General Public License v3.0

C 39.78% C++ 26.57% Shell 0.03% Lua 0.45% PHP 0.07% CSS 0.01% XSLT 0.97% JavaScript 0.05% CMake 0.20% Batchfile 0.01% HTML 0.24% Dockerfile 0.01% Python 31.46% Roff 0.04% VBScript 0.01% PLSQL 0.04% PowerShell 0.01% Common Lisp 0.05% Assembly 0.01% Pascal 0.01%
warcraft vagrant docker world-of-warcraft worldofwarcraft cpp c-plus-plus cmake docker-compose wow

arcemu's Introduction

logo Arcemu

Project Status

This project is mostly abandoned since the end of 2014. It is only developed and maintained ocassionally.

Supported platforms

CPU Architecture Linux (GCC) Windows (Visual Studio)
amd64 ✔️ ✔️
riscv64 ✔️
aarch64 ✔️ ✔️

Note: The project also has code for other platforms like Apple, and BSD, but they may not be up to date, and are not "officially" supported.

Note: The Linux build is officially tested with various versions (16.04 and later) of Ubuntu Server LTS.

Note: The Windows build is officially tested with Windows 7 (VS2010) and Windows 10 (VS2017).

Build Status

Platform Build status
Dockerized Linux build with Github Actions master_actions
Windows build on AppVeyor Build status

Code Quality

Tool Status
CodeFactor static analyzer CodeFactor

Introduction

Arcemu is a World of Warcraft server package. Based on the popular Ascent project (defunct as of 2007) it aims to provide players with a gameplay very close or identical to the real thing as of World of Warcraft version 3.3.5a.

It's a multithreaded C++ application with a relational database as a data storage backend ( MySQL or MariaDB ).

It supports easy extension and customization with plugins, and the following scripting languages:

  • Lua
  • Python (experimental)

Installation

For installation instructions see the wiki.

Development box

You can get yourself a quick and dirty installation by using Vagrant. It will set up a virtual machine for you, with Arcemu installed.

  • Install Vagrant and VirtualBox
  • Create a directory somewhere
  • Check out Arcemu code to that directory
  • Go to the created directory in the command line / shell
  • Issue the command 'vagrant up', and wait until the process finishes.

Vagrant will download an OS for the virtual machine and then build and install Arcemu. After it is done, you can log in to the box, using the following command:

vagrant ssh

Links

arcemu's People

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  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

arcemu's Issues

LearnSpell: Spellbook + GUI Rebuilding

Another minor issue I came across:
When you learn spells that have ranks, your spellbook gets a new entry for each rank, yet all ranks are updated to the highest achieved rank. So for instance you learn heroic strike 2+3 you would have three entries all entitled heroic strike 3.

While this is not really a striking issue another one is really annoying and I'm sure it originates in the same source: Skills that have an extra bar (Paladin Auras, Shapeshifting etc.) also get second entries in the GUI, so that not only your spellbook is spammed with skills but your GUI as you have, let's say for instance, 4 times the Devotion Aura in your Interface.

The good thing about this issue: The GUI gets rebuild after logout/login so there is some function that handles this rebuilding, it only needs to be called after learning a new skill, this would certainly fix this issue.

Shaman Totem Buffs

Totems with effects apply buff, but the buff does not increase stats (e.g: strength of earth totem rank 1: applies buff that increases strength and agility by 10 : stats do not change in character panel.)

http://old.wowhead.com/spell=8075

Typo in portals.sql

ArcEmu? revision number : 4695
Database: WhyDB rev 156
Modifications: None
Operating System: Windows 8 64 bit Dev preview

In the file portals.sql there are multiple typos.
Orgrimmar is spelled as Orgrimarr which is incorrect.
Also wouldn't it be better to just remove the file as it says this in the comment.
"This is a kludge system because the zeppelins and boats in Ascent are currently messed up."
However boats do work now making this file useless.
If you don't share this thought with me just fix the typo please.

Summoning Stones

Summoing Stones are bugged (or just not yet implemented, but I didn't find a corresponding entry in ToDo)
When you click a summoning stone (and have a party/raid member as focus) your character will use a animation as if casting and a portal will spawn. You will now be stuck in this animation and be able to move and the only way to return to normal walking animation is to click the Meeting Stone again. Clicking the Portal does not do anything. I assumed (having never played retail at all) that either a portal would pop up next to the player who is summoned or that this player is simply ported, neither does happen. Also you can summon thousands of portals focused on one player, probably all previous portals that were created should be destroyed and removed when a new one is created, but here again: I am not sure about retail.

And a second time: Quest Item Removal after abandoning quests

Thanks for the first fix ;) Hopefully the second one is as easy

Quote WoWWiki: "Collect X of Y" quests

If the items you are collecting are marked as Quest item you will lose those items when you abandon the related quest. Items, such as trade goods, which are not quest items will not be lost. Quests that have you collect "X" amount of something though will be updated to show the current amount you have collected (on person or in bank) if/when you pick up the quest again.

It is also hinted in the client, abandoning such a quest causes the client to give you notification that related items will be destroyed.

HunterPet:Removal after Logout

Pets are not removed on logout and remain visible for other players
Also pets are "doubled" for other players if you die as a hunter and ressurect, the pet that you had befor dying will still be there and a new one be created on ressurection

Polymorph on Creatures

All Mage Polymorph spells (e.g: http://old.wowhead.com/spell=118)

Creatures still attack you even though they are 'sheep'd'. They also follow you around while they are attacking you as a sheep. Amusing to watch.

Creatures should be forced to wonder around at random and not attack the player while sheep'd.

Deadmines Aggro???

In Deadmines Instance something is strange about MobBanding/Aggression handling
Upon killing one or two mobs, all mobs in a major area become aggro and attack you (of course they don't care about collision so they come from everywhere through the walls) but from a major area, so like you kill someone in the starting area and the first boss and the mobs around him will run to you, like almost the entire dungeon ^^

I think it has mostly to do with missing LOS/Collision checks, I haven't found the rule yet when this appears, but you can say on almost every 2/3 kills

#219: Vehicle Faction Bug?

I use Arc Rev from 2011-11-07 14:53:52 (Sorry couldn't figure which
Changeset in GIT) with latest WhyDB Rev 157

I don't know what it is like on retail but when you enter a vehicle it
should probably take on your faction ID. For instance the horse vehicles
in The Scarlet Enclave keep their faction, so when you take a ride into
Death Breach, all the NPC's that are friendly to you will kill your horse
and then leave you alone.

Maybe this is not a core issue and on retail servers the horse vehicles
just have a different faction by default, in this case i apologize for
bothering you with this bug.

As the entire DK starting area needs scripting I just posted this because
it might be an issue to vehicles in general.

Keep up the good work ;)

NPC with gossip menu and quests

I've created a friendly NPC with npcflags 3 (Gossip and quest). Then I gave him a basic gossip menu with one option. It works fine. But you can't see any quests there. Without "GossipAddQuests" there are no quests, with "GossipAddQuests" server crashes.

Script (yes, it is a custom script and I use LuaEngine):
function GeneralKorkText_OnGossipTalk(pUnit, Event, player)
if player:HasFinishedQuest(30002) == true then
pUnit:GossipCreateMenu(30000, player, 0)
else
pUnit:GossipCreateMenu(30001, player, 0)
end
pUnit:GossipAddQuests()
pUnit:GossipMenuAddItem(0, "How can we help you, General?", 1, 0)
pUnit:GossipSendMenu(player)
end

Looks like NPC cannot have a quest and a gossip.
Got the latest ArcEmu revision (the one with !kill fix) and the latest WhyDB.

Enhancment+BugFix: Additional NoHeal Flag for Creatures

This is related to quests like "Rescue the Survivors" or the Priest Initiation Quests.
Although the required characters have correct values in DB, ArcEmu realizes that they are not in combat and thus they regenerate, giving them full health again and making it impossible to heal them as they are already healed.
An option would be to add a Flag in the code for Creatures who shouldn't regenerate to MaxHealth. This could maybe also be achieved on DB-Side with an additional column in creature_proto.

It would fix the named quests and also make things possible for other content that requires weakened npc/creatures.

Gnomeregan Instance Script

It doesn't exist ... yet?
Pretty much same big topic as I posted on the WarriorQuest issue, At least having NPC in safe place healing you etc. could be easily achieved through lua script,

And this raises another question:
In your rep. there is ToDo folder but it only has spells in it that need to be done.
Of course when I look through your rep I can see that there is no script for gnomeregan yet but maybe it would be easier to make a little text doc in ToDo where all instances, events etc. that still need scripting could be included.
This way you could avoid getting the Issue list overspammed with stuff that isn't really bugged but simply not yet implemented.

Spell Effect - Silence - No Effect

Spells tested that silence targets for X seconds have no apparent effect on players.

Tested with:

  • Warrior Pummel
  • Warrior Shield Bash
  • Shaman Wind Shear
  • Rogue Kick

Explosive Sheep

Explosive Sheep creates a companion that doesn't explode, doesn't attack but simply follows you.
It even follows you when the duration is over with, same applies to other engineered constructs, like Target Dummy.
Not sure wether this is a bug or it is simply a not implemented feature.

DuelIssues 1: Pets

When a duel ends, pet/summon etc. should remove duel opponent fom hatelist.
Currently pets keep attacking opponent even if the duel is over.
It's easy to reproduce and probably easy to fix as well

localized

It would be interesting npc_monstersay_localized create the table for future language translations. There are also other tables that could be included.

  • trainer_defs_localized

Druid talent

Drud Talent [Eclipse] does not activate. Will be great if gets fixed.

Thank you

Mage Flamestrike/DeathKnight Death&Decay Visual

The impact-visual of Flamestrike is far too small in comparison to the effect created on retail. Similarly, this is reflected with Death Knight's Death and Decay spell, where the ring is half the size of the visual on retail whereas the 'glowing' parts that 'bubble' is the correct size.

#221: PetBar Removal after Ressurection

I just realized that the old issue tracker is now obsolete ;)

Minor issue, I would have fixed it if I was comfortable with GIT:
Player.cpp line 4556 where active pet is respawned on player ressurection,
the action bar for the pet needs to be renewed as well.
Currently it doesn't and you have to perform some stupid action (like
releasing a vanity pet) in order for it to show up again.
It might be an annoying issue for players who ressurect in instances and
would need instant control over their pet.

Units with no loot + no money shouldn't be lootable

Units that have no loot, and no money, should not be lootable.

This works when the creature is set to a 'critter' as they cannot be looted, for any other type if it has no money (0 in creature_proto) and no loot to drop, it should not be lootable.

At the moment when you go to loot a creature with no loot/money, a blank window comes up and that's it. Not so bad on small-scale things, but when a boss is spawning weak minions that you have to AoE for example, it looks messy.

Thanks.

Immune

There is an issue with the immune system. It's registering some racial passive spells/abilities and self-cast spells/abilities as character immune causing these functions to not work at random times.

ArcEmu 4.0-TRUNK fd1313b Release-Win-X86

#220: IsInCombat Issue

Another issue (pardon me for posting such a lot all the sudden)
Latest WhyDB, Arc from 2011-11-07 14:53:52

On some occasions, mostly when you run away from mobs, your IsInCombat
bool true will not be removed. The next check usually occurs when porting,
logging out etc.
Another occasion would be a duell with other players (Here also the pet
will keep on attacking your opponent even if the duell is over)

I couldn't find exactly where in the source the aggro time and how long
creatures charge you is handled, I looked for it in CombatHandler and
Creature but couldn't find the right spot to fix this

The only annoying thing about this is, that you are of course not able to
perform most actions because you are still flagged as InCombat

Anyways ;) It is just a minor issue

Shaman Fire Nova

Has no effect what-so-ever.

(Unable to link spell due to WoWHead having removed the spell for Cataclysm).

EscortQuests

Quests like 6523 Protect Kaya or 309 Protecting the Shipment do not work properly or are not yet implemented.
Such quests require you to escort a NPC from spawn to a given area.
Basically they require the NPC to follow you as soon as you start the quest. From this moment on the NPC should be flagged so that mobs attack the NPC. Also the Questgiver flag should disappear, as other players should not be able to take on the quest. In case such a quest is done in a group the NPC should follow the group leader but all member should get the quest marked as done as soon as the NPC reaches the target area, which needs to have a reference in DB, so the core knows when the area is reached. NPC should somehow despawn/respawn and return to initial spawn.
Right now quests are acceptable but the NPC's don't follow you, thus the quests are not solvable.

ArcEmu DK and ICC Bugs

So in some of the repacks I saw DK that not a single talents affects spells, as if like they go to a different char. The mobs that are spawned like ghoul (with dk unholy spec) indeed he doesn't disappear, but he has mana and not energy, he hits 70-80 max... The gorgule isn't attacking at all...

ICC - Some of the repacks don't have even scripted ICC.
In some of them the ICC has MArrogwar but he is not a boss but a mob without any spells, after killing him proceeding further is impossible and even if you manage to do that and you kill the Lady, you won't be able to start fight with Saurfang. The teleportes don't work too...

Please fix it ^_^

SERVER_HOOK_EVENT_ON_CAST_SPELL

I wanted to ask, why is this hook event executed in Spell:prepare instead of Spell::finish like all other CastSpell events? It's making this hook mostly useless, because script itself is executed when you start casting, instead of when you finish casting. I'd like to change that myself, but I am unsure if removing it from Spell::prepare would affect anything.

For example I want to use it for this quest: http://www.wowhead.com/quest=12842 , where you have to complete quest by using one of two runeforging spells, but it takes some seconds to finish the casting, however quest is finished right when you start casting. I know it's more cosmetic issue then a bug, but it would be nice to have it executed when casting is done.

Or maybe having a second hook which will hook on spell cast finish would be better, because with having first one in Spell::prepare is useful for example to make spell channel to some other object.

Immune when casting certain Spells & Mounting

Commit : 5924a77
Platform : Windows
Arcetucture : 32bit

Effected items/spells : Stealth (rogue) and Mounting on characters.

Problem : when trying to use spells sometimes it comes up with 'immune' as a error message in the middle of the screen, logging out fixes it but doesn't allow people to mount when this happens.

Expose in lua

On the cast spell hook, The target should be some sort of superclass of a character, an npc, and a location. The reason for this being AOE spells are not receivable and handlable through the engine because there is simply no exposure.

Advanced Collision: Airships in Icecrown

The bug is obvious, it is basically the same with elevators in undercity etc. NPC's/creatures are not really moved/blocked by gameobjects. When you have for instance creatures attacking you in the undercity and following you on the platform of the elevator, they will stay on the ground, passing through the platform.

The additional difficulty for the two airships in Northrend is, that they are actually moving. I am not sure how you would have to deal with this, but they would need corresponding to the airship's movement, moving spawn- and waypoints and somehow react to parts of the airship (so basically the gameobject) passing through them.
What happens is, that they will all at some point of time float in mid-air, doing some fantastic swimming moves.

It's an advanced problem, and Collision/Pathfinding in a 3D environment is certainly not the easiest thing to accomplish,
but I just mentioned it for the sake of a complete ToDo list ;)

Flying Units should fall to the ground upon death

At the moment, when a flying unit dies, it does actually play the flying unit death animation correctly. The problem is as it switches to the "falling" emote (for when a flying unit falls from the sky to the ground upon death) it switches immediately to death state as it does not fall at all - it just dies in the air. This results in flying units that die just floating in the air.

The correct way is that upon death, they fall to the ground keeping the 'falling' animation, to then switch to death state upon hitting the ground.

This is a pretty trivial issue, but I thought I'd post it as it makes things look more professionally.

Bot Support

I read about this idea about a year ago I think on ArcEmu forum but couldn't find the post anymore.
Of course this would mean major scripting, AI etc. but it would be awesome having bot support for battlegrounds + what would be even more complicated dungeons/instances.
Most ArcServers probably don't have enough people to make effective use of those features through the normal way, and also it would be an awesome gimmick, enriching this server over retail.

Would be interesting if the idea is still floating around and maybe someone already started work on it. I think parts of the AI scripts for the bots could even be done in LUA.

It's an interesting issue to discuss, how one would handle that, maybe even create some UT-like InGame menu for battlegrounds.

Paladin - Seal if Righteousness

It does not proc every hit (every two tested against a target dummy).

(WoWhead does not display due to cataclysm updates)

Warrior Quest: The Affray

Quest is not solvable as BigWill is not spawned upon entering the battle area on fray island.
Which leads me to a bigger question/issue:
In your rep. there are lua and c++ scripts parallel, some instances are partially scripted lua, some c++.
The wiki doesn't explain things fully, are those Lua scripts all implemented by default or do you have to drop them in the script
folder manually? I am asking this because a quest like this could be easily scripted with lua (and from what I see the lua engine of Arc has a high potential, it is even possible to script many instance events in it)
I could even do some simple things if I have some spare time but I don't want to mess with lua scripts if you prefer to code it all in c++ src. I'm just not certain about the pros/and cons there obviously has to be a reason why some scripts are lua, some c++.
So I would be very thankful for some sort of explanation ;)

SetUnitToFollow() On Leave Combat

SetUnitToFollow() seems to work, but when unit leaves combat first return to his spawnpoint and then will follow the player again. This is very uggly...

TEST = {}

function TEST.OnSpeak( unit, event, player )
unit:GossipCreateMenu( 9955, player, 0 );
unit:GossipMenuAddItem( 0, "YES!", 1, 0 );
unit:GossipMenuAddItem( 0, "NO!", 3, 0 );
unit:GossipSendMenu(player);
end

function TEST.OnSelection( unit, event, player, id, intid, code )
if( intid == 1 ) then
unit:SetUnitToFollow(player, math.random(1,8), 1)
player:GossipComplete();
elseif( intid == 3 ) then
player:GossipComplete();
end
end

function TEST.OnLeave( unit, event, player)
target = unit:GetClosestPlayer()
unit:SetUnitToFollow(target, math.random(1,8), 1)
end

RegisterUnitEvent( 999999, 2, "TEST.OnLeave" );
RegisterUnitGossipEvent( 999999, 1, "TEST.OnSpeak" );
RegisterUnitGossipEvent( 999999, 2, "TEST.OnSelection" );

Aoe spells

Druid spell "star fall" instantly kills people.

Aoe spells from warrior damages friendly targets

ProfessionTrainer: Skill Learning

A small but strange bug appearing on profession trainers:
Learning any skill, given that you already learned the first rank, always causes the menu to show all learned ranks (apprentice, journeyman etc.) and selecting apprentice as default choice. Those skills are red, as they are already learned, and they are not filtered even if you select to show only available skills.

Skinning Exploit

Skinning Spell can be used targeting objects that are not skinable.
When you cursor over dead enemies that are not skinable, not symbol appears and clicking them doesn't have an effect either.
But you can select the corpse and then click the Skinning Spell, it will cause you to skin the object.
Of course the object will have no skinning loot but you gain skill through this.

Duell, the second: PvP Guards

After duelling, you either remain flagged fighting in a strange way or through duelling you trigger some strange behaviour on Neutral Town PVP Guards.
Way to reproduce:
Login with two players and fight outside booty bay or somewhere in the desert close to gadgeztan,
After the duel, enter the city and you will be instantly killed by all the guards (due to their insane aggro radius and lack of collision checks they will come for you even if you get near to the city from all over the place).

While it is generally correct that they should attack you if you engage in PvP, a duel should be an exception or at the very least when the duel is over with, you should be removed from the guards aggro list

Spell Issues for all classes

Warrior

  • Pummel doesn’t silence target for 4 seconds (tested against player)
  • Shield Bash doesn’t silence target for 6 seconds (tested against player)
  • Shield Block absorbs 100% damage instead of increasing block chance by 100%.

Mage

  • Polymorph- Does not work as supposed to, mobs regen health still attack and run at you rather interesting being attacked by a sheep (Movement maps enabled)
  • Flamestrike impact visual is far too small

Warlock

  • Fear – any damage done what-so-ever interrupts it
  • Voidwalker sacrifice does not deal damage (portion of life) to the voidwalker.

Shaman

  • Fire nova has no effect
  • Wind shear – player is not silenced for 2 seconds
  • Totems with effects apply buff, but the buff does not increase stats (e.g: strength of earth totem rank 1: applies buff that increases strength and agility by 10 : stats do not change in character panel.)

Priest

  • N/A

Druid

  • Feral Charge - jump animation doesn't always work, rather it just 'charges'
  • Prowl - players can see you pretty much always

Hunter

  • Distracting shot somehow applies recently bandaged on target?
  • Eyes of the beast buggy as hell cancel it your still the cat and you can’t attack while you’re the cat apparently

Rogue

  • Stealth- creatures can see you, players can see you pretty much always
  • Players can almost always see stealthed players
  • Players/creatures killed will still have combo-points left from last battle when they revive/respawn
  • Kick does not silence player for 5 seconds.
  •   If you're in a group and you lockpick the target usually goes aggro against another random group member
    

Paladin

  • Seal of Righteousness does not proc every hit (one in every 2 against training dummy)
  • Hand of Reckoning damage is not dealt
  •   Releasing a seal does not remove the current judgement (need to clarify).
    

Recurring issues found:

  •  Spells with the silence effect does not have an effect on players
    
  •  Stealthed creatures/players can always be seen
    

Will report any more issues I find as I continue testing - only tested the basic class spells so far. Need to test talents at some point as well, which are pretty much mostly have issues.

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.