diff --git a/src/app/shared/modules/sai-editor/constants/sai-comments.ts b/src/app/shared/modules/sai-editor/constants/sai-comments.ts index 29bf8987f3..1a8cd9bfc0 100644 --- a/src/app/shared/modules/sai-editor/constants/sai-comments.ts +++ b/src/app/shared/modules/sai-editor/constants/sai-comments.ts @@ -2,73 +2,73 @@ import { SAI_ACTIONS } from './sai-actions'; import { SAI_EVENTS } from './sai-event'; export const SAI_EVENT_COMMENTS = []; -SAI_EVENT_COMMENTS[SAI_EVENTS.SPELLHIT] = `On Spellhit '_spellNameEventParamOne_'`; -SAI_EVENT_COMMENTS[SAI_EVENTS.HAS_AURA] = `On Aura '_hasAuraEventParamOne_'`; -SAI_EVENT_COMMENTS[SAI_EVENTS.TARGET_BUFFED] = `On Target Buffed With '_spellNameEventParamOne_'`; -SAI_EVENT_COMMENTS[SAI_EVENTS.SPELLHIT_TARGET] = `On Target Spellhit '_spellNameEventParamOne_'`; -SAI_EVENT_COMMENTS[SAI_EVENTS.FRIENDLY_MISSING_BUFF] = `On Friendly Unit Missing Buff '_spellNameEventParamOne_'`; -SAI_EVENT_COMMENTS[SAI_EVENTS.HEALTH_PCT] = `Between _eventParamOne_-_eventParamTwo_% Health`; -SAI_EVENT_COMMENTS[SAI_EVENTS.MANA_PCT] = `Between _eventParamOne_-_eventParamTwo_% Mana`; -SAI_EVENT_COMMENTS[SAI_EVENTS.RANGE] = `Within _eventParamOne_-_eventParamTwo_ Range`; -SAI_EVENT_COMMENTS[SAI_EVENTS.OOC_LOS] = `Within _eventParamOne_-_eventParamTwo_ Range Out of Combat LoS`; -SAI_EVENT_COMMENTS[SAI_EVENTS.TARGET_HEALTH_PCT] = `Target Between _eventParamOne_-_eventParamTwo_% Health`; -SAI_EVENT_COMMENTS[SAI_EVENTS.FRIENDLY_HEALTH] = `Friendly At _eventParamOne_ Health`; -SAI_EVENT_COMMENTS[SAI_EVENTS.TARGET_MANA_PCT] = `Target Between _eventParamOne_-_eventParamTwo_% Mana`; -SAI_EVENT_COMMENTS[SAI_EVENTS.RECEIVE_EMOTE] = `Received Emote _eventParamOne_`; -SAI_EVENT_COMMENTS[SAI_EVENTS.DAMAGED] = `On Damaged Between _eventParamOne_-_eventParamTwo_`; -SAI_EVENT_COMMENTS[SAI_EVENTS.DAMAGED_TARGET] = `On Target Damaged Between _eventParamOne_-_eventParamTwo_`; -SAI_EVENT_COMMENTS[SAI_EVENTS.MOVEMENTINFORM] = `On Reached Point _eventParamTwo_`; -SAI_EVENT_COMMENTS[SAI_EVENTS.SUMMON_DESPAWNED] = `On Summon _npcNameFirstParam_ Despawned`; -SAI_EVENT_COMMENTS[SAI_EVENTS.DATA_SET] = `On Data Set _eventParamOne_ _eventParamTwo_`; -SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_REACHED] = `On any Waypoint Reached`; -SAI_EVENT_COMMENTS[SAI_EVENTS.TEXT_OVER] = `On Text _eventParamOne_ Over`; -SAI_EVENT_COMMENTS[SAI_EVENTS.RECEIVE_HEAL] = `On Received Heal Between _eventParamOne_-_eventParamTwo_`; -SAI_EVENT_COMMENTS[SAI_EVENTS.TIMED_EVENT_TRIGGERED] = `On Timed Event _eventParamOne_ Triggered`; -SAI_EVENT_COMMENTS[SAI_EVENTS.GOSSIP_SELECT] = `On Gossip Option _eventParamTwo_ Selected`; -SAI_EVENT_COMMENTS[SAI_EVENTS.GAME_EVENT_START] = `On Game Event _eventParamOne_ Started`; -SAI_EVENT_COMMENTS[SAI_EVENTS.GAME_EVENT_END] = `On Game Event _eventParamOne_ Ended`; -SAI_EVENT_COMMENTS[SAI_EVENTS.GO_EVENT_INFORM] = `On Event _eventParamOne_ Inform`; -SAI_EVENT_COMMENTS[SAI_EVENTS.ACTION_DONE] = `On Action _eventParamOne_ Done`; -SAI_EVENT_COMMENTS[SAI_EVENTS.FRIENDLY_HEALTH_PCT] = `On Friendly Between _eventParamOne_-_eventParamTwo_% Health`; SAI_EVENT_COMMENTS[SAI_EVENTS.UPDATE_IC] = `In Combat`; SAI_EVENT_COMMENTS[SAI_EVENTS.UPDATE_OOC] = `Out of Combat`; +SAI_EVENT_COMMENTS[SAI_EVENTS.HEALTH_PCT] = `Between _eventParamOne_-_eventParamTwo_% Health`; +SAI_EVENT_COMMENTS[SAI_EVENTS.MANA_PCT] = `Between _eventParamOne_-_eventParamTwo_% Mana`; SAI_EVENT_COMMENTS[SAI_EVENTS.AGGRO] = `On Aggro`; SAI_EVENT_COMMENTS[SAI_EVENTS.KILL] = `On Killed Unit`; SAI_EVENT_COMMENTS[SAI_EVENTS.DEATH] = `On Just Died`; SAI_EVENT_COMMENTS[SAI_EVENTS.EVADE] = `On Evade`; +SAI_EVENT_COMMENTS[SAI_EVENTS.SPELLHIT] = `On Spellhit '_spellNameEventParamOne_'`; +SAI_EVENT_COMMENTS[SAI_EVENTS.RANGE] = `Within _eventParamOne_-_eventParamTwo_ Range`; +SAI_EVENT_COMMENTS[SAI_EVENTS.OOC_LOS] = `Within _eventParamOne_-_eventParamTwo_ Range Out of Combat LoS`; SAI_EVENT_COMMENTS[SAI_EVENTS.RESPAWN] = `On Respawn`; +SAI_EVENT_COMMENTS[SAI_EVENTS.TARGET_HEALTH_PCT] = `Target Between _eventParamOne_-_eventParamTwo_% Health`; SAI_EVENT_COMMENTS[SAI_EVENTS.VICTIM_CASTING] = `On Victim Casting '_targetCastingSpellName_'`; +SAI_EVENT_COMMENTS[SAI_EVENTS.FRIENDLY_HEALTH] = `Friendly At _eventParamOne_ Health`; SAI_EVENT_COMMENTS[SAI_EVENTS.FRIENDLY_IS_CC] = `On Friendly Crowd Controlled`; +SAI_EVENT_COMMENTS[SAI_EVENTS.FRIENDLY_MISSING_BUFF] = `On Friendly Unit Missing Buff '_spellNameEventParamOne_'`; SAI_EVENT_COMMENTS[SAI_EVENTS.SUMMONED_UNIT] = `On Summoned Unit`; +SAI_EVENT_COMMENTS[SAI_EVENTS.TARGET_MANA_PCT] = `Target Between _eventParamOne_-_eventParamTwo_% Mana`; SAI_EVENT_COMMENTS[SAI_EVENTS.ACCEPTED_QUEST] = `On Quest '_questNameEventParamOne_' Taken`; SAI_EVENT_COMMENTS[SAI_EVENTS.REWARD_QUEST] = `On Quest '_questNameEventParamOne_' Finished`; SAI_EVENT_COMMENTS[SAI_EVENTS.REACHED_HOME] = `On Reached Home`; +SAI_EVENT_COMMENTS[SAI_EVENTS.RECEIVE_EMOTE] = `Received Emote _eventParamOne_`; +SAI_EVENT_COMMENTS[SAI_EVENTS.HAS_AURA] = `On Aura '_hasAuraEventParamOne_'`; +SAI_EVENT_COMMENTS[SAI_EVENTS.TARGET_BUFFED] = `On Target Buffed With '_spellNameEventParamOne_'`; SAI_EVENT_COMMENTS[SAI_EVENTS.RESET] = `On Reset`; SAI_EVENT_COMMENTS[SAI_EVENTS.IC_LOS] = `In Combat LoS`; SAI_EVENT_COMMENTS[SAI_EVENTS.PASSENGER_BOARDED] = `On Passenger Boarded`; SAI_EVENT_COMMENTS[SAI_EVENTS.PASSENGER_REMOVED] = `On Passenger Removed`; SAI_EVENT_COMMENTS[SAI_EVENTS.CHARMED] = `On Charmed`; SAI_EVENT_COMMENTS[SAI_EVENTS.CHARMED_TARGET] = `On Target Charmed`; +SAI_EVENT_COMMENTS[SAI_EVENTS.SPELLHIT_TARGET] = `On Target Spellhit '_spellNameEventParamOne_'`; +SAI_EVENT_COMMENTS[SAI_EVENTS.DAMAGED] = `On Damaged Between _eventParamOne_-_eventParamTwo_`; +SAI_EVENT_COMMENTS[SAI_EVENTS.DAMAGED_TARGET] = `On Target Damaged Between _eventParamOne_-_eventParamTwo_`; +SAI_EVENT_COMMENTS[SAI_EVENTS.MOVEMENTINFORM] = `On Reached Point _eventParamTwo_`; +SAI_EVENT_COMMENTS[SAI_EVENTS.SUMMON_DESPAWNED] = `On Summon _npcNameFirstParam_ Despawned`; SAI_EVENT_COMMENTS[SAI_EVENTS.CORPSE_REMOVED] = `On Corpse Removed`; SAI_EVENT_COMMENTS[SAI_EVENTS.AI_INIT] = `On Initialize`; -SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_START] = `On any Waypoint Started`; +SAI_EVENT_COMMENTS[SAI_EVENTS.DATA_SET] = `On Data Set _eventParamOne_ _eventParamTwo_`; +SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_START] = `On Path _waypointParamTwo_ Started`; +SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_REACHED] = `On Point _waypointParamOne_ of Path _waypointParamTwo_ Reached`; SAI_EVENT_COMMENTS[SAI_EVENTS.AREATRIGGER_ONTRIGGER] = `On Trigger`; +SAI_EVENT_COMMENTS[SAI_EVENTS.TEXT_OVER] = `On Text _eventParamOne_ Over`; +SAI_EVENT_COMMENTS[SAI_EVENTS.RECEIVE_HEAL] = `On Received Heal Between _eventParamOne_-_eventParamTwo_`; SAI_EVENT_COMMENTS[SAI_EVENTS.JUST_SUMMONED] = `On Just Summoned`; -SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_PAUSED] = `On any Waypoint Paused`; -SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_RESUMED] = `On any Waypoint Resumed`; -SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_STOPPED] = `On any Waypoint Stopped`; -SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_ENDED] = `On any Waypoint Finished`; +SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_PAUSED] = `On Path _eventParamTwo_ Paused`; +SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_RESUMED] = `On Path _eventParamTwo_ Resumed`; +SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_STOPPED] = `On Path _eventParamTwo_ Stopped`; +SAI_EVENT_COMMENTS[SAI_EVENTS.WAYPOINT_ENDED] = `On Path _eventParamTwo_ Finished`; +SAI_EVENT_COMMENTS[SAI_EVENTS.TIMED_EVENT_TRIGGERED] = `On Timed Event _eventParamOne_ Triggered`; SAI_EVENT_COMMENTS[SAI_EVENTS.UPDATE] = `On Update`; +SAI_EVENT_COMMENTS[SAI_EVENTS.LINK] = `_previousLineComment_`; +SAI_EVENT_COMMENTS[SAI_EVENTS.GOSSIP_SELECT] = `On Gossip Option _eventParamTwo_ Selected`; SAI_EVENT_COMMENTS[SAI_EVENTS.JUST_CREATED] = `On Just Created`; SAI_EVENT_COMMENTS[SAI_EVENTS.GOSSIP_HELLO] = `On Gossip Hello`; SAI_EVENT_COMMENTS[SAI_EVENTS.FOLLOW_COMPLETED] = `On Follow Complete`; +SAI_EVENT_COMMENTS[SAI_EVENTS.EVENT_PHASE_CHANGE] = `On Event Phase _eventParamOne_ Set`; SAI_EVENT_COMMENTS[SAI_EVENTS.IS_BEHIND_TARGET] = `On Behind Target`; +SAI_EVENT_COMMENTS[SAI_EVENTS.GAME_EVENT_START] = `On Game Event _eventParamOne_ Started`; +SAI_EVENT_COMMENTS[SAI_EVENTS.GAME_EVENT_END] = `On Game Event _eventParamOne_ Ended`; SAI_EVENT_COMMENTS[SAI_EVENTS.GO_STATE_CHANGED] = `On Gameobject State Changed`; -SAI_EVENT_COMMENTS[SAI_EVENTS.ON_SPELLCLICK] = `On Spellclick`; -SAI_EVENT_COMMENTS[SAI_EVENTS.DISTANCE_CREATURE] = `On Distance To Creature`; -SAI_EVENT_COMMENTS[SAI_EVENTS.DISTANCE_GAMEOBJECT] = `On Distance To GameObject`; -SAI_EVENT_COMMENTS[SAI_EVENTS.LINK] = `_previousLineComment_`; +SAI_EVENT_COMMENTS[SAI_EVENTS.GO_EVENT_INFORM] = `On Event _eventParamOne_ Inform`; SAI_EVENT_COMMENTS[SAI_EVENTS.ACTION_DONE] = `On Action _eventParamOne_ Done`; +SAI_EVENT_COMMENTS[SAI_EVENTS.ON_SPELLCLICK] = `On Spellclick`; +SAI_EVENT_COMMENTS[SAI_EVENTS.FRIENDLY_HEALTH_PCT] = `On Friendly Between _eventParamOne_-_eventParamTwo_% Health`; +SAI_EVENT_COMMENTS[SAI_EVENTS.DISTANCE_CREATURE] = `On Distance _eventParamThree_y To Creature`; +SAI_EVENT_COMMENTS[SAI_EVENTS.DISTANCE_GAMEOBJECT] = `On Distance _eventParamThree_y To GameObject`; SAI_EVENT_COMMENTS[SAI_EVENTS.COUNTER_SET] = `On Counter _eventParamOne_ Set To _eventParamTwo_`; SAI_EVENT_COMMENTS[SAI_EVENTS.SUMMONED_UNIT_DIES] = `On Summoned Unit Dies`; @@ -107,6 +107,7 @@ SAI_ACTION_COMMENTS[SAI_ACTIONS.INC_EVENT_PHASE] = `_incrementOrDecrementActionP SAI_ACTION_COMMENTS[SAI_ACTIONS.EVADE] = `Evade`; SAI_ACTION_COMMENTS[SAI_ACTIONS.FLEE_FOR_ASSIST] = `Flee For Assist`; SAI_ACTION_COMMENTS[SAI_ACTIONS.CALL_GROUPEVENTHAPPENS] = `Quest Credit '_questNameActionParamOne_'`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.COMBAT_STOP] = `Stop Combat`; SAI_ACTION_COMMENTS[SAI_ACTIONS.REMOVEAURASFROMSPELL] = `Remove Aura '_spellNameActionParamOne_'`; SAI_ACTION_COMMENTS[SAI_ACTIONS.FOLLOW] = `_startOrStopBasedOnTargetType_ Follow _getTargetType_`; SAI_ACTION_COMMENTS[SAI_ACTIONS.RANDOM_PHASE] = `Set Random Phase (_actionRandomParameters_)`; @@ -131,7 +132,7 @@ SAI_ACTION_COMMENTS[SAI_ACTIONS.ATTACK_START] = `Start Attacking`; SAI_ACTION_COMMENTS[SAI_ACTIONS.SUMMON_GO] = `Summon Gameobject _gameobjectNameActionParamOne_`; SAI_ACTION_COMMENTS[SAI_ACTIONS.KILL_UNIT] = `Kill Target`; SAI_ACTION_COMMENTS[SAI_ACTIONS.ACTIVATE_TAXI] = `Activate Taxi Path _actionParamOne_`; -SAI_ACTION_COMMENTS[SAI_ACTIONS.WP_START] = `Start Waypoint`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.WP_START] = `Start _waypointStartActionParamThree_Path _actionParamTwo_`; SAI_ACTION_COMMENTS[SAI_ACTIONS.WP_PAUSE] = `Pause Waypoint`; SAI_ACTION_COMMENTS[SAI_ACTIONS.WP_STOP] = `Stop Waypoint`; SAI_ACTION_COMMENTS[SAI_ACTIONS.ADD_ITEM] = `Add Item _addItemBasedOnActionParams_`; @@ -191,14 +192,25 @@ SAI_ACTION_COMMENTS[SAI_ACTIONS.ADD_POWER] = `Add _actionParamTwo_ _powerTypeAct SAI_ACTION_COMMENTS[SAI_ACTIONS.REMOVE_POWER] = `Remove _actionParamTwo_ _powerTypeActionParamOne_`; SAI_ACTION_COMMENTS[SAI_ACTIONS.GAME_EVENT_STOP] = `Stop game event _actionParamTwo_`; SAI_ACTION_COMMENTS[SAI_ACTIONS.GAME_EVENT_START] = `Start game event _actionParamTwo_`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.START_CLOSEST_WAYPOINT] = `Pick Closest Waypoint _actionParamOne_ _actionParamTwo_ _actionParamThree_ _actionParamFour_ _actionParamFive_ _actionParamSix_`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.RISE_UP] = `Move Up`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.RANDOM_SOUND] = `Play Random Sound`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.SET_CORPSE_DELAY] = `Set Corpse Delay to _actionParamOne_s`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.DISABLE_EVADE] = `_enableDisableInvertActionParamOne_ Evade`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.GO_SET_GO_STATE] = `Set GO State To _actionParamOne_`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.SET_SIGHT_DIST] = `Set Sight Distance to _actionParamOne_y`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.FLEE] = `Flee`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.ADD_THREAT] = `Modify Threat`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.LOAD_EQUIPMENT] = `Load Equipment Id _actionParamOne_`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.TRIGGER_RANDOM_TIMED_EVENT] = `Trigger Random Timed Event Between _actionParamOne_-_actionParamTwo_`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.REMOVE_ALL_GAMEOBJECTS] = `Remove All Gameobjects`; SAI_ACTION_COMMENTS[SAI_ACTIONS.INVOKER_CAST] = `Invoker Cast '_spellNameActionParamOne_'`; -SAI_ACTION_COMMENTS[ - SAI_ACTIONS.START_CLOSEST_WAYPOINT -] = `Pick Closest Waypoint _actionParamOne_ _actionParamTwo_ _actionParamThree_ _actionParamFour_ _actionParamFive_ _actionParamSix_`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.PLAY_CINEMATIC] = `Play Cinematic`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.SET_MOVEMENT_SPEED] = `Set _movementTypeActionParamOne_ Speed to _actionParamTwo_._actionParamThree_`; +SAI_ACTION_COMMENTS[SAI_ACTIONS.SET_HEALTH_PCT] = `Set HP to _actionParamOne_%`; // AC-only actions: SAI_ACTION_COMMENTS[SAI_ACTIONS.MOVE_TO_POS_TARGET] = `Move to pos target _actionParamOne_`; -SAI_ACTION_COMMENTS[SAI_ACTIONS.GO_SET_GO_STATE] = `Set GO state to _actionParamOne_`; SAI_ACTION_COMMENTS[SAI_ACTIONS.EXIT_VEHICLE] = `Exit vehicle`; SAI_ACTION_COMMENTS[SAI_ACTIONS.SET_UNIT_MOVEMENT_FLAGS] = `Set unit movement flags to _actionParamOne_`; SAI_ACTION_COMMENTS[SAI_ACTIONS.SET_COMBAT_DISTANCE] = `Set combat distance to _actionParamOne_`; diff --git a/src/app/shared/modules/sai-editor/constants/sai-targets.ts b/src/app/shared/modules/sai-editor/constants/sai-targets.ts index 2e7a00340f..811b8f0792 100644 --- a/src/app/shared/modules/sai-editor/constants/sai-targets.ts +++ b/src/app/shared/modules/sai-editor/constants/sai-targets.ts @@ -32,6 +32,10 @@ export enum SAI_TARGETS { FARTHEST = 28, VEHICLE_PASSENGER = 29, PLAYER_WITH_AURA = 201, + RANDOM_POINT = 202, + ROLE_SELECTION = 203, + SUMMONED_CREATURES = 204, + INSTANCE_STORAGE = 205, } export const SAI_TARGETS_KEYS = getEnumKeys(SAI_TARGETS); @@ -223,3 +227,30 @@ SAI_TARGET_PARAM4_NAMES[SAI_TARGETS.PLAYER_WITH_AURA] = 'distMin'; SAI_TARGET_PARAM2_TOOLTIPS[SAI_TARGETS.PLAYER_WITH_AURA] = '(0/1) makes it inverted.'; SAI_TARGET_O_NAMES[SAI_TARGETS.PLAYER_WITH_AURA] = 'Resize'; SAI_TARGET_O_TOOLTIPS[SAI_TARGETS.PLAYER_WITH_AURA] = 'if set, it will resize the list of targets to this value'; + +// SMART_TARGET_RANDOM_POINT +SAI_TARGET_TOOLTIPS[SAI_TARGETS.RANDOM_POINT] = 'This only works with SMART_ACTION_SUMMON_CREATURE, SMART_ACTION_MOVE_TO_POS and SMART_ACTION_JUMP_TO_POS.'; +SAI_TARGET_PARAM1_NAMES[SAI_TARGETS.RANDOM_POINT] = 'Range'; +SAI_TARGET_PARAM2_NAMES[SAI_TARGETS.RANDOM_POINT] = 'Amount'; +SAI_TARGET_PARAM3_NAMES[SAI_TARGETS.RANDOM_POINT] = 'Self as Middle'; +SAI_TARGET_PARAM1_TOOLTIPS[SAI_TARGETS.RANDOM_POINT] = 'yards'; +SAI_TARGET_PARAM2_TOOLTIPS[SAI_TARGETS.RANDOM_POINT] = 'for SummonCreature'; +SAI_TARGET_PARAM3_TOOLTIPS[SAI_TARGETS.RANDOM_POINT] = '(0/1), else use xyz'; + +// SMART_TARGET_ROLE_SELECTION +SAI_TARGET_TOOLTIPS[SAI_TARGETS.ROLE_SELECTION] = 'Target a Tank/Healer/DPS role. Based on the players spec.'; +SAI_TARGET_PARAM1_NAMES[SAI_TARGETS.ROLE_SELECTION] = 'Max Range'; +SAI_TARGET_PARAM2_NAMES[SAI_TARGETS.ROLE_SELECTION] = 'TargetMask'; +SAI_TARGET_PARAM3_NAMES[SAI_TARGETS.ROLE_SELECTION] = 'Resize list'; +SAI_TARGET_PARAM1_TOOLTIPS[SAI_TARGETS.ROLE_SELECTION] = 'yards'; +SAI_TARGET_PARAM2_TOOLTIPS[SAI_TARGETS.ROLE_SELECTION] = 'Tanks (1), Healer (2) Damage (4)'; + +// SMART_TARGET_SUMMONED_CREATURES +SAI_TARGET_TOOLTIPS[SAI_TARGETS.SUMMONED_CREATURES] = ''; +SAI_TARGET_PARAM1_NAMES[SAI_TARGETS.SUMMONED_CREATURES] = 'creature_template.Entry'; + +// SMART_TARGET_INSTANCE_STORAGE +SAI_TARGET_TOOLTIPS[SAI_TARGETS.INSTANCE_STORAGE] = ''; +SAI_TARGET_PARAM1_NAMES[SAI_TARGETS.INSTANCE_STORAGE] = 'Data Index'; +SAI_TARGET_PARAM2_NAMES[SAI_TARGETS.INSTANCE_STORAGE] = 'Type'; +SAI_TARGET_PARAM2_TOOLTIPS[SAI_TARGETS.INSTANCE_STORAGE] = 'creature (1), gameobject (2)'; diff --git a/src/app/shared/modules/sai-editor/sai-comment-generator.service.spec.ts b/src/app/shared/modules/sai-editor/sai-comment-generator.service.spec.ts index 1b507c8598..644990fbba 100644 --- a/src/app/shared/modules/sai-editor/sai-comment-generator.service.spec.ts +++ b/src/app/shared/modules/sai-editor/sai-comment-generator.service.spec.ts @@ -10,12 +10,12 @@ import { EVENT_FLAGS, GO_FLAGS, NPC_FLAGS, + UNIT_FLAGS, templates, unitBytes1Flags, unitFieldBytes1Type, unitStandFlags, unitStandStateType, - UNIT_FLAGS, } from './constants/sai-constants'; import { SAI_TARGETS } from './constants/sai-targets'; import { SaiCommentGeneratorService } from './sai-comment-generator.service'; @@ -1037,7 +1037,7 @@ describe('SaiCommentGeneratorService', () => { action_type: SAI_ACTIONS.MOVE_TO_POS, target_type: SAI_TARGETS.PLAYER_RANGE, }, - expected: `MockEntity - In Combat - Move To Closest Player`, + expected: `MockEntity - In Combat - Move To Players in Range`, }, { name: `SAI_ACTIONS.MOVE_TO_POS check target type (SAI_TARGETS.PLAYER_DISTANCE)`, @@ -1045,7 +1045,7 @@ describe('SaiCommentGeneratorService', () => { action_type: SAI_ACTIONS.MOVE_TO_POS, target_type: SAI_TARGETS.PLAYER_DISTANCE, }, - expected: `MockEntity - In Combat - Move To Closest Player`, + expected: `MockEntity - In Combat - Move To Players in Distance`, }, { name: `SAI_ACTIONS.MOVE_TO_POS check target type (SAI_TARGETS.CLOSEST_PLAYER)`, @@ -1077,7 +1077,7 @@ describe('SaiCommentGeneratorService', () => { action_type: SAI_ACTIONS.MOVE_TO_POS, target_type: SAI_TARGETS.THREAT_LIST, }, - expected: `MockEntity - In Combat - Move To First Unit On Threatlist`, + expected: `MockEntity - In Combat - Move To Threatlist`, }, { name: `SAI_ACTIONS.MOVE_TO_POS check target type (SAI_TARGETS.CLOSEST_ENEMY)`, @@ -1096,12 +1096,12 @@ describe('SaiCommentGeneratorService', () => { expected: `MockEntity - In Combat - Move To Closest Friendly Unit`, }, { - name: `SAI_ACTIONS.MOVE_TO_POS check target type (27)`, + name: `SAI_ACTIONS.MOVE_TO_POS check target type (SAI_TARGETS.LOOT_RECIPIENTS)`, input: { action_type: SAI_ACTIONS.MOVE_TO_POS, target_type: 27, }, - expected: `MockEntity - In Combat - Move To [unsupported target type]`, + expected: `MockEntity - In Combat - Move To Loot Recipients`, }, { name: `SAI_ACTIONS.GO_SET_LOOT_STATE check action param 1 (0)`, diff --git a/src/app/shared/modules/sai-editor/sai-comment-generator.service.ts b/src/app/shared/modules/sai-editor/sai-comment-generator.service.ts index 628d1ad119..1d4e845ef0 100644 --- a/src/app/shared/modules/sai-editor/sai-comment-generator.service.ts +++ b/src/app/shared/modules/sai-editor/sai-comment-generator.service.ts @@ -47,6 +47,8 @@ export class SaiCommentGeneratorService { case SAI_TARGETS.CREATURE_DISTANCE: case SAI_TARGETS.CLOSEST_CREATURE: return `Closest Creature '${await this.queryService.getCreatureNameById(smartScript.target_param1)}'`; + case SAI_TARGETS.STORED: + return 'Stored'; case SAI_TARGETS.CREATURE_GUID: return `Closest Creature '${await this.queryService.getCreatureNameByGuid(smartScript.target_param1)}'`; case SAI_TARGETS.GAMEOBJECT_RANGE: @@ -56,9 +58,11 @@ export class SaiCommentGeneratorService { case SAI_TARGETS.GAMEOBJECT_GUID: return `Closest Creature '${await this.queryService.getGameObjectNameByGuid(smartScript.target_param1)}'`; case SAI_TARGETS.INVOKER_PARTY: - return "Invoker's Party"; + return 'Invoker\'s Party'; case SAI_TARGETS.PLAYER_RANGE: + return 'Players in Range'; case SAI_TARGETS.PLAYER_DISTANCE: + return 'Players in Distance'; case SAI_TARGETS.CLOSEST_PLAYER: return 'Closest Player'; case SAI_TARGETS.ACTION_INVOKER_VEHICLE: @@ -66,11 +70,27 @@ export class SaiCommentGeneratorService { case SAI_TARGETS.OWNER_OR_SUMMONER: return 'Owner Or Summoner'; case SAI_TARGETS.THREAT_LIST: - return 'First Unit On Threatlist'; + return 'Threatlist'; case SAI_TARGETS.CLOSEST_ENEMY: return 'Closest Enemy'; case SAI_TARGETS.CLOSEST_FRIENDLY: return 'Closest Friendly Unit'; + case SAI_TARGETS.LOOT_RECIPIENTS: + return 'Loot Recipients'; + case SAI_TARGETS.FARTHEST: + return 'Farthest Target'; + case SAI_TARGETS.VEHICLE_PASSENGER: + return 'Vehicle Seat'; + case SAI_TARGETS.PLAYER_WITH_AURA: + return 'Player With Aura'; + case SAI_TARGETS.RANDOM_POINT: + return 'Random Point'; + case SAI_TARGETS.ROLE_SELECTION: + return 'Class Roles'; + case SAI_TARGETS.SUMMONED_CREATURES: + return 'Summoned Creatures'; + case SAI_TARGETS.INSTANCE_STORAGE: + return 'Instance Storage'; default: return '[unsupported target type]'; } @@ -157,6 +177,13 @@ export class SaiCommentGeneratorService { if (eventLine.indexOf('_hasAuraEventParamOne_') > -1) { eventLine = eventLine.replace('_hasAuraEventParamOne_', await this.sqliteQueryService.getSpellNameById(smartScript.event_param1)); } + + if (eventLine.indexOf('_waypointParamOne_') > -1) { + (smartScript.event_param1 > 0) ? (eventLine = eventLine.replace('_waypointParamOne_', `${smartScript.event_param1}`)) : (eventLine = eventLine.replace('_waypointParamOne_', 'Any')); + } + if (eventLine.indexOf('_waypointParamTwo_') > -1) { + (smartScript.event_param2 > 0) ? (eventLine = eventLine.replace('_waypointParamTwo_', `${smartScript.event_param2}`)) : (eventLine = eventLine.replace('_waypointParamTwo_', 'Any')); + } return eventLine; } @@ -447,6 +474,11 @@ export class SaiCommentGeneratorService { actionLine = actionLine.replace('_enableDisableActionParamOne_', 'Enable'); } } + + if (actionLine.indexOf('_enableDisableInvertActionParamOne_') > -1) { + const enableOrDisable = `${smartScript.action_param1}` === '0' ? 'Enable' : 'Disable'; + actionLine = actionLine.replace('_enableDisableInvertActionParamOne_', enableOrDisable); + } if (actionLine.indexOf('_incrementOrDecrementActionParamOne_') > -1) { if (`${smartScript.action_param1}` === '1') { @@ -476,6 +508,60 @@ export class SaiCommentGeneratorService { } } + if (actionLine.indexOf('_waypointStartActionParamThree_') > -1) { + let waypointReplace: string; + switch (Number(smartScript.action_param3)) { + case 0: + waypointReplace = 'Waypoint '; + break; + case 1: + waypointReplace = 'Patrol '; + break; + default: + waypointReplace = '[Unknown Value]'; + break; + } + + actionLine = actionLine.replace('_waypointStartActionParamThree_', waypointReplace); + } + + if (actionLine.indexOf('_movementTypeActionParamOne_') > -1) { + let movementType: string; + switch (Number(smartScript.action_param1)) { + case 0: + movementType = 'Walk'; + break; + case 1: + movementType = 'Run'; + break; + case 2: + movementType = 'Run Back'; + break; + case 3: + movementType = 'Swim'; + break; + case 4: + movementType = 'Swim Back'; + break; + case 5: + movementType = 'Turn Rate'; + break; + case 6: + movementType = 'Flight'; + break; + case 7: + movementType = 'Flight Back'; + break; + case 8: + movementType = 'Pitch Rate'; + break; + default: + movementType = '[Unknown Value]'; + break; + } + actionLine = actionLine.replace('_movementTypeActionParamOne_', movementType); + } + if (actionLine.indexOf('_forceDespawnActionParamOne_') > -1) { if (smartScript.action_param1 > 2) { actionLine = actionLine.replace('_forceDespawnActionParamOne_', 'In ' + smartScript.action_param1 + ' ms');