aletson / TrinityCore

TrinityCore Open Source MMO Framework
http://www.trinitycore.org
GNU General Public License v2.0
3 stars 1 forks source link

Determine which NPC/GOs can be migrated to SAI #8

Open aletson opened 6 years ago

aletson commented 6 years ago

Part of what we need to accomplish as part of this migration is determine what NPC's/GO's are able to be migrated to SAI (no complex scripting, etc) and then start work on these. This is distinct from #7 in that it deals with all NPC's not just those with hardcoded gossip texts.

How to test easily:

World

Eastern Kingdoms

npc/go id zone type notes
npc_bartleby stormwind ScriptedAI check AreaExploredOrEventHappens
npc_marzon_silent_blade stormwind ScriptedAI tied to escort quest
npc_tyrion_spybot stormwind ScriptedAI tied to above
npc_tyrion stormwind ScriptedAI tied to above
npc_calvin_montague tirisfal glades ScriptedAI probably
go_mausoleum_door 176594 tirisfal glades GameObjectAI triggered by next
go_mausoleum_trigger 104593 tirisfal glades GameObjectAI see above
npc_lady_sylvanas_windrunner undercity ScriptedAI
npc_highborne_lamenter undercity ScriptedAI unsure
npc_the_scourge_cauldron wpl ScriptedAI probably not possible
npcs_andorhal_tower wpl ScriptedAI invisible for quest 5098
npc_mikhail wetlands ScriptedAI tied to above

Kalimdor

npc/go id zone type notes
go_naga_brazier 178247 ashenvale GameObjectScript tied to muglash escortai
npc_rizzle_sprysprocket azshara ScriptedAI tied to below
npc_depth_charge 23025 azshara ScriptedAI
npc_draenei_survivor azuremyst ScriptedAI timers?
npc_engineer_spark_overgrind azuremyst ScriptedAI
npc_injured_draenei azuremyst ScriptedAI flags & health
npc_geezle azuremyst CreatureAI
go_ravager_cage azuremyst GameObjectAI tied to below
npc_death_ravager 17556 azuremyst ScriptedAI just cast timers?
npc_webbed_creature bloodmyst NullCreatureAI random-chance stuff
npc_sironas bloodmyst ScriptedAI complex
npc_kerlonian darkshore FollowerAI see todos
npc_threshwackonator darkshore FollowerAI
npc_aged_dying_ancient_kodo desolace CreatureAI probably not
go_iruxos desolace GameObjectAI at a glance, doable
npc_tiger_matriarch_credit durotar ScriptedAI tied to below
npc_tiger_matriarch durotar ScriptedAI
npc_troll_volunteer durotar ScriptedAI complex event stuff
npc_nat_pagle dustwallow ScriptedAI doable
npc_private_hendel dustwallow ScriptedAI maybe doable?
npc_zelfrax dustwallow ScriptedAI
npc_omen moonglade ScriptedAI event boss
npc_giant_spotlight moonglade ScriptedAI linked to event boss
npc_shenthul orgrimmar ScriptedAI AreaExploredOrEventHappens
npc_thrall_warchief orgrimmar ScriptedAI lol yeah right
npc_anachronos_the_ancient silithus ScriptedAI v complex, tied to below
npc_qiraj_war_spawn silithus ScriptedAI complex + random chance
npc_anachronos_quest_trigger silithus ScriptedAI
go_crystalline_tear silithus GameObjectAI also related
go_wind_stone silithus GameObjectAI doable just 1000 conditions
npc_tooga tanaris FollowerAI
npc_beaten_corpse barrens ScriptedAI TalkedToCreature iirc unimplemented
npc_taskmaster_fizzule barrens ScriptedAI counters
npc_twiggy_flathead barrens ScriptedAI probably not
go_panther_cage 1k needles GameObjectAI see TrinityCore/TrinityCore@3bb5f17
npc_enraged_panther 1k needles ScriptedAI TrinityCore/TrinityCore@3bb5f17
npc_cairne_bloodhoof TB ScriptedAI yeah right
npc_ringo ungoro FollowerAI
go_elune_fire winterspring GameObjectAI linked to ranshalla

Outland

Blade's Edge Mountains
npc/go id type notes
npc_nether_drake ScriptedAI seems extreme
npc_daranelle ScriptedAI probably doable w/ conditions?
go_legion_obelisk 185193/5/6/7/8 GameObjectAI quest 10821 support
npc_simon_bunny ScriptedAI not a goddamn chance
go_simon_cluster GameObjectAI see above
go_apexis_relic GameObjectAI more simon says but maybe doable
npc_oscillating_frequency_scanner_master_bunny ScriptedAI quest 10594
Hellfire Peninsula
npc id type notes
npc_aeranas ScriptedAI timers and faction
npc_fel_guard_hound ScriptedAI probably not
npc_colonel_jules ScriptedAI exorcism event
npc_barada ScriptedAI exorcism event
npc_magister_aledis ScriptedAI
Nagrand
npc/go id type notes
npc_maghar_captive EscortAI
npc_creditmarker_visit_with_ancestors ScriptedAI see npcs_andorhal_tower maybe
go_corkis_prison 182349/50/182521 GameObjectAI gives killed monster credit
npc_corki 18444/5/20812 ScriptedAI possibly scriptable, just talk stuff on event?
npc_kurenai_captive EscortAI
go_warmaul_prison GameObjectAI quest 9948, gives credit and makes a dude say something
Netherstorm
npc/go id type notes
npc_commander_dawnforge ScriptedAI
npc_phase_hunter ScriptedAI
go_captain_tyralius_prison GameObjectAI see go_corkis_prison
Shadowmoon Valley
npc/go id type notes
npc_invis_infernal_caster ScriptedAI linked with below
npc_infernal_attacker ScriptedAI
npc_mature_netherwing_drake ScriptedAI bunch o' states, quest credit stuff
npc_enslaved_netherwing_drake ScriptedAI probably not
npc_dragonmaw_peon ScriptedAI probably not
npc_torloth_the_magnificent ScriptedAI no + linked to 3 below
npc_lord_illidan_stormrage ScriptedAI
npc_illidari_spawn ScriptedAI
go_crystal_prison GameObjectAI
npc_enraged_spirit ScriptedAI
npc_shadowmoon_tuber_node ScriptedAI
Zangarmarsh
npc id type notes
npcs_ashyen_and_keleth ScriptedAI see branch - TalkedToCreature

Northrend

Borean Tundra
npc id type notes
npc_sinkhole_kill_credit ScriptedAI phases
npc_khunok_the_behemoth ScriptedAI LOS/range check?
npc_corastrasza ScriptedAI gossip & spellcasts, easy
npc_iruk ScriptedAI gossip, remember castflag 2 on spellcast
npc_nerubar_victim ScriptedAI random stuff
npc_nesingwary_trapper ScriptedAI
npc_thassarian ScriptedAI complex
npc_image_lich_king ScriptedAI linked to above
npc_general_arlos ScriptedAI linked to above
npc_counselor_talbot ScriptedAI p complex
npc_leryssa ScriptedAI linked to above
npc_beryl_sorcerer FollowerAI
npc_imprisoned_beryl_sorcerer ScriptedAI counter
npc_trapped_mammoth_calf ScriptedAI
npc_magmoth_crusher ScriptedAI maybe w conditions?
npc_valiance_keep_cannoneer ScriptedAI timer
npc_warmage_coldarra ScriptedAI timers
npc_hidden_cultist ScriptedAI bunch of conditional gossip, unsure
Crystalsong Forest
npc id ai notes
npc_warmage_violetstand ScriptedAI don't think so but ask malcrom mb
Dalaran
npc id ai notes
npc_mageguard_dalaran ScriptedAI faction/area specific spellcasts
npc_minigob_manabonk ScriptedAI not in a million years
Dragonblight
npc id ai notes
npc_commander_eligor_dawnbringer ScriptedAI best not to
npc_torturer_lecraft ScriptedAI timers and counter
Grizzly Hills
npc id ai notes
npc_mrfloppy ScriptedAI tied to emily
npc_outhouse_bunny ScriptedAI quest 12227 counters
npc_tallhorn_stag 26363 ScriptedAI tied to below
npc_amberpine_woodsman ScriptedAI
npc_wounded_skirmisher ScriptedAI on spell hit
npc_venture_co_straggler ScriptedAI complex?
npc_lake_frog ScriptedAI complex
Howling Fjord
npc id ai notes
npc_razael_and_lyana ScriptedAI see npcs_ashyen_and_keleth
npc_daegarnn ScriptedAI complex and todos
npc_mindless_abomination ScriptedAI
npc_riven_widow_cocoon ScriptedAI random chance
Icecrown
npc id ai notes
npc_argent_valiant CreatureAI jousting / timers
npc_guardian_pavilion CreatureAI trespasser debuffs in area
npc_tournament_training_dummy many CreatureAI no
npc_blessed_banner CreatureAI coordinates event for quest
Storm Peaks
npc id ai notes
npc_roxi_ramrocket ScriptedAI questgiver/trainer/vendor conditionals
npc_brunnhildar_prisoner ScriptedAI probably doable
npc_hyldsmeet_protodrake CreatureAI does vehicle things do not touch
npc_brann_bronzebeard_keystone ScriptedAI gossip and event
Wintergrasp

Holding off until the PR is done.

Zul'Drak
npc id ai notes
npc_drakuru_shackles ScriptedAI custom function - linked to below
npc_captured_rageclaw ScriptedAI absolutely doable
npc_released_offspring_harkoa ScriptedAI
npc_crusade_recruit ScriptedAI gossip and event. if that's just "move forward 10 yds" this is doable
go_scourge_enclosure GameObjectAI should be w SmartGameObjectAI
npc_alchemist_finklestein ScriptedAI events, maybe doable
go_finklesteins_cauldron GameObjectAI should be w SmartGameObjectAI
npc_storm_cloud ScriptedAI on cast it does a vehicle thing

Dungeons

Vanilla

todo

BC

todo

WOTLK

todo

Outstanding Questions

aletson commented 6 years ago

all the world stuff is up there, it's all probably easier pickings than the dungeon stuff I'd imagine and a good place to start

ghost commented 6 years ago

Hmm, good question. I don't remember any. Might be worth a try to ask in #trinity if someone there remembers. Then again, we could ask if @Killyana or @dr-j remember any migrations from EscortAI to smart_scripts. (BTW, I tried searching the TC repository for commits containing EscortAI, but all I found was from 2010/2009 and older (ancient and from before SAI was created).

aletson commented 6 years ago

this or this or this (perhaps less so) looks to me like maybe what it would take to do escort in SAI, probably not something we need to prioritize

ghost commented 6 years ago

Good point, that SQL looks like a SAI made particularly for an escort purpose.

I have only just begun to look at your 3 linked branches above, it may take a little time to find anything worth commenting on.

ghost commented 6 years ago

can FollowerAI be migrated to SAI?

Perhaps. I would think it could be tied to using the creature_formations table in connection with waypoints, but I'm not sure about the details and how it works with SAI.

dr-j commented 6 years ago

tkrokli https://github.com/TrinityCore/TrinityCore/commit/f9db3940e6cf5d5140067036db119ea248c62378 I converted the injured rainspeaker oracle script too and probably mpre

ghost commented 6 years ago

Thank you, that's a nice example for group movement actions in SAI. Minor detail: the 3.3.5 commit is https://github.com/TrinityCore/TrinityCore/commit/5bfb2a193555f8b16f4bb431c5d8d200d8d0ef78

Rushor commented 5 years ago
-- Bartleby SAI
SET @ENTRY := 6090;
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,0,0,0,25,0,100,0,0,0,0,0,2,84,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bartleby - On Reset - Set Faction 84"),
(@ENTRY,0,1,2,19,0,100,0,1640,0,0,0,2,168,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bartleby - On Quest 'Beat Bartleby' Taken - Set Faction 168"),
(@ENTRY,0,2,6,61,0,100,0,0,0,0,0,49,0,0,0,0,0,0,21,100,0,0,0,0,0,0,"Bartleby - On Quest Taken - Start Attacking"),
(@ENTRY,0,3,0,25,0,100,0,0,0,0,0,42,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bartleby - On Reset - Set Invincibility Hp 1"),
(@ENTRY,0,4,5,2,0,100,0,0,15,0,0,15,1640,0,0,0,0,0,12,1,0,0,0,0,0,0,"Bartleby - Between 0-15% Health - Quest Credit 'Beat Bartleby'"),
(@ENTRY,0,5,0,61,0,100,0,0,0,0,0,24,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bartleby - Between 0-15% Health - Evade"),
(@ENTRY,0,6,0,61,0,100,0,0,0,0,0,64,1,0,0,0,0,0,7,0,0,0,0,0,0,0,"Bartleby - On Quest Taken - Store Targetlist");
aletson commented 5 years ago

@Rushor feel free to open an issue for that if it's good! this is just for documentation and I've been away from the community for a long time