Commit Graph
421 Commits
Author SHA1 Message Date
Ovalord 01d62f0ca0 Core/AI: fixed a small logic mistake for SAI directAdd == 0. 1 is suposed to add the quest directly. 2017-11-28 09:53:18 +01:00
Ovalord 05250fe4ad Core/Quests: Implemented quest popups 2017-11-28 08:30:58 +01:00
Aokromes 91affef0c6 Misc: Kill trailing white spaces 2017-11-25 01:36:21 +01:00
Aokromes 0a71d36af5 Core/SAI: Add distance option for SMART_ACTION_SOUND & SMART_ACTION_RANDOM_SOUND 2017-10-26 12:33:57 +02:00
Aokromes 1a5c0f5c3b Core/Grids: Ported cmangos/mangos-wotlk@ea99457
(cherry picked from commit 9299e9b)
2017-06-19 20:20:26 +02:00
ariel- 206c82ead4 Core/SmartAI: implemented SMART_EVENT_EVENT_PHASE_CHANGE
- Use instead of Update + event_phase_mask when action needs to be synchronized
2017-06-11 17:50:24 +02:00
Aokromes ac3dbcb880 Core/Utilities: Rename RandomResizeList->RandomResize as it is no longer restricted to a list 2017-06-07 09:53:04 +02:00
treeston 2b721ca16c SAI fixes follow-up: I missed one. 2017-06-06 22:22:01 +02:00
treeston 3cc2419c2f Fix a whole set of possible infinite loop crashes in SAI (events triggering themselves even with cooldown set). 2017-06-06 22:14:22 +02:00
xinef1 b88200cd58 Core/Misc: Various crash fixes 2017-05-05 01:59:34 +01:00
ariel- f3246f835c Core/Scripts: remove OnDummyEffect hook/sOnDummyEffect ai hook
- Duplicated logic never used, sometimes only ScriptMgr version was called, sometimes only AI
- They only encourage bad scripting practices
- You can still use OnSpellHit or a SpellScript
2017-05-02 02:04:45 +02:00
Aokromes c015a5cf10 Core/Misc: camelize GetFaction/SetFaction properly 2017-05-02 02:02:31 +02:00
tkrokli d40b252c01 Game/AI: SMART_ACTION_JUMP_TO_POS should resume path when reached jump location (#19029)
SmartAI NPCs using SMART_ACTION_JUMP_TO_POS
should resume their path when they have reached the jump location.

The changes in this PR makes the action work as intended.

Closes #18760
2017-04-01 07:05:03 +02:00
Aokromes d8febab3ad Core/SmartAI: Missing parts on previous commit
By Malcrom
2017-03-26 01:03:41 +01:00
Aokromes dca200d6b6 Core/SmartAI: Implement SMART_TARGET_VEHICLE_ACCESSORY
By Malcrom
2017-03-23 04:05:15 +01:00
Aokromes 41c30413c9 Core/Misc: Minimize branch differences 2017-03-13 09:52:07 +01:00
Aokromes 58a585a3f1 Core/Misc: Build fix 2017-03-12 13:51:20 +01:00
Aokromes 546d71a7b4 Core/SAI: added new action SMART_ACTION_PLAY_ANIMKIT 2017-03-11 15:45:16 +01:00
ariel- 7544544cf1 Core/Entities: spawned movementtype should override template movementtype
Core/SmartAI: pass the CreatureData pointer (if any) on updating template

Closes #19223
2017-03-03 01:30:25 +01:00
xinef1 62111a8c4a 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
2017-02-19 09:10:29 +01:00
ariel- 79e6325716 Core/SmartAI: Delay SMART_ACTION_FORCE_DESPAWN by at least one world tick
- Restore old despawn behavior of SmartAI despawning (without reintroducing the run time logs caused by IsSmart)
- Some SAIs relied on this to function (for example #1249)

Partial reverts commit 4fc4c81e89
2017-02-10 05:24:35 +01:00
xinef1 2c05a59815 Core/Misc: Fix various crashes, also related to multithreading (#19012)
* When iterating groups we have to either do it not in multithreaded context (map updates) or start with checking maps (they are guaranteed to change in single thread update).
* Properly clear ComboPoint references on player remove 
* remove some possible references item may have when it is deleted during save. 
* Also clear all hostile references when unit is removed from map.
2017-02-05 01:58:11 +01:00
Rushor 304ecbc8b1 Game/AI: Implement ContactDistance for ACTION_MOVE_TO_POS (#18720) 2017-01-23 00:15:25 +01:00
Aokromes 31484029a0 Revert "[3.3.5][master] Core/Movement: Smooth movement 2017-01-20 16:26:38 +01:00
Aokromes 719a317a67 Update copyright note for 2017 2017-01-02 07:26:38 +01:00
Kittnz 79e28d4452 Tabs 2016-12-28 16:10:54 +01:00
Kittnz a2e01f386a Core/SmartScript: update ACTION_GO_SET_GO_STATE
GO_STATE_ACTIVE             = 0,                        // show in world as used and not reset (closed door open)
GO_STATE_READY              = 1,                        // show in world as ready (closed door close)
GO_STATE_ACTIVE_ALTERNATIVE = 2                         // show in world as used in alt way and not reset (closed door open by cannon fire)

Credits to Sunwell
2016-12-28 16:10:44 +01:00
Aokromes f6160d4d0b Core/Movement: Smooth movement
Implement smooth movement for all waypoint pathing and escortai
2016-11-27 16:59:31 +01:00
SnapperRy 477ba4e439 Core/SAI: reset event phase when calling SMART_ACTION_CALL_SCRIPT_RESET.
Now it really does what it says on the tin.
2016-11-02 03:14:26 +01:00
SnapperRy fe4da7ede8 Core/SAI: remove wrong DB errors.
It is normal to have events applicable only to certain instance difficulties.

Closes #18082.
2016-11-02 02:50:57 +01:00
SnapperRy 4fc4c81e89 Core/SAI: always use DespawnOrUnsummon() for SMART_ACTION_FORCE_DESPAWN.
SmartAI uses that same method internally, so there's no need to handle it in two different ways.

Does not affect functionality, but prevents useless SAI error log in case the target creature is not using SAI.
2016-10-24 13:27:26 +02:00
ariel- 9b74762644 Core/SmartScripts: fixup SMART_EVENT_FLAG_WHILE_CHARMED behaviour to only mean charmed creatures (#17738 follow-up)
Unit::IsControlledByPlayer is a expected value for TempSummons (like some triggers used in quests, summoned by spells).
Previous logic broke a lot of quests which use triggers to do stuff.

Allow JustSummoned and events linked from other events with flag set also in charmed (prevents breaking event chains)
Allow vehicles (needed for vehicles with SmartAI, eg Iron Rune Constructs and You: Rocket Jumping)
2016-10-24 13:18:45 +02:00
ariel- 947086fb54 Core/SmartAI: There's a function for that 2016-10-24 11:10:26 +02:00
SnapperRy 76d8a6e636 Core/SAI: don't reset event phase when npc evades/resets.
The scripts themselves should take care of that.
2016-10-24 11:06:13 +02:00
SnapperRy 96f4cb4799 Core/SmartAI: do not target player's group for SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS.
SMART_TARGET_INVOKER_PARTY or SMART_ACTION_CALL_GROUPEVENTHAPPENS should instead be used to achieve this functionality.
2016-09-14 21:03:44 +02:00
treeston 2fbb01eebd Core/SmartScripts: Add missing break, 5f43e7b follow-up. 2016-09-03 01:21:26 +02:00
treeston 9da4e304ae Scripts/SmartScripts: Fix charmed behavior for SmartAI. For real this time.
- Core AI logic will no longer issue attack/movement commands while under player control.
- Add new SMART_EVENT_FLAG_WHILE_CHARMED (0x200). Any event without this flag won't run while charmed.
- Add SMART_EVENT_FLAG_WHILE_CHARMED to existing actions, except a select subset (movement, talking, and nontriggered casts, pretty much).
2016-09-03 01:21:03 +02:00
treeston 109d87d3c3 Entities/Gossip: The Big One™ that gets rid of all uses of The Bad™ and The Ugly™, e.g. gossip preprocessor macros, and replaces them with the new-and-shiny gossip functions. 2016-08-31 08:39:33 +02:00
ariel- 9203ab1004 Core/SmartAI: fix warning reported by VS2015 2016-08-24 10:26:03 +02:00
SnapperRy ac4ceed1da Core/SmartAI: allow SMART_TARGET_OWNER_OR_SUMMONER to target a temporary summon's summoner, too (#17851)
Core/SmartAI: allow SMART_TARGET_OWNER_OR_SUMMONER to target a temporary summon's summoner, too
2016-08-24 10:24:18 +02:00
SnapperRy 55757c0d68 Core/SmartAI: add param2 to SMART_ACTION_UPDATE_TEMPLATE, allowing to specify if creature's level should remain the same between entry updates.
A value of 0 (default) forces the creature to keep its current level between entry updates.

Fixes #16371
2016-08-24 10:23:34 +02:00
treeston 5b819fa0f1 AI/SmartScripts: SMART_ACTION_ADD_QUEST -> SMART_ACTION_OFFER_QUEST. Open quest offer instead of adding straight to log - old behavior can be requested using action_param2. Closes #17735. 2016-08-20 06:22:19 +02:00
treeston 7b036961f3 AI/SmartScripts: Add param3 to SMART_ACTION_CAST and SMART_ACTION_INVOKER_CAST that allows specific triggered flags to be set (rather than all-or-nothing). Ignored if SMARTCAST_TRIGGERED is not set. 2016-08-20 06:19:54 +02:00
treeston 0e47f961c9 AI/SmartScripts: Add SMART_ACTION_DISABLE_EVADE (117). 2016-08-20 06:19:41 +02:00
treeston c2fd73c95d Core/SmartScripts: Add SMART_TARGET_LOOT_RECIPIENTS. Does what it says on the tin.
Use this new target type to fix The Rider of Blood, The Rider of Frost, The Rider of the Unholy. Closes #17817.
2016-08-20 06:19:26 +02:00
treeston f8862f19f5 Scripts/SmartAI: Some clean-up work:
- NULL -> nullptr
- Rename "AssistPlayerInCombat(who)" to "AssistPlayerInCombatAgainst(who)" to reflect what the method actually does
- Code style

No functionality was changed.
2016-08-05 18:33:37 +02:00
ariel- 30d4f70533 Core/Entities: debloat SummonGameObject parameter list using proper wrappers and enable GO rotation in scripts
- There's still an overload allowing for x, y, z, o to be passed directly
- Fixed default animstate for GameObject creation in many places, it should be 255, not 100 (checked in sniffs)

(cherry picked from commit 62bfee37cb21584cef631dda428feaf5eb829cda)

Conflicts:
	src/server/game/Entities/GameObject/GameObject.cpp
	src/server/game/Entities/Object/Object.cpp
	src/server/game/Spells/SpellEffects.cpp
	src/server/scripts/Commands/cs_gobject.cpp
	src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
	src/server/scripts/Kalimdor/zone_feralas.cpp
2016-08-01 01:23:47 -03:00
treeston d4de0ab053 AI/SmartScripts: Add action_param3 "disablePathfinding" to SMART_ACTION_MOVE_TO_POS (69). 2016-07-22 18:47:20 +02:00
Aokromes 4e31162a42 Core/Scripts: Extended SMART_ACTION_SET_INST_DATA to also set BossStates. (#16739)
Scripts/Dire Maul: Initialize boss states array so it may be called from SmartAI. (Ref #6429)
2016-07-20 16:44:24 +02:00
Snapper 7185ae680c Core/SmartAI: delay SMART_ACTION_FLEE_FOR_ASSIST if creature is rooted/stunned.
Prevents creatures from teleporting around when fleeing while stunned/rooted.
2016-07-20 15:46:31 +02:00