Skip to content

Instantly share code, notes, and snippets.

View Langerz82's full-sized avatar

Joshua L Langerz82

View GitHub Profile
WORKDIR = %cd%
CC = gcc.exe -m32
CXX = g++.exe -m32
AR = ar.exe
LD = g++.exe -m32
WINDRES = windres.exe
INC = -I.. -I..\\lib -ID:\\Temp\\boost -I..\\lib\\time\\y2038
CFLAGS = -pedantic-errors -pedantic -Wfatal-errors -Wextra -Wall -std=gnu++1y -m32 -DVAULTSERVER
Revision: TrinityCore rev. 274dede3dc89 2018-01-08 22:31:30 +0100 (HEAD branch) (Win64, RelWithDebInfo, Dynamic)
Date 10:1:2018. Time 18:28
//=====================================================
*** Hardware ***
Processor: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Number Of Processors: 8
Physical Memory: 16690860 KB (Available: 6274076 KB)
Commit Charge Limit: 22094368 KB
*** Operation System ***
@Langerz82
Langerz82 / Rate-AttackSpeed.patch
Created January 12, 2018 11:15
[MOD][Core] Rate.AttackSpeed Modifier
diff --git src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Unit/Unit.cpp
index 86df2a6d13..916ee20652 100644
--- src/server/game/Entities/Unit/Unit.cpp
+++ src/server/game/Entities/Unit/Unit.cpp
@@ -8969,7 +8970,7 @@ int32 Unit::ModifyPower(Powers power, int32 dVal)
uint32 Unit::GetAttackTime(WeaponAttackType att) const
{
- float f_BaseAttackTime = GetFloatValue(UNIT_FIELD_BASEATTACKTIME + att) / m_modAttackSpeedPct[att];
+ float f_BaseAttackTime = (GetFloatValue(UNIT_FIELD_BASEATTACKTIME + att) / m_modAttackSpeedPct[att]) / sWorld->getRate(RATE_ATTACKSPEED);
diff --git src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Unit/Unit.cpp
index 86df2a6d13..1a3026b1a0 100644
--- src/server/game/Entities/Unit/Unit.cpp
+++ src/server/game/Entities/Unit/Unit.cpp
@@ -3089,7 +3089,7 @@ void Unit::InterruptSpell(CurrentSpellTypes spellType, bool withDelayed, bool wi
//TC_LOG_DEBUG("entities.unit", "Interrupt spell for unit %u.", GetEntry());
Spell* spell = m_currentSpells[spellType];
if (spell
- && (withDelayed || spell->getState() != SPELL_STATE_DELAYED)
+ && (withDelayed || spell->getState() != SPELL_STATE_DELAYED)
diff --git src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Unit/Unit.cpp
index 86df2a6d13..ab3924cea5 100644
--- src/server/game/Entities/Unit/Unit.cpp
+++ src/server/game/Entities/Unit/Unit.cpp
@@ -12101,7 +12102,12 @@ void Unit::SetFeared(bool apply)
if (IsAlive())
{
if (GetMotionMaster()->GetCurrentMovementGeneratorType() == FLEEING_MOTION_TYPE)
- GetMotionMaster()->MovementExpired();
+ {
diff --git src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Unit/Unit.cpp
index 86df2a6d13..031c5c97d6 100644
--- src/server/game/Entities/Unit/Unit.cpp
+++ src/server/game/Entities/Unit/Unit.cpp
@@ -8681,7 +8682,7 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
// can't attack invisible
if (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_INVISIBLE))
{
- if (obj && !obj->CanSeeOrDetect(target, bySpell && bySpell->IsAffectingArea()))
+ if (obj && !obj->CanSeeOrDetect(target, bySpell && bySpell->IsAffectingArea() && bySpell->ProcFlags & PROC_FLAG_TAKEN_DAMAGE))
diff --git src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Unit/Unit.cpp
index 86df2a6d13..385b104a38 100644
--- src/server/game/Entities/Unit/Unit.cpp
+++ src/server/game/Entities/Unit/Unit.cpp
@@ -8686,7 +8687,7 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
else if (!obj)
{
// ignore stealth for aoe spells. Ignore stealth if target is player and unit in combat with same player
- bool const ignoreStealthCheck = (bySpell && bySpell->IsAffectingArea()) ||
+ bool const ignoreStealthCheck = (bySpell && bySpell->IsAffectingArea() && bySpell->ProcFlags & PROC_FLAG_TAKEN_DAMAGE) ||
diff --git src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Unit/Unit.cpp
index 86df2a6d13..d1f610033d 100644
--- src/server/game/Entities/Unit/Unit.cpp
+++ src/server/game/Entities/Unit/Unit.cpp
@@ -491,6 +491,14 @@ void Unit::UpdateSplinePosition()
if (TransportBase* transport = GetDirectTransport())
transport->CalculatePassengerPosition(loc.x, loc.y, loc.z, &loc.orientation);
}
+ else
+ {
diff --git src/server/game/Entities/Unit/Unit.cpp src/server/game/Entities/Unit/Unit.cpp
index 86df2a6d13..1720b49f32 100644
--- src/server/game/Entities/Unit/Unit.cpp
+++ src/server/game/Entities/Unit/Unit.cpp
@@ -10998,6 +10999,13 @@ void Unit::StopMoving()
if (!IsInWorld() || movespline->Finalized())
return;
+ if (!movespline->onTransport)
+ {
diff --git src/server/game/AI/CoreAI/PetAI.cpp src/server/game/AI/CoreAI/PetAI.cpp
index 21ab166a23..143cb468b6 100644
--- src/server/game/AI/CoreAI/PetAI.cpp
+++ src/server/game/AI/CoreAI/PetAI.cpp
@@ -545,6 +545,11 @@ bool PetAI::CanAttack(Unit* target)
ASSERT(me->GetCharmInfo());
+ if (me->HasReactState(REACT_DEFENSIVE))
+ {