Commit Graph

903 Commits

Author SHA1 Message Date
Shauren
ad774a8e0e Core/Spells: Make missing spell/aura effect handler assignments a compile time error instead of runtime crash 2019-11-21 14:36:16 +01:00
Shauren
3beb17c452 Core/Spells: Fixed crash when casting spells with effect type > 264 2019-11-21 13:58:58 +01:00
Shauren
38d04775db Core/Spells: Delete ancient bg mark code from create item spell effect 2019-10-18 19:38:03 +02:00
Shauren
04ab611111 Core/Spells: Fixed calling spellhit script hooks on launch when spell hits both caster and target with different effects 2019-08-31 11:11:23 +02:00
Traesh
c924840ce7 Core/Spells: Implement SpellMisc::LaunchDelay 2019-08-31 11:11:23 +02:00
xinef1
60663d1374 Ensure that all actions are compared to fixed point in time (ie. world update start) (#18910)
- Actions will not be dependent on processing moment
- Increased GameObjects cooldown resolution to milliseconds, fixes arming time of traps to be exactly one second and not something from range (1000, 1999)
- Created GameTime namespace and UpdateTime class and moved there some code out of world

(cherrypicked from 7567cafec8)
2019-08-17 20:04:14 +02:00
ariel-
396457e36a Core/Movement: Corrected all speed checks after 23b6991273
Ref issue #19210

(cherrypicked from 2e68736afc)
2019-08-17 20:04:14 +02:00
xinef1
a32d5cfa17 Core/SmartAI: Various fixes and extensions for smart scripts: (#18673)
- Possible crashes fixed
- Memory leak fixed
- Implemented checking of vehicle conditions
- Extended eventphasemask to 12 bits (sql required to change DB field type)
- SMART_EVENT_GOSSIP_HELLO - added possibility to detect for gameobject reportUse call
- Renamed action SMART_ACTION_SET_FLY to SMART_ACTION_SET_DISABLE_GRAVITY (to reflect actual functionality)
- Added targetsLimit to action SMART_ACTION_CAST and SMART_ACTION_INVOKER_CAST to limit max amount of targets (selected randomly)
- Action SMART_ACTION_TALK corrected to always work as intended
- Properly call GroupEventHappens in action SMART_ACTION_CALL_GROUPEVENTHAPPENS if invoker was charmed or owned by the player
- Properly utilize followAngle in action SMART_ACTION_FOLLOW (db orientation should be in degrees), but keep backward compatibility
- Added action SMART_ACTION_SET_CAN_FLY (119) 0/1
- Added action SMART_ACTION_REMOVE_AURAS_BY_TYPE (120) AuraType, can be used to exit vehicle for example
- Added action SMART_ACTION_SET_SIGHT_DIST (121) sightDist
- Added action SMART_ACTION_FLEE (122) fleeTime
- Added action SMART_ACTION_ADD_THREAT (123) +threat, -threat
- Added action SMART_ACTION_LOAD_EQUIPMENT (124) equipmentId
- Added action SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT (125) minId, maxId
- Added action SMART_ACTION_REMOVE_ALL_GAMEOBJECTS (126), removes all owned gameobjects
- Added action SMART_ACTION_STOP_MOTION (127), stopMoving, movementExpired
- Extended target SMART_TARGET_HOSTILE_SECOND_AGGRO with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_HOSTILE_LAST_AGGRO with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_HOSTILE_RANDOM with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_HOSTILE_RANDOM_NOT_TOP with following parameters maxdist, playerOnly, powerType + 1
- Extended target SMART_TARGET_THREAT_LIST with maxdist
- Extended target SMART_TARGET_OWNER_OR_SUMMONER to be able to get charmer/owner of current owner
- Added new target SMART_TARGET_FARTHEST with maxDist, playerOnly, isInLos restrictions
- Added SpellHit hook to GameObjectAI and extended SmartGameObjectAI to call SMART_EVENT_SPELLHIT when gameobject is hit by spell
- Call GameObjectAI Reset hook on gameobject respawn (for ex. to reset one time events in smart scripts)
- Fixed some logic errors in code
- SmartAI Escorts properly despawn escortee if no players are in range
- Disable Evading while charming creature with SmartAI
- Don't call SMART_EVENT_RESPAWN for dead units before they actually respawn
- Don't call SMART_EVENT_RESPAWN for not spawned gameobjects
- Properly call SMART_EVENT_RESPAWN for gameobject respawn
- Allow action SMART_ACTION_SET_IN_COMBAT_WITH_ZONE to utilize targetlist
- Allow action SMART_ACTION_CALL_FOR_HELP to utilize targetList
- Allow action SMART_ACTION_SET_INVINCIBILITY_HP_LEVEL to utilize targetList
- Allow action SMART_ACTION_SET_VISIBILITY to utilize targetList
- Allow action SMART_ACTION_SET_ACTIVE to utilize targetList
- Allow action SMART_ACTION_ATTACK_START to select random attack target instead of first on the list
- Allow gameobjects to summon gameobjects with action SMART_ACTION_SUMMON_GO
- Properly store action invokers for action SMART_ACTION_WP_START, if no player invokers are found, distance despawn check won't be used
- Allow action SMART_ACTION_WP_RESUME to compensate for the state the unit actually is in (eg. combat)
- Allow action SMART_ACTION_MOVE_TO_POS to select random of the avaiable targets, not only the first one.
- Allow action SMART_ACTION_MOVE_TO_POS to utilize x, y, z parameters as an offset to calculated coordinates
- Action SMART_ACTION_RESPAWN_TARGET should never modify respawntime of already spawned gameobjects, use dedicated function
- Properly delete ontime events created by SMART_ACTION_CREATE_TIMED_EVENT
- If action could not be started because conditions were not satisfied, do not recalculate the waittime to action repeattime, use smaller value to recheck more frequently
- Allow target SMART_TARGET_CLOSEST_PLAYER to be used by gameobjects
- Allow target SMART_TARGET_OWNER_OR_SUMMONER to be used by gameobjects
- Fixed SMART_EVENT_COUNTER_SET to be only called for the id that was incremented
- Changed the way counters work
- Protect PhaseInc from surpassing maximum phase
- Added loading checks for missing NON_REPEATABLE flag if no repeatmin, repeatmax is set
- Added spell validation for SMART_ACTION_CROSS_CAST

(cherrypicked from b0ae5fadd1)
2019-08-17 20:04:14 +02:00
Keader
dc1cddf3bb Core/Spells: Split ProcFlags of PROC_HIT_INTERRUPT
Followup: 44d0d24af8
2019-08-01 15:23:08 -03:00
Keader
44d0d24af8 Core/Spells: Fixed PROC_HIT_INTERRUPT not triggering by PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS
Cherrypick of 3ffe570b21
2019-08-01 11:38:25 -03:00
xinef1
cfefd27cb8 Added some missing SetFallInformation calls (#19121)
Fixed HP drop bug on zeppelins
Fixed possible packet relocation problems on huge transports

(cherrypicked from b3f04ec157)
2019-07-21 21:06:54 +02:00
xinef1
89f728cd5b Core/Misc: Fixed player corpse looting, added player corpse loot and some more (#19122)
* Fixed corpse looting in wintergrasp
Added corpse loot for wintergrasp quests and To the Looter Go the Spoils (1166) achievement
Don't generate money for loot if no loot mode is available
Simplified few things

(cherrypicked from 2412886ef6)
2019-07-21 21:06:54 +02:00
xinef1
fe63cd3dbb Core/Creatures: Various fixes for creatures, regarding combat conditions, despawning, and few others (#18998)
* Made some changes to kiting mechanics, simplified code and made taunt auras prolong combat no matter the distance from the spawn
Unified some creature despawning code, removed some brutal direct calls in scripts
Don't play death anim on forced despawn
Removed some redundant visibility changes on creature despawn
Fixed possible problem with pet initializing template info from difficulty greater than normal
Properly keep UNIT_FLAG_IN_COMBAT on UpdateEntry call
Moved RegenerateMana function to general Regenerate(Power) function
Fixed increased health regeneration from polymorph for pets
Implemented CREATURE_TYPE_FLAG_GHOST_VISIBLE, those creatures will be properly seen when player is dead also
Removed hackfix from Gaeriyan and Franclorn Forgewright, fixed properly
Simplified ForcedRespawnTime code in ForcedDespawn
Do not allow to assist unit while evading or when enemy is evading
Do not allow to attack other units when evading or when the unit is evading
Corrected distance checking code before creature is allowed to evade, should fix some common problems
Properly return summon position for summoned creatures as their respawn position
Properly stop all moving units on gossip hello, no matter their npc flags

(cherrypicked from e1f14215d8)
2019-07-21 21:06:54 +02:00
xinef1
ca26c33145 Implemented binary resistances and some more (#18933)
- Fixed possible exploit with tamed pets having template immunities
- Implemented binary resistances
- Corrected resistances calculations
- Pets properly inherit players spell penetration
- Fixed doubled block calculation for damaging melee spells
- Auras removing snare effects will only remove the snaring component
- Shapeshifting will properly remove movement impairing auras only and not crowd control (dragon's breath)
- Immunities are properly checked versus all schools appearing in spell, unit is immune only if immune to all schools
- Spells with melee and magic school mask should compare armor reduction with resistances and select smaller reduction
- Demonic Circle: Teleport no longer removes root effects

(cherrypicked from 93746e8c4a)
2019-07-21 21:06:54 +02:00
xinef1
92e95ddf55 Core/Spells: Fixed spell effect 93 (SPELL_EFFECT_FORCE_DESELECT) (#19001)
(cherrypicked from 9e1b286984)
2019-07-21 21:06:54 +02:00
Gerhood
7e83cce81f Core/Spells: implement Mad/Crazy Alchemist's potions
(cherrypicked frombab59b28faad262dc5d9873ca7c0856477ec4d66)
2019-07-21 21:06:54 +02:00
xinef1
68cc366d88 Core/Spells: Corrected summon category SUMMON_CATEGORY_VEHICLE (#19052)
(cherrypicked from 227d5a9288)
2019-06-15 18:41:09 +02:00
Shauren
bcaaa3d6f6 Core/DataStores: Updated db2 structures to 8.1.5 2019-06-08 17:10:00 +02:00
Shauren
82c7b6c568 Core/Items: Drop item random property and suffix - all random stats must be given using bonus lists 2019-06-08 17:09:20 +02:00
Shauren
455959c606 Core/PacketIO: Rewrite updatefield handling 2019-06-08 17:06:57 +02:00
Shauren
d5992f7711 Core/Spells: Add missing spell and aura effect handler array entries
Closes #23015
2019-02-04 16:47:41 +01:00
vincent-michael
5620eb9463 Update copyright note for 2019
auto happy = new year(2019);
2019-01-01 10:14:33 +01:00
Shauren
8e1d5d5143 Core/Spells: Updated gathering profession skills 2018-12-07 19:09:10 +01:00
Shauren
1b67a2626b Core/Players: Update profession rank handling with new split skill values for each expansion 2018-12-02 17:39:41 +01:00
Shauren
0a779bd791 Core/PacketIO: Updated packet structures to 8.0.1 2018-11-05 00:00:34 +01:00
joschiwald
652f9302b7 Core/Spells: Removed useless calls of Spell::GetEffect and SpellInfo::GetEffect 2018-08-25 20:01:27 +02:00
ariel-
76831d16be Core/Spell: implemented dispel reflection
Closes #18323

(cherry picked from commit f0772eea98)

# Conflicts:
#	src/server/game/Spells/Spell.cpp
#	src/server/game/Spells/Spell.h
#	src/server/game/Spells/SpellEffects.cpp
2018-04-21 13:52:37 +02:00
Traesh
b7bb5e6a98 Core/Spells: Implemented personal summons (#19231)
* By default determined by summon property flag SUMMON_PROP_FLAG_PERSONAL_SPAWN

Closes #18254
2018-04-08 21:35:33 +03:00
Shauren
91be2332e2 Core/Entities: Phasing rewrite
* Optimized phase visibility checking
* Handle all phase flags

Closes #16758
Closes #21119
2018-03-25 19:28:36 +03:00
Shauren
007b5a68c5 Core/DataStores: Fixed db2 structures after 7.3.5 2018-03-12 23:11:49 +01:00
ariel-
8c83706114 Core/Misc: readd some codestyle changes inadvertently reverted
- Ref commit 6dc37a9add
(cherry picked from commit e1a2b1a813)
2018-03-12 16:39:41 +01:00
Shauren
75603fe1a0 Core/DataStores: Updated db2 structures to 7.3.5.25996 2018-02-18 16:33:50 +01:00
joschiwald
6226189a16 Core/Entities: Created factory methods to create new areatriggers, creatures and gameobjects 2018-01-27 23:02:46 +01:00
ariel-
843a190052 Core/Spell: register items received through SPELL_EFFECT_SUMMON_CHANGE_ITEM for quest credit
- Also sends proper SMSG_ITEM_PUSH_RESULT packet

Closes #3505

(cherry picked from commit 503259e6fe)
2018-01-13 15:51:11 +01:00
Shauren
bb718b5578 Core/Entities: Remove phasemask 2018-01-10 22:01:40 +01:00
joschiwald
78ba1d76dd Core/Spells: Removed obsolete spell fixes 2018-01-03 18:10:47 +01:00
Mihapro
8199eef81c Core/Misc: Added helper function Unit::SetFullPower
* Also renamed Unit::getPowerType and Unit::setPowerType to follow style guidelines

Ref #20981
2018-01-03 16:39:32 +01:00
Shauren
ea6de0b565 Core/BattlePets: Misc fixes
* Fixed caged pet item chat message
* BattlePetMgr optimizations: removed copying data all over the place
* Fixed gaining two pets when learned from item for the first time
* Fixed dismiss button
2018-01-02 14:04:09 +01:00
vincent-michael
7d00ae4045 Update copyright note for 2018
auto happy = new year(2018);
2018-01-01 00:40:17 +01:00
Shauren
66621a85e9 Core/Quests: Implemented player choice rewards 2017-12-31 23:22:55 +01:00
Traesh
89c91c271b Core/Quests: Implemented player choices
* Implemented SPELL_EFFECT_LAUNCH_QUEST_CHOICE
* Script hook for player choices
2017-12-31 23:22:55 +01:00
Shauren
e86a2c439a Core/Auras: Implemented using all aura interrupt flag fields 2017-12-17 16:45:50 +01:00
Traesh
422ad436c7 Core/Scripts: Added new QuestScript hooks (#20950)
* OnQuestStatusChange and OnQuestObjectiveChange
2017-12-04 17:35:37 +01:00
Ovah
a6bdb75d0b Core/Auras: Implemented PROC_HIT_INTERRUPT (#21015) 2017-12-01 23:31:51 +01:00
Ovalord
1b16534e21 Core/Quests: Implemented quest popups 2017-11-28 00:04:03 +01:00
Shauren
839e13d511 Core/Items: Fixed saving item after unlocking 2017-11-26 23:38:17 +01:00
SnapperRy
448ccc2b9e Core/GameObject: spawn linked traps at gameobject creation instead of using DB spawns. (#18172)
Closes #11328.

(cherry picked from commit a38c094a11)
2017-11-26 22:22:24 +01:00
joschiwald
f9067f2aab Core/Auras: don't save auras casted by items
* Core/Auras: don't save auras casted by items

- This type of auras (like Water Bucket, Precious Ribbon, etc) will be recasted on login anyways.

This reverts commit 16cfd59f5b

(partial cherry picked from commit e84dfff4ce)

Core/Auras: fix elixir aura saving

(cherry picked from commit 697147a596)
2017-11-19 16:25:30 +01:00
Snapper
d25a8d42a3 Core/GameObjects: Handle despawning and respawning of nearby linked traps on gameobject despawn and respawn
Closes #12139
Closes #17553

(cherry picked from commit 5d9d25d596)
2017-11-11 21:06:58 +01:00
ariel-
fe2e3b67a8 Core/Spells: use DamageInfo struct to calc spell absorbs and resists, and use calculated proc hitMask on aura ticks
Closes #18135

(cherry picked from commit d3a71a8338)

# Conflicts:
#	src/server/game/Entities/Unit/Unit.cpp
#	src/server/game/Entities/Unit/Unit.h
#	src/server/game/Spells/Auras/SpellAuraEffects.cpp
#	src/server/game/Spells/SpellEffects.cpp
#	src/server/scripts/Commands/cs_misc.cpp
2017-10-15 16:59:56 +02:00