commit
2da90fa07d
File diff suppressed because it is too large
Load Diff
@ -4,6 +4,7 @@ using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||
//Blizzless Project 2022
|
||||
@ -89,7 +90,7 @@ namespace DiIiS_NA.GameServer.CommandManager
|
||||
player.Position.Y + (float)RandomHelper.NextDouble() * 20f,
|
||||
player.Position.Z);
|
||||
|
||||
var monster = player.World.SpawnMonster(actorSNO, position);
|
||||
var monster = player.World.SpawnMonster((ActorSno)actorSNO, position);
|
||||
|
||||
}
|
||||
return string.Format("Spawned {0} mobs with ActorSNO: {1}", amount, actorSNO);
|
||||
@ -461,7 +462,7 @@ namespace DiIiS_NA.GameServer.CommandManager
|
||||
if (!MPQStorage.Data.Assets[SNOGroup.Worlds].ContainsKey(worldId))
|
||||
return "There exist no world with SNOId: " + worldId;
|
||||
|
||||
var world = invokerClient.InGameClient.Game.GetWorld(worldId);
|
||||
var world = invokerClient.InGameClient.Game.GetWorld((WorldSno)worldId);
|
||||
|
||||
if (world == null)
|
||||
return "Can't teleport you to world with snoId " + worldId;
|
||||
@ -888,7 +889,7 @@ namespace DiIiS_NA.GameServer.CommandManager
|
||||
var matches = invokerClient.InGameClient.Player.World.StartingPoints;
|
||||
|
||||
return matches.Aggregate(matches.Count >= 1 ? "Starting Points:\n" : "No match found.",
|
||||
(current, match) => current + string.Format("[{0}] {1} - {2}\n", match.GlobalID.ToString("D6"), match.ActorSNO.Name, match.TargetId));
|
||||
(current, match) => current + string.Format("[{0}] {1} - {2}\n", match.GlobalID.ToString("D6"), match.Name, match.TargetId));
|
||||
}
|
||||
|
||||
[Command("weather", "Allows you to search for a Weather.\nUsage: lookup weather <pattern>")]
|
||||
|
||||
@ -325,7 +325,7 @@ namespace DiIiS_NA.GameServer.Core
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.ActorSNO);
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.SNO);
|
||||
if (_owner is Player)
|
||||
_owner.World.DropItem((_owner as Player), item);
|
||||
return false;
|
||||
@ -342,7 +342,7 @@ namespace DiIiS_NA.GameServer.Core
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.ActorSNO);
|
||||
Logger.Error("Can't find slot in backpack to add item {0}", item.SNO);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
21218
src/DiIiS-NA/D3-GameServer/Core/Types/SNO/ActorSno.cs
Normal file
21218
src/DiIiS-NA/D3-GameServer/Core/Types/SNO/ActorSno.cs
Normal file
File diff suppressed because it is too large
Load Diff
909
src/DiIiS-NA/D3-GameServer/Core/Types/SNO/WorldSno.cs
Normal file
909
src/DiIiS-NA/D3-GameServer/Core/Types/SNO/WorldSno.cs
Normal file
@ -0,0 +1,909 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace DiIiS_NA.D3_GameServer.Core.Types.SNO
|
||||
{
|
||||
public enum WorldSno: int
|
||||
{
|
||||
__NONE = -1,
|
||||
a2c2dun_zolt_treasurehunter = 2812,
|
||||
trdun_leoric_level01 = 2826,
|
||||
a1trdun_level01 = 50579,
|
||||
a1trdun_level04 = 50582,
|
||||
a1trdun_level06 = 50584,
|
||||
a1trdun_level07 = 50585,
|
||||
a2c1dun_swr_caldeum_01 = 50588,
|
||||
a2c2dun_cave_random01 = 50589,
|
||||
a2dun_zolt_sw_random01 = 50594,
|
||||
a2dun_zolt_timed01_level01 = 50596,
|
||||
a2dun_zolt_level01 = 50610,
|
||||
a2dun_zolt_level02 = 50611,
|
||||
a2dun_zolt_level03 = 50612,
|
||||
a2dun_zolt_lobby = 50613,
|
||||
axe_bad_data = 50623,
|
||||
axe_flatworld = 50627,
|
||||
caout_interior_d = 50657,
|
||||
caout_mine_abandoned_cellara = 50658,
|
||||
pvp_map2 = 50715,
|
||||
pvp_maze_arena_01 = 50716,
|
||||
pvp_octagon_arena_01 = 50717,
|
||||
pvp_pillar_01 = 50718,
|
||||
pvp_stairs_arena_01 = 50719,
|
||||
tod_loadscreen = 50814,
|
||||
caout_interior_f = 51270,
|
||||
a2c3dun_aqd_oasis_level01 = 57491,
|
||||
a1c6_spidercave_01 = 58231,
|
||||
a2dun_swr_adria_level01 = 58493,
|
||||
trdun_leoric_level02 = 58982,
|
||||
trdun_leoric_level03 = 58983,
|
||||
a2dun_aqd_special_01 = 59486,
|
||||
a2dun_zolt_bossfight_level04 = 60193,
|
||||
trdun_cave_nephalem_01 = 60393,
|
||||
trdun_cave_nephalem_02 = 60394,
|
||||
trdun_cave_nephalem_03 = 60395,
|
||||
caout_khamsin_mine = 60432,
|
||||
trdun_crypt_skeletonkingcrown_01 = 60600,
|
||||
trdun_cain_intro = 60713,
|
||||
a2_belial_room_01 = 60756,
|
||||
caout_interior_g_stranded2 = 60838,
|
||||
a2dun_zolt_head_random01 = 61631,
|
||||
a2trdun_cave_oasis_random01 = 62568,
|
||||
a2trdun_cave_oasis_random02 = 62569,
|
||||
trout_sub240_fields_cellara = 62706,
|
||||
trout_adriascellar = 62751,
|
||||
a2dun_aqd_special_a = 62776,
|
||||
a2dun_aqd_special_b = 62779,
|
||||
caout_town = 70885,
|
||||
trout_town = 71150,
|
||||
trdun_crypt_falsepassage_01 = 72636,
|
||||
trdun_crypt_falsepassage_02 = 72637,
|
||||
trout_townattack = 72882,
|
||||
a1trdun_king_level08 = 73261,
|
||||
a1dun_leor_manor = 75049,
|
||||
a3dun_keep_level04 = 75434,
|
||||
trdun_butcherslair_02 = 78839,
|
||||
pvp_caout_arena_01 = 79100,
|
||||
a3dun_crater_st_level01 = 79401,
|
||||
a1trdun_cath_tower_of_power = 80057,
|
||||
a2dun_zolt_shadowrealm_level01 = 80589,
|
||||
trout_oldtistram_cellar = 80730,
|
||||
a3dun_crater_st_level02 = 80763,
|
||||
a3dun_rmpt_level01 = 81019,
|
||||
a3dun_crater_level_01 = 81049,
|
||||
a1_cave_fields_scavengerden_level01 = 81163,
|
||||
a1_cave_fields_scavengerden_level02 = 81164,
|
||||
a2_belial_room_intro = 81715,
|
||||
a3dun_crater_level_02 = 81934,
|
||||
highlands_randomdrlg_westtower_level01 = 82076,
|
||||
highlands_randomdrlg_westtower_level02 = 82313,
|
||||
a1_cave_fields_minecavea_level01 = 82370,
|
||||
a1_cave_fields_minecavea_level02 = 82371,
|
||||
a1_cave_highlands_goatcavea_level01 = 82502,
|
||||
a1_cave_highlands_goatcavea_level02 = 82511,
|
||||
trout_oldtristram_treecave = 84518,
|
||||
a3dun_crater_st_level04 = 85201,
|
||||
a2dun_cald = 86594,
|
||||
trout_tristram_leahsroom = 86856,
|
||||
trout_highlands_dunexteriora = 87707,
|
||||
trdun_crypt_skeletonkingcrown_02 = 92126,
|
||||
a3dun_rmpt_level02 = 93099,
|
||||
a3dun_keep_level03 = 93104,
|
||||
trdun_jail_level01 = 94676,
|
||||
a3_battlefields_02 = 95804,
|
||||
pvp_butcher_arena_01 = 102100,
|
||||
trdun_crypt_fields_flooded_memories_level01 = 102299,
|
||||
gluttony_boss = 103209,
|
||||
a4dun_garden3_spireentrance = 103910,
|
||||
trout_vendor_tinker = 104446,
|
||||
a1trdun_level05_templar = 105406,
|
||||
trout_oldtistram_cellar_1 = 106746,
|
||||
trout_oldtistram_cellar_2 = 106752,
|
||||
trout_oldtistram_cellar_3 = 107050,
|
||||
trout_fields_vendor_curios = 107445,
|
||||
a4dun_heaven_1000_monsters_fight = 109143,
|
||||
trout_tristram_inn = 109362,
|
||||
a4dun_garden_of_hope_01 = 109513,
|
||||
a4dun_hell_portal_01 = 109525,
|
||||
a4dun_hell_portal_02 = 109530,
|
||||
a4dun_diablo_arena = 109561,
|
||||
a2dun_cald_uprising = 109894,
|
||||
a2dun_portalroulette_a = 111376,
|
||||
a2dun_boneyard_worm_cave_01 = 111666,
|
||||
a2trdun_boneyard_spider_cave_01 = 111670,
|
||||
pvp_cald_swr_ver2 = 112864,
|
||||
a1trdun_tyrael_level09 = 117405,
|
||||
a3dun_crater_level_03 = 119290,
|
||||
a3dun_crater_st_level01b = 119641,
|
||||
a3dun_crater_st_level04b = 119650,
|
||||
fields_cave_swordofjustice_level01 = 119888,
|
||||
a3dun_azmodan_arena = 121214,
|
||||
a4dun_spire_level_01 = 121579,
|
||||
a2dun_zolt_blood02 = 123183,
|
||||
pvp_neph_arena = 129123,
|
||||
a4dun_spire_level_02 = 129305,
|
||||
a4dun_spire_level_03 = 129306,
|
||||
trout_tristram_cainshouse = 130161,
|
||||
pvp_crypt_arena_01 = 131908,
|
||||
a1_cave_highlands_vendorrescue = 132995,
|
||||
caout_oasis_cellar_d_refugeecellar = 134820,
|
||||
caout_oasis_cellar_c_zakarwamerchant = 134822,
|
||||
a1_cave_wilderness_den_level01 = 135193,
|
||||
a1dun_labyrinth_01 = 135713,
|
||||
caout_stingingwinds_randomcellar_1 = 136058,
|
||||
caout_stingingwinds_randomcellar_2 = 136116,
|
||||
caout_stingingwinds_randomcellar_3 = 136136,
|
||||
a3dun_keep_level05 = 136415,
|
||||
trout_oldtristram_cellar_f = 136441,
|
||||
caout_oasis_randomcellar_1 = 136900,
|
||||
caout_oasis_randomcellar_2 = 136932,
|
||||
caout_oasis_randomcellar_3 = 136936,
|
||||
pvp_zolt_ruins_arena = 137439,
|
||||
a3dun_crater_st_level02b = 139272,
|
||||
pvp_crypt_arena_02 = 139469,
|
||||
a4dun_sigil_a = 139965,
|
||||
a3dun_bridge_interior_random01 = 140444,
|
||||
pvp_craterst_arena = 140638,
|
||||
a2_event_dyingman_mine = 140652,
|
||||
a4dun_sigil_b = 140709,
|
||||
a2dun_swr_swr_to_oasis_level01 = 146619,
|
||||
battlenet_mainscreen = 148534,
|
||||
caout_alcarnus_randomcellar_1 = 148899,
|
||||
caout_alcarnus_randomcellar_2 = 148907,
|
||||
caout_alcarnus_randomcellar_3 = 148908,
|
||||
limbo = 149898,
|
||||
a4dun_diablo_shadowrealm_01 = 153670,
|
||||
trdun_crypt_skeletonkingcrown_00 = 154587,
|
||||
a2dun_aqd_oasis_randomfacepuzzle_small = 157882,
|
||||
a2dun_aqd_oasis_randomfacepuzzle_large = 158593,
|
||||
a2trdun_cave_oasis_random02_level02 = 161011,
|
||||
caout_refugeecamp = 161472,
|
||||
a1trdun_cave_old_ruins_random01 = 161961,
|
||||
caout_oasis_randomcellar_4 = 162790,
|
||||
trdun_crypt_fields_flooded_memories_level02 = 165797,
|
||||
a4dun_libraryoffate = 166640,
|
||||
trout_townattack_chapelcellar_a = 167721,
|
||||
a2dun_zolt_timed01_level02 = 168196,
|
||||
pvp_trainingground = 168230,
|
||||
a2dun_cave_mapdungeon_level01 = 169477,
|
||||
pvp_traininginn = 170375,
|
||||
trout_highlands_servanthouse_cellar_vendor = 171189,
|
||||
a3dun_hub_keep = 172909,
|
||||
a2_swr_fcauseway_01 = 174434,
|
||||
trout_tristram_cainshouse_event = 174449,
|
||||
a3dun_keep_random_01 = 174516,
|
||||
caout_hub_inn = 174530,
|
||||
a3dun_keep_random_02 = 174555,
|
||||
a3dun_keep_random_03 = 174560,
|
||||
a3dun_keep_random_04 = 174665,
|
||||
a4dun_heaven_hub_keep = 178152,
|
||||
a4dun_sigil_d = 180517,
|
||||
a1dun_spidercave_01 = 180550,
|
||||
a4dun_sigil_c = 181644,
|
||||
a3dun_keep_hub_inn = 182875,
|
||||
a4dun_heaven_1000_monsters_fight_entrance = 182944,
|
||||
a1dun_spidercave_02 = 182976,
|
||||
a4dun_heaven_keep_hub_inn = 183800,
|
||||
a3dun_keep_random_cellar_01 = 185217,
|
||||
a3dun_keep_random_cellar_02 = 185247,
|
||||
a3dun_hub_adria_tower = 186552,
|
||||
a3dun_icecaves_random_01 = 189259,
|
||||
a3dun_icecaves_timed_01 = 189910,
|
||||
battlenet_act2screen = 191376,
|
||||
battlenet_act3screen = 191389,
|
||||
battlenet_act4screen = 191390,
|
||||
a2dun_aqd_oasis_level01 = 192640,
|
||||
a2dun_aqd_oasis_level00 = 192687,
|
||||
a1_cave_wilderness_den_level02 = 194231,
|
||||
a2dun_cave_mapdungeon_level02 = 194238,
|
||||
a2trdun_cave_oasis_random01_level02 = 194240,
|
||||
battlenet_pvpscreen = 194282,
|
||||
caout_cellar_alcarnus_main = 195200,
|
||||
a2_event_priceofmercy_cellar = 195997,
|
||||
a2dun_zolt_random_portalroulette_02 = 196036,
|
||||
a2_rockworm_cellar_cave = 196222,
|
||||
a4dun_diablo_arena_phase3 = 196292,
|
||||
a3dun_keep_random_cellar_03 = 197622,
|
||||
a4dun_spire_level_00 = 198281,
|
||||
trout_wilderness_corpsehouse = 199388,
|
||||
a2dun_cave_bloodvial_01 = 204628,
|
||||
a2dun_cave_bloodvial_02 = 204674,
|
||||
a3dun_hub_adria_tower_intro = 204707,
|
||||
a4dun_spire_diabloentrance = 205399,
|
||||
a3dun_bridge_interior_random02 = 205422,
|
||||
a4dun_spire_level_04 = 210725,
|
||||
a1dun_random_level01 = 211471,
|
||||
a4dun_spire_exterior = 214956,
|
||||
a2trdun_boneyard_spider_cave_02 = 218967,
|
||||
a2dun_boneyard_worm_cave_02 = 218970,
|
||||
a4dun_garden_of_hope_random = 219659,
|
||||
a2c2dun_cave_random01_level02 = 220804,
|
||||
a3dun_icecaves_random_01_level_02 = 221688,
|
||||
a3dun_icecaves_timed_01_level_02 = 221689,
|
||||
a3dun_keep_random_01_level_02 = 221748,
|
||||
a3dun_keep_random_02_level_02 = 221749,
|
||||
a3dun_keep_random_03_level_02 = 221750,
|
||||
a3dun_keep_random_04_level_02 = 221751,
|
||||
a2dun_zolt_sw_random01_level02 = 222575,
|
||||
a1dun_crypt_dev_hell = 222591,
|
||||
utility_server_world = 223474,
|
||||
pvp_keep_arena = 225850,
|
||||
a3_battlefields_03 = 226713,
|
||||
pvp_garden_arena = 227206,
|
||||
a1trdun_cave_qa_well = 230288,
|
||||
x1_bogcave_random01 = 234962,
|
||||
pvp_leoricsgarden_arena = 235229,
|
||||
x1_bogcave_random02 = 235882,
|
||||
pvp_zolt_small_arena = 236154,
|
||||
battlenet_act1screen = 238775,
|
||||
x1_pof_dungeonlayout_level_01 = 245391,
|
||||
x1_pof_dungeonlayout_level_02 = 245402,
|
||||
x1_test_challengetestworld = 245736,
|
||||
x1_westm_int_gen_c_miser = 246369,
|
||||
x1_pof_dungeonboss_01 = 252144,
|
||||
qa_pvp_test_map = 252723,
|
||||
uber_bossworld1 = 256111,
|
||||
uber_bossworld2 = 256112,
|
||||
uber_bossworld3 = 256607,
|
||||
uber_portalworld = 257117,
|
||||
pvp_regicide_prototype_small = 258624,
|
||||
x1_westm_zone_01 = 261712,
|
||||
x1_westm_zone_03 = 263494,
|
||||
flatworld_pvp_demo = 265834,
|
||||
x1_bog_01 = 267412,
|
||||
x1_bog_bogpeople_cellar_c = 269874,
|
||||
x1_fortress_level_01 = 271233,
|
||||
x1_fortress_level_02 = 271235,
|
||||
x1_bog_bogpeople_cellar_d = 271533,
|
||||
x1_bog_bogpeople_cellar_a = 272172,
|
||||
pvp_duel_box = 273257,
|
||||
x1_fortress_temp_malthaelarena = 273433,
|
||||
pvp_field_test = 273769,
|
||||
pvp_z_lane_test = 274044,
|
||||
pvp_peanut_longlane = 274658,
|
||||
pvp_duel_small = 275192,
|
||||
x1_pand_ext_level_01 = 275415,
|
||||
x1_lr_tileset_cath = 275921,
|
||||
x1_lr_tileset_corruptspire = 275926,
|
||||
x1_lr_tileset_leorics = 275930,
|
||||
x1_lr_tileset_rootcave = 275943,
|
||||
x1_lr_tileset_wormcaves = 275944,
|
||||
x1_lr_tileset_zoltarchives = 275945,
|
||||
x1_lr_tileset_crypt = 275946,
|
||||
x1_lr_tileset_floodedcave = 275947,
|
||||
x1_lr_tileset_icecave = 275960,
|
||||
x1_lr_hubworld = 276032,
|
||||
pvp_three_control = 276095,
|
||||
pvp_murderball_test_01 = 277669,
|
||||
pvp_duel_small_multi = 279626,
|
||||
x1_bog_adriaritual = 282460,
|
||||
x1_catacombs_level01 = 283552,
|
||||
x1_catacombs_level02 = 283566,
|
||||
x1_westm_rescueinterior_01 = 284491,
|
||||
x1_westm_rescueinterior_02 = 284492,
|
||||
battlenet_act5screen = 288104,
|
||||
x1_lr_level_01 = 288454,
|
||||
x1_lr_level_02 = 288685,
|
||||
x1_lr_level_03 = 288687,
|
||||
x1_lr_level_04 = 288798,
|
||||
x1_lr_level_05 = 288800,
|
||||
x1_lr_level_06 = 288802,
|
||||
x1_lr_level_07 = 288804,
|
||||
x1_lr_level_08 = 288810,
|
||||
x1_lr_level_09 = 288814,
|
||||
x1_lr_level_10 = 288816,
|
||||
x1_lr_tileset_zoltruins = 288823,
|
||||
x1_lr_tileset_sewers = 288843,
|
||||
x1_westm_int_gen_a_01 = 288972,
|
||||
x1_westm_custom_alley_01_rat = 289523,
|
||||
x1_pand_ext_gateoverlook = 291941,
|
||||
x1_pand_hexmaze = 294585,
|
||||
x1_westm_int_rescue_guards_01 = 294633,
|
||||
x1_pand_batteringram = 295225,
|
||||
x1_adria_boss_arena_02 = 297771,
|
||||
x1_pand_hexmaze_en_01 = 302603,
|
||||
x1_westm_int_gen_b_01madman = 302733,
|
||||
x1_westm_int_gen_a_01zombiesorcerer = 302876,
|
||||
x1_westm_int_gen_b_02doomedwoman = 303058,
|
||||
x1_westm_int_gen_a02necromancer = 303361,
|
||||
x1_westm_scoundrelevent = 303430,
|
||||
x1_westmarch_hub = 304235,
|
||||
x1_westm_alley_rats = 304358,
|
||||
x1_westm_intro = 306549,
|
||||
x1_pand_hexmaze_2 = 306747,
|
||||
x1_westm_int_rescue_guards_02 = 306915,
|
||||
x1_urzael_arena = 308446,
|
||||
x1_westmarch_cath_int = 308549,
|
||||
x1_westmarch_overlook_d = 308705,
|
||||
x1_pand_hexmaze_en_02 = 310706,
|
||||
x1_westm_reformedcultist = 310845,
|
||||
pvp_square_test_01 = 315043,
|
||||
x1_westm_int_gen_a_01_captainstokely = 321968,
|
||||
x1_pand_ext_cellar_a = 322531,
|
||||
x1_lr_tileset_keep_war = 322661,
|
||||
x1_lr_tileset_keep_forge = 322662,
|
||||
x1_lr_tileset_keep_river = 322663,
|
||||
x1_lr_tileset_aqueducts = 322710,
|
||||
x1_lr_tileset_spidercaves = 322726,
|
||||
x1_lr_tileset_crater = 323565,
|
||||
x1_lr_tileset_cath_large = 324418,
|
||||
x1_lr_tileset_cath_small = 324425,
|
||||
x1_lr_tileset_leorics_small = 327401,
|
||||
x1_lr_tileset_crypt_small = 327768,
|
||||
x1_lr_tileset_zoltarchives_small = 327864,
|
||||
x1_lr_tileset_cath_extralarge = 328037,
|
||||
x1_westm_int_gen_c_01_skeleton_rush = 328325,
|
||||
x1_westm_int_gen_b_02_var_c_yard_rush = 328344,
|
||||
x1_malthael_boss_arena = 328484,
|
||||
x1_westm_int_gen_c_03_elements = 328933,
|
||||
x1_westm_int_gen_b_03_var_c_panic = 330207,
|
||||
x1_westm_templar_event = 330391,
|
||||
x1_lr_tileset_exterior_tristramfields = 330465,
|
||||
x1_westm_cellar_corpsefinder = 330761,
|
||||
x1_lr_tileset_westmarch = 331263,
|
||||
x1_lr_tileset_abattoir = 331384,
|
||||
x1_lr_tileset_bogcave = 331385,
|
||||
x1_lr_tileset_fortress = 331387,
|
||||
x1_lr_tileset_catacombs = 331388,
|
||||
x1_lr_tileset_hexmaze = 331389,
|
||||
x1_a5_challenge_westm_dreadghosts = 331944,
|
||||
x1_lr_tileset_exterior_bog = 332284,
|
||||
x1_tristram_adventure_mode_hub = 332336,
|
||||
x1_lr_tileset_aqueducts_small = 333443,
|
||||
x1_westm_int_gen_b_03_var_b_ghostchase = 335058,
|
||||
x1_lr_tileset_aqueducts_large = 335192,
|
||||
x1_lr_tileset_corruptspire_large = 335410,
|
||||
x1_lr_tileset_crypt_large = 335922,
|
||||
x1_lr_tileset_crater_small = 335992,
|
||||
x1_lr_tileset_floodedcave_large = 336064,
|
||||
x1_lr_tileset_icecave_large = 336068,
|
||||
x1_lr_tileset_keep_forge_large = 336073,
|
||||
x1_lr_tileset_keep_river_large = 336077,
|
||||
x1_lr_tileset_keep_war_large = 336078,
|
||||
x1_lr_tileset_leorics_large = 336083,
|
||||
x1_lr_tileset_rootcave_large = 336085,
|
||||
x1_lr_tileset_sewers_large = 336086,
|
||||
x1_lr_tileset_spidercaves_large = 336096,
|
||||
x1_lr_tileset_wormcaves_large = 336104,
|
||||
x1_lr_tileset_zoltarchives_large = 336137,
|
||||
x1_lr_tileset_zoltruins_large = 336139,
|
||||
x1_lr_tileset_corruptspire_small = 336143,
|
||||
x1_lr_tileset_floodedcave_small = 336148,
|
||||
x1_lr_tileset_icecave_small = 336149,
|
||||
x1_lr_tileset_keep_forge_small = 336234,
|
||||
x1_lr_tileset_keep_river_small = 336239,
|
||||
x1_lr_tileset_keep_war_small = 336240,
|
||||
x1_lr_tileset_rootcave_small = 336242,
|
||||
x1_lr_tileset_sewers_small = 336244,
|
||||
x1_lr_tileset_spidercaves_small = 336246,
|
||||
x1_bogcave_random01_b = 336572,
|
||||
x1_bogcave_random02_b = 336573,
|
||||
x1_westm_int_gen_a_03_kingevent01 = 336844,
|
||||
x1_westm_int_gen_b_02_kingevent02 = 336852,
|
||||
x1_westm_int_gen_a_04_kingevent03 = 336902,
|
||||
x1_lr_tileset_wormcaves_small = 337001,
|
||||
x1_lr_tileset_zoltruins_small = 337003,
|
||||
x1_pand_ext_2_battlefields = 338600,
|
||||
x1_westm_deathorb_gideonscourt = 338891,
|
||||
x1_abattoir_random01 = 338930,
|
||||
x1_westm_graveyard_deathorb = 338944,
|
||||
x1_abattoir_random01_b = 338968,
|
||||
x1_abattoir_random02 = 338976,
|
||||
x1_abattoir_random02_b = 338977,
|
||||
x1_westm_deathorb_kerwinsrow = 339151,
|
||||
x1_heaven_pandemonium_portal = 339160,
|
||||
x1_pand_ext_batteringram_entrance_a = 339254,
|
||||
x1_westm_scoundrelevent_level02 = 340624,
|
||||
x1_catacombs_fakeentrance_02 = 341037,
|
||||
x1_catacombs_fakeentrance_03 = 341038,
|
||||
x1_catacombs_fakeentrance_04 = 341040,
|
||||
x1_catacombs_jeweler_1 = 342109,
|
||||
x1_lr_tileset_pony = 343942,
|
||||
x1_lr_tileset_pony_large = 343943,
|
||||
x1_lr_tileset_pony_small = 343944,
|
||||
x1_fortress_malthael_entrance = 346410,
|
||||
x1_lr_tileset_exterior_wilderness = 346912,
|
||||
x1_lr_tileset_exterior_highlands = 347368,
|
||||
x1_lr_tileset_exterior_gardensofhope1 = 347749,
|
||||
x1_lr_tileset_exterior_gardensofhope2 = 347750,
|
||||
x1_lr_tileset_exterior_gardensofhope3 = 347751,
|
||||
x1_lr_tileset_exterior_graveyard = 347861,
|
||||
x1_lr_tileset_exterior_pandext = 347903,
|
||||
x1_lr_tileset_breakup_wortham = 348606,
|
||||
x1_lr_tileset_exterior_boneyards = 349173,
|
||||
x1_lr_tileset_cratertowers1_small = 350309,
|
||||
x1_lr_tileset_cratertowers2_small = 350310,
|
||||
x1_lr_tileset_cratertowers3_small = 350311,
|
||||
x1_lr_tileset_cratertowers4_small = 350312,
|
||||
x1_lr_tileset_cratertowers5_small = 350313,
|
||||
x1_lr_tileset_cratertowers6_small = 350314,
|
||||
x1_lr_tileset_cratertowers7_small = 350315,
|
||||
x1_lr_tileset_exterior_ramparts1 = 351261,
|
||||
x1_lr_tileset_exterior_ramparts2 = 351269,
|
||||
x1_lr_tileset_exterior_ramparts3 = 351270,
|
||||
x1_lr_tileset_exterior_rampartsdamaged1 = 351271,
|
||||
x1_lr_tileset_exterior_rampartsdamaged2 = 351272,
|
||||
x1_lr_tileset_exterior_rampartsdamaged3 = 351273,
|
||||
x1_westm_cellar_kids = 351793,
|
||||
x1_westm_cellar_ruffians = 351794,
|
||||
x1_westm_int_gen_c_03_dogs = 357501,
|
||||
x1_westm_int_gen_c_03_deathmaiden = 357502,
|
||||
x1_pand_ext_cellar_b = 357650,
|
||||
x1_pand_ext_cellar_c = 357653,
|
||||
x1_pand_ext_cellar_d = 357656,
|
||||
x1_pand_ext_cellar_e = 357658,
|
||||
x1_catacombs_jeweler_2 = 358554,
|
||||
x1_westm_int_gen_c_01_zombiefireplace = 358641,
|
||||
x1_bogcave_random_connector = 358955,
|
||||
x1_bog_bogpeople_cellar_b = 359862,
|
||||
x1_lr_tileset_hexmaze_large = 360736,
|
||||
x1_lr_tileset_hexmaze_small = 360737,
|
||||
x1_lr_tileset_catacombs_large = 360756,
|
||||
x1_lr_tileset_catacombs_small = 360757,
|
||||
x1_lr_tileset_bogcave_large = 360768,
|
||||
x1_lr_tileset_bogcave_small = 360769,
|
||||
x1_lr_tileset_fortress_small = 360796,
|
||||
x1_lr_tileset_fortress_large = 360797,
|
||||
x1_lr_tileset_abattoir_large = 360811,
|
||||
x1_lr_tileset_abattoir_small = 360812,
|
||||
x1_lr_tileset_westmarch_small = 360815,
|
||||
x1_lr_tileset_westmarch_large = 360816,
|
||||
x1_lr_tileset_westmarchfire = 360823,
|
||||
x1_lr_tileset_westmarchfire_small = 360835,
|
||||
x1_lr_tileset_westmarchfire_large = 360836,
|
||||
x1_lr_tileset_fortressislands = 362155,
|
||||
x1_lr_tileset_fortressislands_small = 362175,
|
||||
x1_lr_tileset_hellportala_small = 362178,
|
||||
x1_lr_tileset_hellportalb_small = 362187,
|
||||
x1_lr_tileset_exterior_graveyard_small = 363977,
|
||||
x1_lr_tileset_exterior_bog_small = 363998,
|
||||
x1_lr_tileset_exterior_pandext_small = 364270,
|
||||
x1_lr_tileset_exterior_pandext_large = 364271,
|
||||
x1_lr_tileset_exterior_graveyard_large = 364391,
|
||||
x1_lr_tileset_exterior_bog_large = 364392,
|
||||
x1_lr_tileset_exterior_boneyards_large = 364533,
|
||||
a4dun_uber_diablo_shadowrealm_01 = 365973,
|
||||
x1_lr_tileset_event_crypt_udderchaos = 366326,
|
||||
x1_westm_int_blacksmith = 368426,
|
||||
x1_lr_tileset_crypt_small_udderchaos = 373812,
|
||||
x1_pand_hexmaze_bloone = 374758,
|
||||
x1_pand_hexmaze_borgoth = 374762,
|
||||
x1_pand_hexmaze_grotescor = 374766,
|
||||
x1_pand_hexmaze_haziael = 374770,
|
||||
x1_pand_hexmaze_magrethar = 374774,
|
||||
x1_pand_hexmaze_severag = 374778,
|
||||
x2_zpvp_cath_01 = 378972,
|
||||
p1_tgoblin_realm = 379962,
|
||||
p1_tgoblin_realm_bossroom = 380753,
|
||||
p2_scoundrelevent = 384425,
|
||||
p1_lr_tileset_cesspools_small = 389322,
|
||||
p1_lr_tileset_cesspools_large = 389323,
|
||||
p2_datedungeon_01 = 404654,
|
||||
p2_datedungeon_02 = 405005,
|
||||
p1_tieredrift_challenge = 405684,
|
||||
x1_p4_forest_coast_01 = 408254,
|
||||
a4dun_corruptspire_sidedungeon_a_level1 = 409000,
|
||||
p1_a1dun_random_level_goblin = 409093,
|
||||
a4dun_corruptspire_sidedungeon_a_level2 = 409374,
|
||||
a4dun_garden_of_hope_random_a = 409510,
|
||||
a4dun_garden_of_hope_random_b = 409511,
|
||||
px_lr_tileset_exterior_oasisdrlg = 409626,
|
||||
px_lr_tileset_exterior_oasisdrlg_small = 409777,
|
||||
px_lr_tileset_exterior_oasisdrlg_large = 409779,
|
||||
px_lr_tileset_exterior_leoricsjail = 409802,
|
||||
px_lr_tileset_exterior_leoricsjail_small = 409803,
|
||||
px_lr_tileset_exterior_leoricsjail_large = 409804,
|
||||
px_lr_tileset_exterior_tristramfieldsdrlg = 414834,
|
||||
px_lr_tileset_exterior_tristramfieldsdrlg_small = 414848,
|
||||
px_lr_tileset_exterior_tristramfieldsdrlg_large = 414849,
|
||||
px_lr_tileset_exterior_festeringwoodsdrlg_large = 414971,
|
||||
px_lr_tileset_exterior_desert = 415309,
|
||||
px_lr_tileset_exterior_desert_large = 415310,
|
||||
px_lr_tileset_exterior_desert_small = 415311,
|
||||
px_lr_tileset_exterior_festeringwoodsdrlg = 415352,
|
||||
px_lr_tileset_exterior_festeringwoodsdrlg_small = 415354,
|
||||
x1_p4_forest_coast_cellar_01 = 424373,
|
||||
x1_p4_forest_coast_cellar_02 = 424521,
|
||||
x1_p4_forest_coast_cellar_03 = 424525,
|
||||
x1_p4_forest_coast_cellar_04 = 424528,
|
||||
a3dun_ruins_frost_city_a_01 = 428493,
|
||||
x1_lr_tileset_monster_prototypes = 429679,
|
||||
a3dun_ruins_frost_city_a_02 = 430335,
|
||||
x1_p4_forest_coast_cave_level02 = 432436,
|
||||
x1_p4_forest_coast_cave_level01 = 432535,
|
||||
px_lr_tileset_exterior_battlefieldsdrlg = 432563,
|
||||
px_lr_tileset_exterior_battlefieldsdrlg_large = 432689,
|
||||
px_lr_tileset_exterior_battlefieldsdrlg_small = 432696,
|
||||
x1_westm_cesspools_randoma_level01 = 432697,
|
||||
x1_westm_cesspools_randoma_level02 = 432698,
|
||||
a2dun_aqd_special_a_level01 = 432993,
|
||||
a2dun_aqd_special_b_level01 = 432997,
|
||||
a2dun_aqd_special_a_level02 = 432998,
|
||||
a2dun_aqd_special_b_level02 = 433001,
|
||||
x1_p4_forest_ancient_city_crypt_03b = 433755,
|
||||
p2_totallynotacowlevel = 434649,
|
||||
a3dun_event_ruins_frost_kkg_dungeon = 436291,
|
||||
p4_ruins_frost_events = 436306,
|
||||
p4_lr_tileset_ruins_frost = 436403,
|
||||
p3_benchmark_challenge = 436494,
|
||||
x1_p4_forest_coast_tower_mid_lvl = 441322,
|
||||
x1_p4_forest_coast_tower_top = 441386,
|
||||
x1_p4_forest_coast_tower_mid_lvl_b = 441412,
|
||||
x1_p4_forest_coast_tower_top_winter = 442666,
|
||||
p4_lr_tileset_ruins_frost_small = 442934,
|
||||
p4_lr_tileset_ruins_frost_large = 442938,
|
||||
p4_lr_tileset_exterior_forest = 442959,
|
||||
x1_p4_leoric_estate = 443346,
|
||||
p4_lr_tileset_exterior_forest_large = 443550,
|
||||
p4_lr_tileset_exterior_forest_small = 443551,
|
||||
p4_bounty_grounds_keep = 443678,
|
||||
p4_bounty_grounds_swr = 443686,
|
||||
p4_bounty_grounds_zolt = 443705,
|
||||
p4_bounty_grounds_crypt = 443720,
|
||||
p4_bounty_grounds_leorics_garden = 443756,
|
||||
p4_setdung_wiz_opus = 443772,
|
||||
p4_bounty_grounds_neph = 443801,
|
||||
p4_lr_tileset_exterior_forest_snow = 443834,
|
||||
p4_lr_tileset_exterior_forest_snow_small = 443894,
|
||||
p4_lr_tileset_exterior_forest_snow_large = 443895,
|
||||
p4_lr_tileset_forest_coast_cave = 443996,
|
||||
p4_lr_tileset_forest_coast_cave_large = 443999,
|
||||
p4_lr_tileset_forest_coast_cave_small = 444000,
|
||||
p4_forest_snow_01 = 444305,
|
||||
p4_setdung_wiz_firebird = 444482,
|
||||
p4_setdung_wiz_rasha = 444485,
|
||||
p4_setdung_cru_akkhan = 444616,
|
||||
p4_setdung_cru_roland = 444704,
|
||||
p4_setdung_barb_kings = 444755,
|
||||
p4_setdung_barb_wastes = 444818,
|
||||
p4_setdung_barb_raekor = 444860,
|
||||
p4_setdung_barb_might = 444908,
|
||||
p4_setdung_wiz_vyr = 444953,
|
||||
p4_setdung_dh_mar = 444977,
|
||||
p4_setdung_dh_nat = 444999,
|
||||
p4_setdung_dh_ess = 445019,
|
||||
p4_setdung_dh_shadow = 445038,
|
||||
p4_setdung_wd_tooth = 445065,
|
||||
p4_setdung_wd_haunt = 445084,
|
||||
p4_setdung_wd_spider = 445108,
|
||||
p4_setdung_wd_jade = 445141,
|
||||
p4_setdung_monk_innas = 445160,
|
||||
p4_setdung_monk_sunwuko = 445177,
|
||||
p4_setdung_monk_uliana = 445194,
|
||||
p4_setdung_monk_storms = 445211,
|
||||
p4_setdung_cru_thorns = 445235,
|
||||
p4_setdung_cru_seeker = 445259,
|
||||
p4_forest_snow_icecave_01 = 445736,
|
||||
p4_forest_snow_cellar_a = 445896,
|
||||
p4_a5_bounty_grounds_zolt = 448366,
|
||||
p4_a5_bounty_grounds_swr = 448373,
|
||||
p4_a5_bounty_grounds_neph = 448381,
|
||||
p4_a5_bounty_grounds_leorics_garden = 448396,
|
||||
p4_a5_bounty_grounds_keep = 448402,
|
||||
p4_a5_bounty_grounds_crypt = 448409,
|
||||
p43_ad_cathedral_level_01 = 452721,
|
||||
p43_ad_cathedral_level_02 = 452922,
|
||||
p43_ad_cathedral_level_03 = 452984,
|
||||
p43_ad_cathedral_level_04 = 452985,
|
||||
p43_ad_catacombs_level_05 = 452991,
|
||||
p43_ad_catacombs_level_06 = 452996,
|
||||
p43_ad_catacombs_level_07 = 452997,
|
||||
p43_ad_catacombs_level_08 = 452998,
|
||||
p43_ad_caves_level_09 = 452999,
|
||||
p43_ad_caves_level_12 = 453002,
|
||||
p43_ad_caves_level_11 = 453003,
|
||||
p43_ad_caves_level_10 = 453004,
|
||||
p43_ad_hell_level_13 = 453008,
|
||||
p43_ad_hell_level_14 = 453014,
|
||||
p43_ad_hell_level_15 = 453015,
|
||||
p43_ad_hell_level_16 = 453016,
|
||||
p43_lr_tileset_interiorgrift_forest_snow = 453210,
|
||||
p43_lr_tileset_interiorgrift_desert = 453211,
|
||||
p43_lr_tileset_interiorgrift_pandext = 453212,
|
||||
p43_lr_tileset_interiorgrift_festeringwoodsdrlg = 453213,
|
||||
p43_lr_tileset_interiorgrift_forest_coast = 453214,
|
||||
p43_ad_level02_sidedungeon_darkpassage = 453440,
|
||||
p43_ad_level03_sidedungeon_leoricstomb = 453446,
|
||||
p43_ad_level06_sidedungeon_chamberofbone = 453582,
|
||||
p43_ad_level15_sidedungeon_unholyaltar = 454208,
|
||||
p43_ad_oldtristram = 455282,
|
||||
lost_souls_prototype_v2 = 456029,
|
||||
p6_church_level_01 = 456634,
|
||||
lost_souls_prototype_v3 = 457461,
|
||||
p43_ad_abandonedfarmstead = 458255,
|
||||
px_lr_tileset_exterior_moors_small = 458829,
|
||||
lost_souls_prototype_v4 = 458965,
|
||||
weekly_challenge_hub = 459976,
|
||||
p6_moor_01 = 460372,
|
||||
lost_souls_prototype_v5 = 460587,
|
||||
px_lr_tileset_church_small = 462861,
|
||||
px_lr_tileset_church = 462957,
|
||||
px_lr_tileset_exterior_moors = 462958,
|
||||
p6_church_level_02 = 464096,
|
||||
p6_cave_moors_to_church_01 = 464829,
|
||||
p6_lr_tileset_interiorgrift_moors = 465376,
|
||||
p6_moors_cave_well_01 = 465884,
|
||||
p6_setdung_necro_blood = 468085,
|
||||
p6_setdung_necro_bone = 468086,
|
||||
p6_setdung_necro_saint = 468094,
|
||||
p6_setdung_necro_plague = 468095,
|
||||
p6_church_level_02_boss = 470238,
|
||||
mb313_pand = 478413,
|
||||
mb313_church = 478433,
|
||||
mb313_moors = 478434,
|
||||
mb313_cave = 478435,
|
||||
mb313_firerealm = 478437,
|
||||
mb313_cage = 478438,
|
||||
mb313_town = 478439,
|
||||
p1_tgoblin_realm_ancient = 483057,
|
||||
p1_tgoblin_realm_bossroom_ancient = 483086,
|
||||
p73_swarmrift_bounty_grounds_caout = 486820,
|
||||
p73_swarmrift_a5_bounty_grounds_neph = 486821,
|
||||
p73_swarmrift_a5_bounty_grounds_leorics_garden = 486822,
|
||||
p73_swarmrift_a4dun_heaven_1000_monsters_fight = 486823,
|
||||
p73_swarmrift_trialrift_tileset = 486828,
|
||||
p43_lr_tileset_interiorgrift_desert_gg = 486855,
|
||||
p43_lr_tileset_interiorgrift_festeringwoodsdrlg_gg = 486856,
|
||||
p43_lr_tileset_interiorgrift_pandext_gg = 486857,
|
||||
p6_lr_tileset_interiorgrift_moors_gg = 486858,
|
||||
px_lr_tileset_exterior_tristramfieldsdrlg_small_gg = 486859,
|
||||
x1_lr_tileset_exterior_boneyards_gg = 486860,
|
||||
x1_lr_tileset_exterior_graveyard_small_gg = 486861,
|
||||
px_lr_tileset_exterior_tristramfieldsdrlg_small_gr = 487126,
|
||||
x1_lr_tileset_exterior_graveyard_small_gr = 487223,
|
||||
}
|
||||
|
||||
static class WorldSnoExtensions
|
||||
{
|
||||
// all `x1_lr_tileset` worlds
|
||||
private static readonly WorldSno[] dungeonWorlds = new WorldSno[]
|
||||
{
|
||||
WorldSno.x1_lr_tileset_cath,
|
||||
WorldSno.x1_lr_tileset_corruptspire,
|
||||
WorldSno.x1_lr_tileset_leorics,
|
||||
WorldSno.x1_lr_tileset_rootcave,
|
||||
WorldSno.x1_lr_tileset_wormcaves,
|
||||
WorldSno.x1_lr_tileset_zoltarchives,
|
||||
WorldSno.x1_lr_tileset_crypt,
|
||||
WorldSno.x1_lr_tileset_floodedcave,
|
||||
WorldSno.x1_lr_tileset_icecave,
|
||||
WorldSno.x1_lr_tileset_zoltruins,
|
||||
WorldSno.x1_lr_tileset_sewers,
|
||||
WorldSno.x1_lr_tileset_keep_war,
|
||||
WorldSno.x1_lr_tileset_keep_forge,
|
||||
WorldSno.x1_lr_tileset_keep_river,
|
||||
WorldSno.x1_lr_tileset_aqueducts,
|
||||
WorldSno.x1_lr_tileset_spidercaves,
|
||||
WorldSno.x1_lr_tileset_crater,
|
||||
WorldSno.x1_lr_tileset_cath_large,
|
||||
WorldSno.x1_lr_tileset_cath_small,
|
||||
WorldSno.x1_lr_tileset_leorics_small,
|
||||
WorldSno.x1_lr_tileset_crypt_small,
|
||||
WorldSno.x1_lr_tileset_zoltarchives_small,
|
||||
WorldSno.x1_lr_tileset_cath_extralarge,
|
||||
WorldSno.x1_lr_tileset_exterior_tristramfields,
|
||||
WorldSno.x1_lr_tileset_westmarch,
|
||||
WorldSno.x1_lr_tileset_abattoir,
|
||||
WorldSno.x1_lr_tileset_bogcave,
|
||||
WorldSno.x1_lr_tileset_fortress,
|
||||
WorldSno.x1_lr_tileset_catacombs,
|
||||
WorldSno.x1_lr_tileset_hexmaze,
|
||||
WorldSno.x1_lr_tileset_exterior_bog,
|
||||
WorldSno.x1_lr_tileset_aqueducts_small,
|
||||
WorldSno.x1_lr_tileset_aqueducts_large,
|
||||
WorldSno.x1_lr_tileset_corruptspire_large,
|
||||
WorldSno.x1_lr_tileset_crypt_large,
|
||||
WorldSno.x1_lr_tileset_crater_small,
|
||||
WorldSno.x1_lr_tileset_floodedcave_large,
|
||||
WorldSno.x1_lr_tileset_icecave_large,
|
||||
WorldSno.x1_lr_tileset_keep_forge_large,
|
||||
WorldSno.x1_lr_tileset_keep_river_large,
|
||||
WorldSno.x1_lr_tileset_keep_war_large,
|
||||
WorldSno.x1_lr_tileset_leorics_large,
|
||||
WorldSno.x1_lr_tileset_rootcave_large,
|
||||
WorldSno.x1_lr_tileset_sewers_large,
|
||||
WorldSno.x1_lr_tileset_spidercaves_large,
|
||||
WorldSno.x1_lr_tileset_wormcaves_large,
|
||||
WorldSno.x1_lr_tileset_zoltarchives_large,
|
||||
WorldSno.x1_lr_tileset_zoltruins_large,
|
||||
WorldSno.x1_lr_tileset_corruptspire_small,
|
||||
WorldSno.x1_lr_tileset_floodedcave_small,
|
||||
WorldSno.x1_lr_tileset_icecave_small,
|
||||
WorldSno.x1_lr_tileset_keep_forge_small,
|
||||
WorldSno.x1_lr_tileset_keep_river_small,
|
||||
WorldSno.x1_lr_tileset_keep_war_small,
|
||||
WorldSno.x1_lr_tileset_rootcave_small,
|
||||
WorldSno.x1_lr_tileset_sewers_small,
|
||||
WorldSno.x1_lr_tileset_spidercaves_small,
|
||||
WorldSno.x1_lr_tileset_wormcaves_small,
|
||||
WorldSno.x1_lr_tileset_zoltruins_small,
|
||||
WorldSno.x1_lr_tileset_pony,
|
||||
WorldSno.x1_lr_tileset_pony_large,
|
||||
WorldSno.x1_lr_tileset_pony_small,
|
||||
WorldSno.x1_lr_tileset_exterior_wilderness,
|
||||
WorldSno.x1_lr_tileset_exterior_highlands,
|
||||
WorldSno.x1_lr_tileset_exterior_gardensofhope1,
|
||||
WorldSno.x1_lr_tileset_exterior_gardensofhope2,
|
||||
WorldSno.x1_lr_tileset_exterior_gardensofhope3,
|
||||
WorldSno.x1_lr_tileset_exterior_graveyard,
|
||||
WorldSno.x1_lr_tileset_exterior_pandext,
|
||||
WorldSno.x1_lr_tileset_breakup_wortham,
|
||||
WorldSno.x1_lr_tileset_exterior_boneyards,
|
||||
WorldSno.x1_lr_tileset_cratertowers1_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers2_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers3_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers4_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers5_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers6_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers7_small,
|
||||
WorldSno.x1_lr_tileset_exterior_ramparts1,
|
||||
WorldSno.x1_lr_tileset_exterior_ramparts2,
|
||||
WorldSno.x1_lr_tileset_exterior_ramparts3,
|
||||
WorldSno.x1_lr_tileset_exterior_rampartsdamaged1,
|
||||
WorldSno.x1_lr_tileset_exterior_rampartsdamaged2,
|
||||
WorldSno.x1_lr_tileset_exterior_rampartsdamaged3,
|
||||
WorldSno.x1_lr_tileset_hexmaze_large,
|
||||
WorldSno.x1_lr_tileset_hexmaze_small,
|
||||
WorldSno.x1_lr_tileset_catacombs_large,
|
||||
WorldSno.x1_lr_tileset_catacombs_small,
|
||||
WorldSno.x1_lr_tileset_bogcave_large,
|
||||
WorldSno.x1_lr_tileset_bogcave_small,
|
||||
WorldSno.x1_lr_tileset_fortress_small,
|
||||
WorldSno.x1_lr_tileset_fortress_large,
|
||||
WorldSno.x1_lr_tileset_abattoir_large,
|
||||
WorldSno.x1_lr_tileset_abattoir_small,
|
||||
WorldSno.x1_lr_tileset_westmarch_small,
|
||||
WorldSno.x1_lr_tileset_westmarch_large,
|
||||
WorldSno.x1_lr_tileset_westmarchfire,
|
||||
WorldSno.x1_lr_tileset_westmarchfire_small,
|
||||
WorldSno.x1_lr_tileset_westmarchfire_large,
|
||||
WorldSno.x1_lr_tileset_fortressislands,
|
||||
WorldSno.x1_lr_tileset_fortressislands_small,
|
||||
WorldSno.x1_lr_tileset_hellportala_small,
|
||||
WorldSno.x1_lr_tileset_hellportalb_small,
|
||||
WorldSno.x1_lr_tileset_exterior_graveyard_small,
|
||||
WorldSno.x1_lr_tileset_exterior_bog_small,
|
||||
WorldSno.x1_lr_tileset_exterior_pandext_small,
|
||||
WorldSno.x1_lr_tileset_exterior_pandext_large,
|
||||
WorldSno.x1_lr_tileset_exterior_graveyard_large,
|
||||
WorldSno.x1_lr_tileset_exterior_bog_large,
|
||||
WorldSno.x1_lr_tileset_exterior_boneyards_large,
|
||||
WorldSno.x1_lr_tileset_event_crypt_udderchaos,
|
||||
WorldSno.x1_lr_tileset_crypt_small_udderchaos,
|
||||
WorldSno.x1_lr_tileset_monster_prototypes,
|
||||
WorldSno.x1_lr_tileset_exterior_boneyards_gg,
|
||||
WorldSno.x1_lr_tileset_exterior_graveyard_small_gg,
|
||||
WorldSno.x1_lr_tileset_exterior_graveyard_small_gr,
|
||||
};
|
||||
|
||||
|
||||
// `x1_lr` worlds `dungeonWorlds`
|
||||
private static readonly WorldSno[] generatedNotDungeonsWorlds = new WorldSno[]
|
||||
{
|
||||
WorldSno.x1_lr_hubworld,
|
||||
WorldSno.x1_lr_level_01,
|
||||
WorldSno.x1_lr_level_02,
|
||||
WorldSno.x1_lr_level_03,
|
||||
WorldSno.x1_lr_level_04,
|
||||
WorldSno.x1_lr_level_05,
|
||||
WorldSno.x1_lr_level_06,
|
||||
WorldSno.x1_lr_level_07,
|
||||
WorldSno.x1_lr_level_08,
|
||||
WorldSno.x1_lr_level_09,
|
||||
WorldSno.x1_lr_level_10,
|
||||
};
|
||||
|
||||
// `zolt` worlds
|
||||
private static readonly WorldSno[] zoltWorlds = new WorldSno[]
|
||||
{
|
||||
WorldSno.a2c2dun_zolt_treasurehunter,
|
||||
WorldSno.a2dun_zolt_sw_random01,
|
||||
WorldSno.a2dun_zolt_timed01_level01,
|
||||
WorldSno.a2dun_zolt_level01,
|
||||
WorldSno.a2dun_zolt_level02,
|
||||
WorldSno.a2dun_zolt_level03,
|
||||
WorldSno.a2dun_zolt_lobby,
|
||||
WorldSno.a2dun_zolt_bossfight_level04,
|
||||
WorldSno.a2dun_zolt_head_random01,
|
||||
WorldSno.a2dun_zolt_shadowrealm_level01,
|
||||
WorldSno.a2dun_zolt_blood02,
|
||||
WorldSno.a2dun_zolt_timed01_level02,
|
||||
WorldSno.a2dun_zolt_random_portalroulette_02,
|
||||
WorldSno.a2dun_zolt_sw_random01_level02,
|
||||
WorldSno.x1_lr_tileset_zoltarchives,
|
||||
WorldSno.x1_lr_tileset_zoltruins,
|
||||
WorldSno.x1_lr_tileset_zoltarchives_small,
|
||||
WorldSno.x1_lr_tileset_zoltarchives_large,
|
||||
WorldSno.x1_lr_tileset_zoltruins_large,
|
||||
WorldSno.x1_lr_tileset_zoltruins_small,
|
||||
WorldSno.p4_bounty_grounds_zolt,
|
||||
WorldSno.p4_a5_bounty_grounds_zolt,
|
||||
WorldSno.pvp_zolt_ruins_arena,
|
||||
WorldSno.pvp_zolt_small_arena,
|
||||
};
|
||||
|
||||
// `uber` worlds
|
||||
private static readonly WorldSno[] uberWorlds = new WorldSno[]
|
||||
{
|
||||
WorldSno.uber_bossworld1,
|
||||
WorldSno.uber_bossworld2,
|
||||
WorldSno.uber_bossworld3,
|
||||
WorldSno.uber_portalworld,
|
||||
WorldSno.a4dun_uber_diablo_shadowrealm_01,
|
||||
};
|
||||
|
||||
// excluded from generation worlds
|
||||
private static readonly WorldSno[] notDynamicWorlds = new WorldSno[] {
|
||||
WorldSno.a1trdun_cave_old_ruins_random01,
|
||||
WorldSno.a1trdun_cave_qa_well,
|
||||
WorldSno.a1trdun_level05_templar,
|
||||
WorldSno.a2dun_zolt_head_random01,
|
||||
WorldSno.a2c1dun_swr_caldeum_01,
|
||||
WorldSno.a2dun_cave_bloodvial_02,
|
||||
WorldSno.a3dun_ruins_frost_city_a_02,
|
||||
WorldSno.a3dun_crater_level_01,
|
||||
WorldSno.a3dun_crater_level_02,
|
||||
WorldSno.a3dun_crater_st_level01b,
|
||||
WorldSno.a3dun_crater_st_level02b,
|
||||
WorldSno.a3dun_crater_st_level04,
|
||||
WorldSno.a3dun_crater_st_level04b,
|
||||
WorldSno.a3dun_ruins_frost_city_a_01,
|
||||
WorldSno.a4dun_hell_portal_01,
|
||||
WorldSno.a4dun_hell_portal_02,
|
||||
WorldSno.a4dun_garden_of_hope_random,
|
||||
WorldSno.p4_forest_snow_icecave_01,
|
||||
WorldSno.p4_forest_snow_01,
|
||||
WorldSno.a3dun_crater_st_level01,
|
||||
WorldSno.a3dun_crater_st_level02,
|
||||
WorldSno.trdun_leoric_level02,
|
||||
WorldSno.trdun_leoric_level03,
|
||||
// all `Crater` worlds
|
||||
WorldSno.a3dun_crater_st_level01,
|
||||
WorldSno.a3dun_crater_st_level02,
|
||||
WorldSno.a3dun_crater_level_01,
|
||||
WorldSno.a3dun_crater_level_02,
|
||||
WorldSno.a3dun_crater_st_level04,
|
||||
WorldSno.a3dun_crater_level_03,
|
||||
WorldSno.a3dun_crater_st_level01b,
|
||||
WorldSno.a3dun_crater_st_level04b,
|
||||
WorldSno.a3dun_crater_st_level02b,
|
||||
WorldSno.pvp_craterst_arena,
|
||||
WorldSno.x1_lr_tileset_crater,
|
||||
WorldSno.x1_lr_tileset_crater_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers1_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers2_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers3_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers4_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers5_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers6_small,
|
||||
WorldSno.x1_lr_tileset_cratertowers7_small,
|
||||
// all `Hell_Portal` worlds
|
||||
WorldSno.a4dun_hell_portal_01,
|
||||
WorldSno.a4dun_hell_portal_02,
|
||||
};
|
||||
|
||||
public static bool IsDungeon(this WorldSno worldSno)
|
||||
{
|
||||
return dungeonWorlds.Contains(worldSno);
|
||||
}
|
||||
|
||||
public static bool IsGenerated(this WorldSno worldSno)
|
||||
{
|
||||
return worldSno.IsDungeon() || generatedNotDungeonsWorlds.Contains(worldSno);
|
||||
}
|
||||
|
||||
public static bool IsUberWorld(this WorldSno worldSno)
|
||||
{
|
||||
return uberWorlds.Contains(worldSno);
|
||||
}
|
||||
|
||||
public static bool IsUsingZoltCustomGrid(this WorldSno worldSno)
|
||||
{
|
||||
return zoltWorlds.Contains(worldSno);
|
||||
}
|
||||
|
||||
public static bool IsNotDynamicWorld(this WorldSno worldSno)
|
||||
{
|
||||
return notDynamicWorlds.Contains(worldSno);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||
//Blizzless Project 2022
|
||||
@ -128,11 +129,12 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
|
||||
if (_powerDelay.TimedOut)
|
||||
{
|
||||
List<Actor> targets = (this.Body as Minion).Master.GetObjectsInRange<Monster>(40f).Where(m => !m.Dead &&
|
||||
m.Visible &&
|
||||
!m.ActorSNO.Name.ToLower().Contains("spawner") &&
|
||||
!m.ActorSNO.Name.ToLower().Contains("_vo") &&
|
||||
!m.ActorSNO.Name.ToLower().Contains("voiceo")).OrderBy(m => PowerMath.Distance2D(m.Position, this.Body.Position)).Cast<Actor>().ToList();
|
||||
List<Actor> targets = (this.Body as Minion).Master
|
||||
.GetObjectsInRange<Monster>(40f)
|
||||
.Where(m => !m.Dead && m.Visible && m.SNO.IsTargetable())
|
||||
.OrderBy(m => PowerMath.Distance2D(m.Position, this.Body.Position))
|
||||
.Cast<Actor>()
|
||||
.ToList();
|
||||
if (this.Body.World.Game.PvP)
|
||||
targets = (this.Body as Minion).Master.GetObjectsInRange<Player>(30f).Where(p => p.GlobalID != (this.Body as Minion).Master.GlobalID && p.Attributes[GameAttribute.TeamID] != (this.Body as Minion).Master.Attributes[GameAttribute.TeamID]).Cast<Actor>().ToList();
|
||||
if (this.Body.World.IsPvP)
|
||||
@ -211,7 +213,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
{
|
||||
if (!_warnedNoPowers && this.PresetPowers.Count == 0)
|
||||
{
|
||||
Logger.Debug("Minion \"{0}\" has no usable powers. ", this.Body.ActorSNO.Name);
|
||||
Logger.Debug("Minion \"{0}\" has no usable powers. ", this.Body.Name);
|
||||
_warnedNoPowers = true;
|
||||
}
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -85,9 +86,9 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
|
||||
public override void Think(int tickCounter)
|
||||
{
|
||||
if (this.Body.ActorSNO.Id == 255623 ||
|
||||
this.Body.ActorSNO.Id == 210120 ||
|
||||
this.Body.ActorSNO.Id == 208561)
|
||||
if (this.Body.SNO == ActorSno._uber_siegebreakerdemon ||
|
||||
this.Body.SNO == ActorSno._a4dun_garden_corruption_monster ||
|
||||
this.Body.SNO == ActorSno._a4dun_garden_hellportal_pillar)
|
||||
return;
|
||||
//if(AttackedBy != null && TimeoutAttacked == null)
|
||||
// TimeoutAttacked = new SecondsTickTimer(this.Body.World.Game, 3.0f);
|
||||
@ -97,8 +98,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
// TimeoutAttacked = null;
|
||||
// AttackedBy = null;
|
||||
// }
|
||||
if (this.Body.ActorSNO.Id == 114527 //BelialVoiceover
|
||||
)
|
||||
if (this.Body.SNO == ActorSno._belialvoiceover) //BelialVoiceover
|
||||
return;
|
||||
if (this.Body.Hidden == true)
|
||||
return;
|
||||
@ -128,8 +128,8 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
this.Body.Attributes[GameAttribute.Blind] ||
|
||||
this.Body.Attributes[GameAttribute.Webbed] ||
|
||||
this.Body.Disable ||
|
||||
this.Body.World.BuffManager.GetFirstBuff<PowerSystem.Implementations.KnockbackBuff>(this.Body) != null ||
|
||||
this.Body.World.BuffManager.GetFirstBuff<PowerSystem.Implementations.SummonedBuff>(this.Body) != null)
|
||||
this.Body.World.BuffManager.GetFirstBuff<KnockbackBuff>(this.Body) != null ||
|
||||
this.Body.World.BuffManager.GetFirstBuff<SummonedBuff>(this.Body) != null)
|
||||
{
|
||||
if (this.CurrentAction != null)
|
||||
{
|
||||
@ -195,9 +195,9 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
.ToList();
|
||||
else
|
||||
targets = this.Body.GetActorsInRange(50f)
|
||||
.Where(p => ((p is Player) && !p.Dead && p.Attributes[GameAttribute.Loading] == false && p.Attributes[GameAttribute.Is_Helper] == false && p.World.BuffManager.GetFirstBuff<PowerSystem.Implementations.ActorGhostedBuff>(p) == null)
|
||||
.Where(p => ((p is Player) && !p.Dead && p.Attributes[GameAttribute.Loading] == false && p.Attributes[GameAttribute.Is_Helper] == false && p.World.BuffManager.GetFirstBuff<ActorGhostedBuff>(p) == null)
|
||||
|| ((p is Minion) && !p.Dead && p.Attributes[GameAttribute.Is_Helper] == false)
|
||||
|| (p is DesctructibleLootContainer && (p.ActorSNO.Name.ToLower().Contains("door") || p.ActorSNO.Name.ToLower().Contains("barricade")))
|
||||
|| (p is DesctructibleLootContainer && p.SNO.IsDoorOrBarricade())
|
||||
|| ((p is Hireling) && !p.Dead)
|
||||
)
|
||||
.OrderBy((actor) => PowerMath.Distance2D(actor.Position, this.Body.Position))
|
||||
@ -241,7 +241,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
}
|
||||
else if (this.Body.WalkSpeed != 0)
|
||||
{
|
||||
if (this.Body.ActorSNO.Name.ToLower().Contains("woodwraith") || this.Body.ActorSNO.Name.ToLower().Contains("wasp"))
|
||||
if (this.Body.SNO.IsWoodwraithOrWasp())
|
||||
{
|
||||
Logger.Trace("MoveToPointAction to target");
|
||||
this.CurrentAction = new MoveToPointAction(
|
||||
@ -268,9 +268,9 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (this.Body.ActorSNO.Id)
|
||||
switch (this.Body.SNO)
|
||||
{
|
||||
case 89579:
|
||||
case ActorSno._a1dun_leor_firewall2:
|
||||
powerToUse = 223284;
|
||||
break;
|
||||
}
|
||||
@ -309,7 +309,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
targets = this.Body.GetActorsInRange(50f)
|
||||
.Where(p => ((p is LorathNahr_NPC) && !p.Dead)
|
||||
|| ((p is CaptainRumford) && !p.Dead)
|
||||
|| (p is DesctructibleLootContainer && (p.ActorSNO.Name.ToLower().Contains("door") || p.ActorSNO.Name.ToLower().Contains("barricade")))
|
||||
|| (p is DesctructibleLootContainer && p.SNO.IsDoorOrBarricade())
|
||||
|| ((p is Cain) && !p.Dead))
|
||||
.OrderBy((actor) => PowerMath.Distance2D(actor.Position, this.Body.Position))
|
||||
.Cast<Actor>()
|
||||
@ -340,7 +340,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
_target = targets.First();
|
||||
}
|
||||
foreach (var tar in targets)
|
||||
if (tar is DesctructibleLootContainer && (tar.ActorSNO.Name.ToLower().Contains("door") || tar.ActorSNO.Name.ToLower().Contains("barricade")) && tar.ActorSNO.Id != 81699)
|
||||
if (tar is DesctructibleLootContainer && tar.SNO.IsDoorOrBarricade() && tar.SNO != ActorSno._trout_wagon_barricade)
|
||||
{ _target = tar; break; }
|
||||
}
|
||||
else
|
||||
@ -386,7 +386,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
}
|
||||
else if (this.Body.WalkSpeed != 0)
|
||||
{
|
||||
if (this.Body.ActorSNO.Name.ToLower().Contains("woodwraith") || this.Body.ActorSNO.Name.ToLower().Contains("wasp"))
|
||||
if (this.Body.SNO.IsWoodwraithOrWasp())
|
||||
{
|
||||
Logger.Trace("MoveToPointAction to target");
|
||||
this.CurrentAction = new MoveToPointAction(
|
||||
@ -466,8 +466,7 @@ namespace DiIiS_NA.GameServer.GSSystem.AISystem.Brains
|
||||
{
|
||||
if (!_warnedNoPowers && this.PresetPowers.Count == 0)
|
||||
{
|
||||
Logger.Info("Monster \"{0}\" has no usable powers. {1} are defined in mpq data.",
|
||||
this.Body.ActorSNO.Name, _mpqPowerCount);
|
||||
Logger.Info("Monster \"{0}\" has no usable powers. {1} are defined in mpq data.", this.Body.Name, _mpqPowerCount);
|
||||
_warnedNoPowers = true;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||
//Blizzless Project 2022
|
||||
@ -61,6 +62,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// ActorSNO.
|
||||
/// </summary>
|
||||
public SNOHandle ActorSNO { get; private set; }
|
||||
|
||||
public ActorSno SNO
|
||||
{
|
||||
get { return (ActorSno)ActorSNO.Id; }
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return ActorSNO.Name; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the sno of the actor used to identify the actor to the player
|
||||
@ -68,7 +79,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// There are few exceptions though like the Inn_Zombies that have both.
|
||||
/// Used by ACDEnterKnown to name the actor.
|
||||
/// </summary>
|
||||
public int NameSNOId { get; set; }
|
||||
public ActorSno NameSNO { get; set; }
|
||||
|
||||
public bool Disable = false;
|
||||
|
||||
@ -190,7 +201,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
get
|
||||
{
|
||||
return (DiIiS_NA.Core.MPQ.FileFormats.Actor)DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.Actor][this.ActorSNO.Id].Data;
|
||||
return (DiIiS_NA.Core.MPQ.FileFormats.Actor)DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.Actor][(int)this.SNO].Data;
|
||||
}
|
||||
}
|
||||
|
||||
@ -235,9 +246,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// Creates a new actor.
|
||||
/// </summary>
|
||||
/// <param name="world">The world that initially belongs to.</param>
|
||||
/// <param name="snoId">SNOId of the actor.</param>
|
||||
/// <param name="sno">SNOId of the actor.</param>
|
||||
/// <param name="tags">TagMapEntry dictionary read for the actor from MPQ's..</param>
|
||||
protected Actor(World world, int snoId, TagMap tags, bool isMarker = false)
|
||||
protected Actor(World world, ActorSno sno, TagMap tags, bool isMarker = false)
|
||||
: base(world, world.IsPvP ? World.NewActorPvPID : world.Game.NewActorGameID)
|
||||
{
|
||||
this.Tags = tags;
|
||||
@ -254,8 +265,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
// if (this.ActorData.AnimSetSNO != -1)
|
||||
// this.AnimationSet = (Mooege.Common.MPQ.FileFormats.AnimSet)Mooege.Common.MPQ.MPQStorage.Data.Assets[SNOGroup.AnimSet][this.ActorData.AnimSetSNO].Data;
|
||||
|
||||
this.ActorSNO = new SNOHandle(SNOGroup.Actor, snoId);
|
||||
this.NameSNOId = snoId;
|
||||
this.ActorSNO = new SNOHandle(SNOGroup.Actor, (int)sno);
|
||||
this.NameSNO = sno;
|
||||
//Logger.Info("Loaded actor {0}, id {1}, type {2}", this.ActorSNO.Name, this.DynamicID, this.ActorData.Type);
|
||||
this.Quality = 0;
|
||||
this.HasLoot = true;
|
||||
@ -282,9 +293,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// Creates a new actor.
|
||||
/// </summary>
|
||||
/// <param name="world">The world that initially belongs to.</param>
|
||||
/// <param name="snoId">SNOId of the actor.</param>
|
||||
protected Actor(World world, int snoId)
|
||||
: this(world, snoId, null)
|
||||
/// <param name="sno">SNOId of the actor.</param>
|
||||
protected Actor(World world, ActorSno sno)
|
||||
: this(world, sno, null)
|
||||
{ }
|
||||
|
||||
protected virtual void quest_OnQuestProgress() // erekose changed from protected to public
|
||||
@ -305,7 +316,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
/// </summary>
|
||||
public override void Destroy()
|
||||
{
|
||||
if (this.ActorSNO.Id == 454066)
|
||||
if (this.SNO == ActorSno._p6_necro_corpse_flesh)
|
||||
if (World != null)
|
||||
foreach (var plr in World.Game.Players.Values)
|
||||
if (plr.SkillSet.HasPassive(208594) && DiIiS_NA.Core.Helpers.Math.RandomHelper.Next(0,100) > 45)
|
||||
@ -327,15 +338,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
public virtual void EnterWorld(Vector3D position)
|
||||
{
|
||||
var Quest = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[Core.Types.SNO.SNOGroup.Quest][74128];
|
||||
var Quest = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.Quest][74128];
|
||||
|
||||
if (this.World != null)
|
||||
if (this.World.GetActorsBySNO(this.ActorSNO.Id).Count > 0)
|
||||
{
|
||||
int count = this.World.GetActorsBySNO(this.ActorSNO.Id).Count;
|
||||
{
|
||||
int count = this.World.GetActorsBySNO(this.SNO).Count;
|
||||
if (count > 0)
|
||||
NumberInWorld = count;
|
||||
}
|
||||
if (this.Spawned)
|
||||
}
|
||||
|
||||
if (this.Spawned)
|
||||
return;
|
||||
|
||||
this.Position = position;
|
||||
@ -422,7 +434,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
(minion as Minion).Brain.DeActivate();
|
||||
(this as Player).Followers.Remove(fol);
|
||||
minion.ChangeWorld(world, position);
|
||||
(this as Player).Followers.Add(minion.GlobalID, minion.ActorSNO.Id);
|
||||
(this as Player).Followers.Add(minion.GlobalID, minion.SNO);
|
||||
(minion as Minion).Brain.Activate();
|
||||
}
|
||||
}
|
||||
@ -822,14 +834,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
return new ACDEnterKnownMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
ActorSNOId = this.ActorSNO.Id,
|
||||
ActorSNOId = (int)this.SNO,
|
||||
Flags = this.Field2,
|
||||
LocationType = this.HasWorldLocation ? 0 : 1,
|
||||
WorldLocation = this.HasWorldLocation ? this.WorldLocationMessage() : null,
|
||||
InventoryLocation = this.HasWorldLocation ? null : this.InventoryLocationMessage(plr),
|
||||
GBHandle = this.GBHandle,
|
||||
snoGroup = this.Field7,
|
||||
snoHandle = this.NameSNOId,
|
||||
snoHandle = (int)this.NameSNO,
|
||||
Quality = this.Quality,
|
||||
LookLinkIndex = this.Field10,
|
||||
snoAmbientOcclusionOverrideTex = null,
|
||||
@ -848,42 +860,37 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
lock (player.RevealedObjects)
|
||||
{
|
||||
if (this.Hidden || this.Dead || !this.Visible || this.World == null) return false;
|
||||
|
||||
|
||||
var mysticHiddenWorlds = new WorldSno[] {
|
||||
WorldSno.trdun_crypt_falsepassage_01,
|
||||
WorldSno.trdun_crypt_falsepassage_02,
|
||||
WorldSno.trdun_crypt_fields_flooded_memories_level01,
|
||||
WorldSno.trdun_crypt_fields_flooded_memories_level02,
|
||||
WorldSno.trdun_crypt_skeletonkingcrown_00,
|
||||
WorldSno.trdun_crypt_skeletonkingcrown_01,
|
||||
WorldSno.trdun_crypt_skeletonkingcrown_02,
|
||||
};
|
||||
//Leave Miriam in Crypt
|
||||
if (this.ActorSNO.Id == 175310)
|
||||
if (this.World.WorldSNO.Id == 72636 ||
|
||||
this.World.WorldSNO.Id == 72637 ||
|
||||
this.World.WorldSNO.Id == 102299 ||
|
||||
this.World.WorldSNO.Id == 165797 ||
|
||||
this.World.WorldSNO.Id == 154587 ||
|
||||
this.World.WorldSNO.Id == 60600 ||
|
||||
this.World.WorldSNO.Id == 92126
|
||||
)
|
||||
return false;
|
||||
if (this.SNO == ActorSno._pt_mystic_novendor_nonglobalfollower && mysticHiddenWorlds.Contains(World.SNO)) return false;
|
||||
|
||||
|
||||
//Destroy Bonewall and Jondar if Exit_S on Second Level of Cathedral
|
||||
if (World.WorldSNO.Id == 50582 && this.ActorSNO.Id == 109209) return false;
|
||||
if (World.WorldSNO.Id == 50582 && this.ActorSNO.Id == 86624) return false;
|
||||
if (World.SNO == WorldSno.a1trdun_level04 && (this.SNO == ActorSno._trdun_cath_bonewall_a_door || this.SNO == ActorSno._adventurer_d_templarintrounique)) return false;
|
||||
|
||||
if (this.ActorSNO.Name.Contains("Uber") && !this.World.WorldSNO.Name.Contains("Uber")) return false;
|
||||
if (this.ActorSNO.Name.Contains("AdventureMode") && this.World.Game.CurrentAct != 3000) return false;
|
||||
if (this.ActorSNO.Name.Contains("ScriptedSequenceOnly")) return false;
|
||||
if (this.SNO.IsUberWorldActor() && !this.World.SNO.IsUberWorld()) return false;
|
||||
if (this.SNO.IsAdventureModeActor() && this.World.Game.CurrentAct != 3000) return false;
|
||||
if (this.SNO == ActorSno._x1_adria_boss_scriptedsequenceonly) return false;
|
||||
|
||||
if (player.RevealedObjects.ContainsKey(this.GlobalID)) return false; // already revealed
|
||||
|
||||
if (player.World == null) return false;
|
||||
|
||||
if (this.ActorSNO.Id == 218339)
|
||||
if (this.World.WorldSNO.Id == 71150)
|
||||
if (this.CurrentScene.SceneSNO.Id == 33348)
|
||||
if (this.Position.X < 2896)
|
||||
return false;
|
||||
if (this.SNO == ActorSno._zombieskinny_custom_a && this.World.SNO == WorldSno.trout_town && this.CurrentScene.SceneSNO.Id == 33348 && this.Position.X < 2896) return false;
|
||||
|
||||
|
||||
if (!(this is Item) && player.World.GlobalID != this.World.GlobalID) return false;
|
||||
|
||||
if (!(this is Item) && this.GetScenesInRange().Count() > 0 && !this.GetScenesInRange().OrderBy(scene => PowerMath.Distance2D(scene.Position, this.Position)).First().IsRevealedToPlayer(player)) return false;
|
||||
if (!(this is Item) && this.GetScenesInRange().Count > 0 && !this.GetScenesInRange().OrderBy(scene => PowerMath.Distance2D(scene.Position, this.Position)).First().IsRevealedToPlayer(player)) return false;
|
||||
|
||||
uint objId = player.NewDynamicID(this.GlobalID, (this is Player && (!(this as Player).IsInPvPWorld || this == player)) ? (int)(this as Player).PlayerIndex : -1);
|
||||
|
||||
@ -945,7 +952,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
TrickleMessage Trickle = new TrickleMessage()
|
||||
{
|
||||
ActorId = this.DynamicID(player),
|
||||
ActorSNO = this.ActorSNO.Id,
|
||||
ActorSNO = (int)this.SNO,
|
||||
WorldLocation = new WorldPlace()
|
||||
{
|
||||
WorldID = this.World.GlobalID,
|
||||
@ -973,7 +980,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
#region Особенные случаи
|
||||
//Задаём идл для зомбей в тристраме - ЖРАТ
|
||||
if (this.World.WorldSNO.Id == 71150)
|
||||
if (this.World.SNO == WorldSno.trout_town)
|
||||
{
|
||||
if (this.Tags != null)
|
||||
if (this.Tags.ContainsKey(MarkerKeys.Group1Hash))
|
||||
@ -981,66 +988,66 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
this.PlayActionAnimation(11514);
|
||||
}
|
||||
//Задаём идл для работяг
|
||||
else if (this.World.WorldSNO.Id == 109362 & this.ActorSNO.Id == 84529)
|
||||
else if (this.World.SNO == WorldSno.trout_tristram_inn && this.SNO == ActorSno._omninpc_tristram_male_a)
|
||||
this.PlayActionAnimation(102329);
|
||||
else if (this.ActorSNO.Id == 4580)
|
||||
else if (this.SNO == ActorSno._leah)
|
||||
player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Inventory.VisualInventoryMessage()
|
||||
{
|
||||
ActorID = this.DynamicID(player),
|
||||
EquipmentList = new MessageSystem.Message.Fields.VisualEquipment()
|
||||
EquipmentList = new VisualEquipment()
|
||||
{
|
||||
Equipment = new MessageSystem.Message.Fields.VisualItem[]
|
||||
Equipment = new VisualItem[]
|
||||
{
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = unchecked((int)-2091504072),
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,//0x6C3B0389,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
ItemEffectType = 0,
|
||||
EffectLevel = -1,
|
||||
},
|
||||
new MessageSystem.Message.Fields.VisualItem()
|
||||
new VisualItem()
|
||||
{
|
||||
GbId = -1,
|
||||
DyeType = 0,
|
||||
@ -1328,20 +1335,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
int snoQuestRange = Tags[MarkerKeys.QuestRange].Id;
|
||||
if (DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange].ContainsKey(snoQuestRange))
|
||||
_questRange = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.QuestRange][snoQuestRange].Data as DiIiS_NA.Core.MPQ.FileFormats.QuestRange;
|
||||
else Logger.Debug("Actor {0} GlobalID {1} is tagged with unknown QuestRange {2}", NameSNOId, GlobalID, snoQuestRange);
|
||||
else Logger.Debug("Actor {0} GlobalID {1} is tagged with unknown QuestRange {2}", NameSNO, GlobalID, snoQuestRange);
|
||||
}
|
||||
|
||||
if (Tags.ContainsKey(MarkerKeys.ConversationList) && WorldGenerator.DefaultConversationLists.ContainsKey(this.ActorSNO.Id))
|
||||
if (Tags.ContainsKey(MarkerKeys.ConversationList) && WorldGenerator.DefaultConversationLists.ContainsKey((int)this.SNO))
|
||||
{
|
||||
int snoConversationList = WorldGenerator.DefaultConversationLists[this.ActorSNO.Id];//Tags[MarkerKeys.ConversationList].Id;
|
||||
int snoConversationList = WorldGenerator.DefaultConversationLists[(int)this.SNO];//Tags[MarkerKeys.ConversationList].Id;
|
||||
|
||||
Logger.Trace(" (ReadTags) actor {0} GlobalID {2} has a conversation list {1}", NameSNOId, snoConversationList, GlobalID);
|
||||
Logger.Trace(" (ReadTags) actor {0} GlobalID {2} has a conversation list {1}", NameSNO, snoConversationList, GlobalID);
|
||||
|
||||
if (DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList].ContainsKey(snoConversationList))
|
||||
ConversationList = DiIiS_NA.Core.MPQ.MPQStorage.Data.Assets[SNOGroup.ConversationList][snoConversationList].Data as DiIiS_NA.Core.MPQ.FileFormats.ConversationList;
|
||||
else
|
||||
if (snoConversationList != -1)
|
||||
Logger.Warn("Actor {0} - Conversation list {1} not found!", NameSNOId, snoConversationList);
|
||||
Logger.Warn("Actor {0} - Conversation list {1} not found!", NameSNO, snoConversationList);
|
||||
}
|
||||
|
||||
|
||||
@ -1401,7 +1408,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("[Actor] [Type: {0}] SNOId:{1} GlobalId: {2} Position: {3} Name: {4}", this.ActorType, this.ActorSNO.Id, this.GlobalID, this.Position, this.ActorSNO.Name);
|
||||
return string.Format("[Actor] [Type: {0}] SNOId:{1} GlobalId: {2} Position: {3} Name: {4}", this.ActorType, this.SNO, this.GlobalID, this.Position, this.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.Logging;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||
//Blizzless Project 2022
|
||||
@ -25,45 +26,47 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
public static class ActorFactory
|
||||
{
|
||||
private static readonly Dictionary<int, Type> SNOHandlers = new Dictionary<int, Type>();
|
||||
private static readonly Dictionary<ActorSno, Type> SNOHandlers = new Dictionary<ActorSno, Type>();
|
||||
private static Logger Logger = new Logger("ActorFactory");
|
||||
|
||||
static ActorFactory()
|
||||
{
|
||||
LoadSNOHandlers();
|
||||
}
|
||||
SNOHandlers = Assembly.GetExecutingAssembly().GetTypes()
|
||||
.Where(x => x.IsSubclassOf(typeof(Actor)))
|
||||
.Select(x => new { Type = x, Attribute = x.GetCustomAttributes<HandledSNOAttribute>(true).FirstOrDefault() })
|
||||
.Where(x => x.Attribute != null)
|
||||
.SelectMany(x => x.Attribute.SNOIds.Select(a => new { x.Type, Sno = a }))
|
||||
.ToDictionary(x => x.Sno, x => x.Type);
|
||||
}
|
||||
|
||||
public static void LazyCreate(World world, int snoId, TagMap tags, Vector3D spawn, Action<Actor, Vector3D> OnCreate)
|
||||
public static void LazyCreate(World world, ActorSno sno, TagMap tags, Vector3D spawn, Action<Actor, Vector3D> OnCreate)
|
||||
{
|
||||
var actor = Create(world, snoId, tags);
|
||||
var actor = Create(world, sno, tags);
|
||||
if (actor != null)
|
||||
OnCreate.Invoke(actor, spawn);
|
||||
}
|
||||
|
||||
public static Actor Create(World world, int snoId, TagMap tags)
|
||||
public static Actor Create(World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
if (!MPQStorage.Data.Assets[SNOGroup.Actor].ContainsKey(snoId))
|
||||
if (!MPQStorage.Data.Assets[SNOGroup.Actor].ContainsKey((int)sno))
|
||||
{
|
||||
//Logger.Warn("Actor asset not found, Id: {0}", snoId);
|
||||
return null;
|
||||
}
|
||||
|
||||
switch (snoId)
|
||||
switch (sno)
|
||||
{
|
||||
case 6572:
|
||||
case 139454:
|
||||
case 139456:
|
||||
case 170324:
|
||||
case 170325:
|
||||
case 495:
|
||||
case 496:
|
||||
int variable = DiIiS_NA.Core.Helpers.Math.RandomHelper.Next(0, 3);
|
||||
switch (variable)
|
||||
case ActorSno._woodwraith_a_01:
|
||||
case ActorSno._woodwraith_a_02:
|
||||
case ActorSno._woodwraith_a_03:
|
||||
case ActorSno._woodwraith_b_01:
|
||||
case ActorSno._woodwraith_b_02:
|
||||
case ActorSno._woodwraith_b_03:
|
||||
case ActorSno._woodwraith_unique_a:
|
||||
switch (DiIiS_NA.Core.Helpers.Math.RandomHelper.Next(0, 3) / 2)
|
||||
{
|
||||
case 0: snoId = 470241; break;
|
||||
case 1: snoId = 470241; break;
|
||||
case 2: snoId = 430928; break;
|
||||
case 3: snoId = 430928; break;
|
||||
case 0: sno = ActorSno._ls_woodwraith; break;
|
||||
case 1: sno = ActorSno._p4_woodwraith_a; break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -78,23 +81,23 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
if (world.Game.CurrentAct == 3000 && !world.IsPvP
|
||||
&& tags.ContainsKey(MarkerKeys.StoryModeOnly)
|
||||
&& tags[MarkerKeys.StoryModeOnly] == 1
|
||||
&& snoId != 6442) //only-Adventure Mode
|
||||
&& sno != ActorSno._waypoint) //only-Adventure Mode
|
||||
return null;
|
||||
|
||||
if (tags.ContainsKey(MarkerKeys.RiftOnly) && tags[MarkerKeys.RiftOnly] == 1) //Rift Mode
|
||||
return null;
|
||||
|
||||
var actorAsset = MPQStorage.Data.Assets[SNOGroup.Actor][snoId];
|
||||
var actorAsset = MPQStorage.Data.Assets[SNOGroup.Actor][(int)sno];
|
||||
var actorData = actorAsset.Data as DiIiS_NA.Core.MPQ.FileFormats.Actor;
|
||||
if (actorData == null)
|
||||
{
|
||||
Logger.Warn("Actor data not found, Id: {0}", snoId);
|
||||
Logger.Warn("Actor data not found, Id: {0}", sno);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (actorData.Type == ActorType.Invalid)
|
||||
{
|
||||
Logger.Warn("Actor type is Invalid, Id: {0}", snoId);
|
||||
Logger.Warn("Actor type is Invalid, Id: {0}", sno);
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -104,14 +107,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
|
||||
// see if we have an implementation for actor.
|
||||
if (SNOHandlers.ContainsKey(snoId))
|
||||
return (Actor)Activator.CreateInstance(SNOHandlers[snoId], new object[] { world, snoId, tags });
|
||||
if (SNOHandlers.ContainsKey(sno))
|
||||
return (Actor)Activator.CreateInstance(SNOHandlers[sno], new object[] { world, sno, tags });
|
||||
|
||||
switch (actorData.Type)
|
||||
{
|
||||
case ActorType.Monster:
|
||||
if (tags.ContainsKey(MarkerKeys.ConversationList))
|
||||
return new InteractiveNPC(world, snoId, tags);
|
||||
return new InteractiveNPC(world, sno, tags);
|
||||
else
|
||||
if (!MPQStorage.Data.Assets[SNOGroup.Monster].ContainsKey(actorData.MonsterSNO))
|
||||
return null;
|
||||
@ -119,29 +122,29 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
var monsterAsset = MPQStorage.Data.Assets[SNOGroup.Monster][actorData.MonsterSNO];
|
||||
var monsterData = monsterAsset.Data as DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
if (monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Breakable)
|
||||
return new Gizmo(world, snoId, tags);
|
||||
return new Gizmo(world, sno, tags);
|
||||
if (monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Ally ||
|
||||
monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Helper ||
|
||||
monsterData.Type == DiIiS_NA.Core.MPQ.FileFormats.Monster.MonsterType.Scenery)
|
||||
return new NPC(world, snoId, tags);
|
||||
return new NPC(world, sno, tags);
|
||||
else
|
||||
if (actorAsset.Name.ToLower().Contains("unique"))
|
||||
return new Unique(world, snoId, tags);
|
||||
return new Unique(world, sno, tags);
|
||||
else
|
||||
return new Monster(world, snoId, tags);
|
||||
return new Monster(world, sno, tags);
|
||||
case ActorType.Gizmo:
|
||||
switch (actorData.TagMap[ActorKeys.GizmoGroup])
|
||||
{
|
||||
case GizmoGroup.LootContainer:
|
||||
return new LootContainer(world, snoId, tags);
|
||||
return new LootContainer(world, sno, tags);
|
||||
case GizmoGroup.Door:
|
||||
return new Door(world, snoId, tags);
|
||||
return new Door(world, sno, tags);
|
||||
case GizmoGroup.DestructibleLootContainer:
|
||||
return new DesctructibleLootContainer(world, snoId, true, tags);
|
||||
return new DesctructibleLootContainer(world, sno, true, tags);
|
||||
case GizmoGroup.Destructible:
|
||||
case GizmoGroup.Passive:
|
||||
case GizmoGroup.Barricade:
|
||||
return new DesctructibleLootContainer(world, snoId, false, tags);
|
||||
return new DesctructibleLootContainer(world, sno, false, tags);
|
||||
case GizmoGroup.Portal:
|
||||
//Prevent Development Hell portal from showing
|
||||
if (tags.ContainsKey(MarkerKeys.DestinationWorld) && tags[MarkerKeys.DestinationWorld].Id == 222591)
|
||||
@ -149,37 +152,37 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
if (tags.ContainsKey(MarkerKeys.DestinationWorld) && tags[MarkerKeys.DestinationWorld].Id == 443346)
|
||||
return null;
|
||||
else
|
||||
return new Portal(world, snoId, tags);
|
||||
return new Portal(world, sno, tags);
|
||||
case GizmoGroup.BossPortal:
|
||||
return new BossPortal(world, snoId, tags);
|
||||
return new BossPortal(world, sno, tags);
|
||||
case GizmoGroup.Readable:
|
||||
return new Readable(world, snoId, tags);
|
||||
return new Readable(world, sno, tags);
|
||||
case GizmoGroup.Banner:
|
||||
return new Banner(world, snoId, tags);
|
||||
return new Banner(world, sno, tags);
|
||||
case GizmoGroup.CheckPoint:
|
||||
return new Checkpoint(world, snoId, tags);
|
||||
return new Checkpoint(world, sno, tags);
|
||||
case GizmoGroup.Waypoint:
|
||||
return new Waypoint(world, snoId, tags);
|
||||
return new Waypoint(world, sno, tags);
|
||||
case GizmoGroup.Savepoint:
|
||||
return new Savepoint(world, snoId, tags);
|
||||
return new Savepoint(world, sno, tags);
|
||||
case GizmoGroup.ProximityTriggered:
|
||||
return new ProximityTriggeredGizmo(world, snoId, tags);
|
||||
return new ProximityTriggeredGizmo(world, sno, tags);
|
||||
case GizmoGroup.Shrine:
|
||||
return new Shrine(world, snoId, tags);
|
||||
return new Shrine(world, sno, tags);
|
||||
case GizmoGroup.Healthwell:
|
||||
return new Healthwell(world, snoId, tags);
|
||||
return new Healthwell(world, sno, tags);
|
||||
case GizmoGroup.ExpPool:
|
||||
return new XPPool(world, snoId, tags);
|
||||
return new XPPool(world, sno, tags);
|
||||
case GizmoGroup.StartLocations:
|
||||
return new StartingPoint(world, snoId, tags);
|
||||
return new StartingPoint(world, sno, tags);
|
||||
case GizmoGroup.HearthPortal:
|
||||
return new HearthPortal(world, snoId, tags);
|
||||
return new HearthPortal(world, sno, tags);
|
||||
case GizmoGroup.DungeonStonePortal:
|
||||
return new DungeonStonePortal(world, snoId, tags);
|
||||
return new DungeonStonePortal(world, sno, tags);
|
||||
case GizmoGroup.Headstone:
|
||||
return new Headstone(world, snoId, tags);
|
||||
return new Headstone(world, sno, tags);
|
||||
case GizmoGroup.Spawner:
|
||||
return new Spawner(world, snoId, tags);
|
||||
return new Spawner(world, sno, tags);
|
||||
|
||||
case GizmoGroup.GateGizmo:
|
||||
case GizmoGroup.ActChangeTempObject:
|
||||
@ -194,30 +197,30 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
case GizmoGroup.ScriptObject:
|
||||
case GizmoGroup.LootRunObelisk:
|
||||
case GizmoGroup.Unknown:
|
||||
return CreateGizmo(world, snoId, tags);
|
||||
return CreateGizmo(world, sno, tags);
|
||||
default:
|
||||
#if DEBUG
|
||||
Logger.Warn("Unknown gizmo group {0}, id {1}", actorData.TagMap[ActorKeys.GizmoGroup], snoId);
|
||||
Logger.Warn("Unknown gizmo group {0}, id {1}", actorData.TagMap[ActorKeys.GizmoGroup], sno);
|
||||
#else
|
||||
|
||||
#endif
|
||||
return CreateGizmo(world, snoId, tags);
|
||||
return CreateGizmo(world, sno, tags);
|
||||
}
|
||||
case ActorType.ServerProp:
|
||||
return new ServerProp(world, snoId, tags);
|
||||
return new ServerProp(world, sno, tags);
|
||||
case ActorType.Environment:
|
||||
return new Environment(world, snoId, tags);
|
||||
return new Environment(world, sno, tags);
|
||||
case ActorType.Item:
|
||||
return new StaticItem(world, snoId, tags);
|
||||
return new StaticItem(world, sno, tags);
|
||||
case ActorType.Player:
|
||||
return new InteractiveNPC(world, snoId, tags);
|
||||
return new InteractiveNPC(world, sno, tags);
|
||||
default:
|
||||
//Logger.Warn("Unknown Actor type {0}, Id: {1}", actorData.Type, snoId);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static Actor CreateGizmo(World world, int snoId, TagMap tags)
|
||||
private static Actor CreateGizmo(World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
//if (tags.ContainsKey(MarkerKeys.DestinationWorld)) //trying to spawn all portals
|
||||
//{
|
||||
@ -225,24 +228,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
//return new Portal(world, snoId, tags);
|
||||
//}
|
||||
|
||||
return new Gizmo(world, snoId, tags);
|
||||
}
|
||||
|
||||
public static void LoadSNOHandlers()
|
||||
{
|
||||
foreach (var type in Assembly.GetExecutingAssembly().GetTypes())
|
||||
{
|
||||
if (!type.IsSubclassOf(typeof(Actor))) continue;
|
||||
|
||||
var attributes = (HandledSNOAttribute[])type.GetCustomAttributes(typeof(HandledSNOAttribute), true);
|
||||
if (attributes.Length == 0) continue;
|
||||
|
||||
foreach (var sno in attributes.First().SNOIds)
|
||||
{
|
||||
if (!SNOHandlers.ContainsKey(sno))
|
||||
SNOHandlers.Add(sno, type);
|
||||
}
|
||||
}
|
||||
return new Gizmo(world, sno, tags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -37,6 +38,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
static readonly Logger Logger = LogManager.CreateLogger();
|
||||
|
||||
// "EventPortal" actors
|
||||
private static readonly ActorSno[] eventPortals = new ActorSno[]
|
||||
{
|
||||
ActorSno._x1_westmhub_scoundreleventportal,
|
||||
ActorSno._x1_westmhub_templareventportal,
|
||||
ActorSno._x1_westmhub_enchantresseventportal,
|
||||
ActorSno._x1_westmhub_jewelereventportal,
|
||||
};
|
||||
|
||||
public override ActorType ActorType { get { return ActorType.Gizmo; } }
|
||||
|
||||
private int Encounter;
|
||||
@ -45,14 +55,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
private int DestPoint;
|
||||
private ResolvedPortalDestination Destination { get; set; }
|
||||
|
||||
public BossPortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public BossPortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 0x9;//16;
|
||||
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
this.Attributes[GameAttribute.Untargetable] = false;
|
||||
switch (((this.ActorSNO.Target as DiIiS_NA.Core.MPQ.FileFormats.Actor).TagMap[MarkerKeys.BossEncounter].Target as DiIiS_NA.Core.MPQ.FileFormats.BossEncounter).Worlds[0])
|
||||
var bossEncounter = ((this.ActorSNO.Target as DiIiS_NA.Core.MPQ.FileFormats.Actor).TagMap[MarkerKeys.BossEncounter].Target as DiIiS_NA.Core.MPQ.FileFormats.BossEncounter);
|
||||
DestWorld = bossEncounter.Worlds[0];
|
||||
switch (DestWorld)
|
||||
{
|
||||
case 60713:
|
||||
DestArea = 60714; break;
|
||||
@ -99,78 +111,77 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
|
||||
}
|
||||
DestWorld = ((this.ActorSNO.Target as DiIiS_NA.Core.MPQ.FileFormats.Actor).TagMap[MarkerKeys.BossEncounter].Target as DiIiS_NA.Core.MPQ.FileFormats.BossEncounter).Worlds[0];
|
||||
DestPoint = ((this.ActorSNO.Target as DiIiS_NA.Core.MPQ.FileFormats.Actor).TagMap[MarkerKeys.BossEncounter].Target as DiIiS_NA.Core.MPQ.FileFormats.BossEncounter).I11;
|
||||
DestPoint = bossEncounter.I11;
|
||||
//get EncounterSNO
|
||||
switch (this.ActorSNO.Id)
|
||||
switch (this.SNO)
|
||||
{
|
||||
case 168932: //CainIntro
|
||||
case ActorSno._boss_portal_cainintro: //CainIntro
|
||||
this.Encounter = 168925;
|
||||
break;
|
||||
case 159573: //Leoric
|
||||
case ActorSno._boss_portal_skeletonking: //Leoric
|
||||
this.Encounter = 159592;
|
||||
break;
|
||||
case 183032: //SpiderQueen
|
||||
case ActorSno._boss_portal_spiderqueen: //SpiderQueen
|
||||
this.Encounter = 181436;
|
||||
break;
|
||||
case 158944: //Butcher
|
||||
case ActorSno._boss_portal_butcher: //Butcher
|
||||
this.Encounter = 158915;
|
||||
break;
|
||||
case 195234: //Maghda
|
||||
case ActorSno._boss_portal_maghda: //Maghda
|
||||
this.Encounter = 195226;
|
||||
break;
|
||||
case 159578: //Cain Death
|
||||
case ActorSno._boss_portal_binkleshulkout: //Cain Death
|
||||
this.Encounter = 159591;
|
||||
break;
|
||||
//case 159578: //Belial Audience
|
||||
//this.Encounter = 162231;
|
||||
//break;
|
||||
case 159580: //Adria Rescue
|
||||
case ActorSno._boss_portal_adriasewer: //Adria Rescue
|
||||
this.Encounter = 159584;
|
||||
break;
|
||||
case 159581: //Zoltun Kulle
|
||||
case ActorSno._boss_portal_blacksoulstone: //Zoltun Kulle
|
||||
this.Encounter = 159586;
|
||||
break;
|
||||
case 159574: //Belial
|
||||
case ActorSno._boss_portal_belial: //Belial
|
||||
this.Encounter = 159585;
|
||||
break;
|
||||
case 226784: //SiegeBreaker
|
||||
case ActorSno._boss_portal_siegebreaker: //SiegeBreaker
|
||||
this.Encounter = 226716;
|
||||
break;
|
||||
case 161278: //Cydaea
|
||||
case ActorSno._boss_portal_mistressofpain: //Cydaea
|
||||
this.Encounter = 161246;
|
||||
break;
|
||||
case 159575: //Azmodan
|
||||
case ActorSno._boss_portal_azmodan: //Azmodan
|
||||
this.Encounter = 159582;
|
||||
break;
|
||||
case 159576: //Adria_Betrayal
|
||||
case ActorSno._boss_portal_adriabetrayal: //Adria_Betrayal
|
||||
this.Encounter = 159583;
|
||||
break;
|
||||
case 182963: //Iskatu
|
||||
case ActorSno._boss_portal_1000monsterfight: //Iskatu
|
||||
this.Encounter = 182960;
|
||||
break;
|
||||
case 161276: //Rakanoth
|
||||
case ActorSno._boss_portal_despair: //Rakanoth
|
||||
this.Encounter = 161247;
|
||||
break;
|
||||
case 220551: //Imperius_Spire
|
||||
case ActorSno._bossportal_imperius_spirebase: //Imperius_Spire
|
||||
this.Encounter = 220541;
|
||||
break;
|
||||
case 161279: //Diablo
|
||||
case ActorSno._boss_portal_diablo: //Diablo
|
||||
this.Encounter = 161280;
|
||||
break;
|
||||
case 309883: //Urzael
|
||||
case ActorSno._x1_urzael_bossportal: //Urzael
|
||||
this.Encounter = 298128;
|
||||
break;
|
||||
case 293005: //Adria
|
||||
case ActorSno._x1_boss_portal_adria: //Adria
|
||||
this.Encounter = 293007;
|
||||
break;
|
||||
case 296314: //BatteringRam
|
||||
case ActorSno._x1_boss_portal_batteringram: //BatteringRam
|
||||
this.Encounter = 296315;
|
||||
break;
|
||||
case 374257: //Malthael
|
||||
case ActorSno._x1_fortress_malthael_boss_portal: //Malthael
|
||||
this.Encounter = 278965;
|
||||
break;
|
||||
case 380766:
|
||||
case ActorSno._boss_portal_greed:
|
||||
this.Encounter = 380760;
|
||||
break;
|
||||
default:
|
||||
@ -178,16 +189,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
break;
|
||||
}
|
||||
|
||||
this.Destination = new DiIiS_NA.GameServer.MessageSystem.Message.Fields.ResolvedPortalDestination
|
||||
{
|
||||
this.Destination = new ResolvedPortalDestination
|
||||
{
|
||||
WorldSNO = DestWorld,
|
||||
DestLevelAreaSNO = DestArea,
|
||||
StartingPointActorTag = DestPoint
|
||||
};
|
||||
}
|
||||
public static bool setActorOperable(World world, Int32 snoId, bool status)
|
||||
public static bool SetActorOperable(World world, ActorSno sno, bool status)
|
||||
{
|
||||
var actor = world.GetActorBySNO(snoId);
|
||||
var actor = world.GetActorBySNO(sno);
|
||||
|
||||
if (actor == null)
|
||||
return false;
|
||||
@ -204,7 +215,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Name.EndsWith("EventPortal")) return false;
|
||||
if (eventPortals.Contains(this.SNO)) return false;
|
||||
if (!base.Reveal(player))
|
||||
return false;
|
||||
/*
|
||||
@ -219,7 +230,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
});
|
||||
//*/
|
||||
player.InGameClient.SendMessage(new DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Portal.PortalSpecifierMessage()
|
||||
player.InGameClient.SendMessage(new PortalSpecifierMessage()
|
||||
{
|
||||
ActorID = this.DynamicID(player),
|
||||
Destination = this.Destination
|
||||
@ -234,7 +245,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
Logger.Trace("(OnTargeted) BossPortal has been activated, Id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("(OnTargeted) BossPortal has been activated, Id: {0}", this.SNO);
|
||||
if (this.Encounter == 0) return;
|
||||
//if (this.World.Game.CurrentEncounter.activated) return;
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -9,8 +10,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
public override ActorType ActorType { get { return ActorType.Environment; } }
|
||||
|
||||
public Environment(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Environment(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 0x10;//16;
|
||||
this.Field7 = 0x00000000;
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using System;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -20,8 +21,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
public override ActorType ActorType { get { return ActorType.Gizmo; } }
|
||||
protected Logger Logger = new Logger("Gizmo");
|
||||
|
||||
public Gizmo(World world, int snoId, TagMap tags, bool is_marker = false)
|
||||
: base(world, snoId, tags, is_marker)
|
||||
public Gizmo(World world, ActorSno sno, TagMap tags, bool is_marker = false)
|
||||
: base(world, sno, tags, is_marker)
|
||||
{
|
||||
this.Field2 = 0x9;//16;
|
||||
this.Field7 = 0x00000001;
|
||||
@ -41,16 +42,16 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
if (this.Attributes[GameAttribute.Disabled] == true) return;
|
||||
Logger.Trace("(OnTargeted) Gizmo has been activated! Id: {0}, Type: {1}", this.ActorSNO.Id, this.ActorData.TagMap[ActorKeys.GizmoGroup]);
|
||||
Logger.Trace("(OnTargeted) Gizmo has been activated! Id: {0}, Type: {1}", this.SNO, this.ActorData.TagMap[ActorKeys.GizmoGroup]);
|
||||
|
||||
//handling quest triggers
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.InteractWithActor)
|
||||
{
|
||||
this.World.Game.QuestProgress.UpdateCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.QuestProgress.UpdateCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
try
|
||||
{
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
@ -61,27 +62,27 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.InteractWithActor)
|
||||
{
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
}
|
||||
}
|
||||
if (this.World.Game.SideQuestProgress.GlobalQuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
if (this.World.Game.SideQuestProgress.GlobalQuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.SideQuestProgress.GlobalQuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.SideQuestProgress.GlobalQuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.InteractWithActor)
|
||||
{
|
||||
this.World.Game.SideQuestProgress.UpdateGlobalCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.GlobalQuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.SideQuestProgress.UpdateGlobalCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.GlobalQuestTriggers[(int)this.SNO].counter)
|
||||
try
|
||||
{
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
this.World.Game.SideQuestProgress.GlobalQuestTriggers.Remove(this.ActorSNO.Id);
|
||||
this.World.Game.SideQuestProgress.GlobalQuestTriggers.Remove((int)this.SNO);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
@ -2,17 +2,18 @@
|
||||
using System;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
|
||||
public sealed class HandledSNOAttribute : Attribute
|
||||
{
|
||||
public List<int> SNOIds { get; private set; }
|
||||
public List<ActorSno> SNOIds { get; private set; }
|
||||
|
||||
public HandledSNOAttribute(params int[] snoIds)
|
||||
public HandledSNOAttribute(params ActorSno[] snoIds)
|
||||
{
|
||||
this.SNOIds = new List<int>();
|
||||
this.SNOIds = new List<ActorSno>();
|
||||
this.SNOIds.AddRange(snoIds);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Interactions;
|
||||
@ -25,8 +26,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
public class Artisan : InteractiveNPC
|
||||
{
|
||||
public Artisan(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Artisan(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
Interactions.Add(new CraftInteraction());
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -9,15 +10,16 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(0x0002FA63 /* PT_Blacksmith_ForgeWeaponShortcut.acr */,
|
||||
0x0002FA64 /*PT_Blacksmith_ForgeArmorShortcut.acr */,
|
||||
0x0002FA62 /*PT_Blacksmith_RepairShortcut.acr */,
|
||||
212519 /* Actor PT_Jeweler_AddSocketShortcut */,
|
||||
212517 /* Actor PT_Jeweler_CombineShortcut */,
|
||||
212521 /* Actor PT_Jeweler_RemoveGemShortcut */,
|
||||
212511 /* Actor PT_Mystic_EnhanceShortcut */,
|
||||
212510 /* Actor PT_Mystic_IdentifyShortcut */,
|
||||
439975 /* KanaiCube_Stand */)]
|
||||
[HandledSNO(
|
||||
ActorSno._pt_blacksmith_forgeweaponshortcut /* PT_Blacksmith_ForgeWeaponShortcut.acr */,
|
||||
ActorSno._pt_blacksmith_forgearmorshortcut /*PT_Blacksmith_ForgeArmorShortcut.acr */,
|
||||
ActorSno._pt_blacksmith_repairshortcut /*PT_Blacksmith_RepairShortcut.acr */,
|
||||
ActorSno._pt_jeweler_addsocketshortcut /* Actor PT_Jeweler_AddSocketShortcut */,
|
||||
ActorSno._pt_jeweler_combineshortcut /* Actor PT_Jeweler_CombineShortcut */,
|
||||
ActorSno._pt_jeweler_removegemshortcut /* Actor PT_Jeweler_RemoveGemShortcut */,
|
||||
ActorSno._pt_mystic_enhanceshortcut /* Actor PT_Mystic_EnhanceShortcut */,
|
||||
ActorSno._pt_mystic_identifyshortcut /* Actor PT_Mystic_IdentifyShortcut */
|
||||
)]
|
||||
public class ArtisanShortcut : InteractiveNPC
|
||||
{
|
||||
/*
|
||||
@ -42,79 +44,60 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
[442282] kanai_Cube_Wash
|
||||
[138979] NephalemCube
|
||||
//*/
|
||||
public ArtisanShortcut(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public ArtisanShortcut(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = false;
|
||||
Attributes[GameAttribute.Conversation_Icon, 0] = 0;
|
||||
switch (this.ActorSNO.Id)
|
||||
{
|
||||
case 0x0002FA62:
|
||||
case 0x0002FA63:
|
||||
case 0x0002FA64:
|
||||
break;
|
||||
case 212517:
|
||||
case 212519:
|
||||
case 212521:
|
||||
break;
|
||||
case 212510:
|
||||
case 212511:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Misc.ANNDataMessage(Opcodes.OpenArtisanWindowMessage) { ActorID = this.DynamicID(player) });
|
||||
switch (this.ActorSNO.Id)
|
||||
switch (this.SNO)
|
||||
{
|
||||
case 0x0002FA62:
|
||||
case 0x0002FA63:
|
||||
case 0x0002FA64:
|
||||
case ActorSno._pt_blacksmith_repairshortcut:
|
||||
case ActorSno._pt_blacksmith_forgeweaponshortcut:
|
||||
case ActorSno._pt_blacksmith_forgearmorshortcut:
|
||||
player.ArtisanInteraction = "Blacksmith";
|
||||
break;
|
||||
case 212517:
|
||||
case 212519:
|
||||
case 212521:
|
||||
case ActorSno._pt_jeweler_combineshortcut:
|
||||
case ActorSno._pt_jeweler_addsocketshortcut:
|
||||
case ActorSno._pt_jeweler_removegemshortcut:
|
||||
player.ArtisanInteraction = "Jeweler";
|
||||
break;
|
||||
case 212510:
|
||||
case 212511:
|
||||
case ActorSno._pt_mystic_identifyshortcut:
|
||||
case ActorSno._pt_mystic_enhanceshortcut:
|
||||
player.ArtisanInteraction = "Mystic";
|
||||
break;
|
||||
case 439975:
|
||||
player.ArtisanInteraction = "Cube";
|
||||
break;
|
||||
}
|
||||
}
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if(this.World.Game.CurrentAct != 3000)
|
||||
switch (this.ActorSNO.Id)
|
||||
if (this.World.Game.CurrentAct != 3000)
|
||||
{
|
||||
case 0x0002FA62:
|
||||
case 0x0002FA63:
|
||||
case 0x0002FA64:
|
||||
if (!player.BlacksmithUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case 212517:
|
||||
case 212519:
|
||||
case 212521:
|
||||
if (!player.JewelerUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case 212510:
|
||||
case 212511:
|
||||
if (!player.MysticUnlocked)
|
||||
return false;
|
||||
break;
|
||||
switch (this.SNO)
|
||||
{
|
||||
case ActorSno._pt_blacksmith_repairshortcut:
|
||||
case ActorSno._pt_blacksmith_forgeweaponshortcut:
|
||||
case ActorSno._pt_blacksmith_forgearmorshortcut:
|
||||
if (!player.BlacksmithUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case ActorSno._pt_jeweler_combineshortcut:
|
||||
case ActorSno._pt_jeweler_addsocketshortcut:
|
||||
case ActorSno._pt_jeweler_removegemshortcut:
|
||||
if (!player.JewelerUnlocked)
|
||||
return false;
|
||||
break;
|
||||
case ActorSno._pt_mystic_identifyshortcut:
|
||||
case ActorSno._pt_mystic_enhanceshortcut:
|
||||
if (!player.MysticUnlocked)
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (this.ActorSNO.Id == 439975)
|
||||
if (!player.KanaiUnlocked)
|
||||
return false;
|
||||
|
||||
return base.Reveal(player);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -21,11 +22,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(56947 /* PT_Blacksmith.acr */)]
|
||||
[HandledSNO(ActorSno._pt_blacksmith /* PT_Blacksmith.acr */)]
|
||||
public class Blacksmith : Artisan
|
||||
{
|
||||
public Blacksmith(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Blacksmith(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
// TODO add all blacksmith functionality? /fasbat
|
||||
//this.Attributes[GameAttribute.TeamID] = 0;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
@ -13,11 +14,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(56949 /* PT_Jewler.acr */)]
|
||||
[HandledSNO(ActorSno._pt_jeweler /* PT_Jewler.acr */)]
|
||||
public class Jeweler : Artisan
|
||||
{
|
||||
public Jeweler(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Jeweler(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
@ -13,11 +14,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(56948 /* PT_Mystic.acr */)]
|
||||
[HandledSNO(ActorSno._pt_mystic /* PT_Mystic.acr */)]
|
||||
public class Mystic : Artisan
|
||||
{
|
||||
public Mystic(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Mystic(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
@ -15,11 +16,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Quest;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(398682 /* P1_LR_TieredRift_Nephalem.acr */)]
|
||||
[HandledSNO(ActorSno._p1_lr_tieredrift_nephalem /* P1_LR_TieredRift_Nephalem.acr */)]
|
||||
public class Nephalem : Artisan
|
||||
{
|
||||
public Nephalem(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Nephalem(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.NPC_Is_Operatable] = true;
|
||||
this.Attributes[GameAttribute.Is_NPC] = true;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Storage;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -21,17 +22,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
{
|
||||
[HandledSNO(429005)] //Zoltun
|
||||
[HandledSNO(ActorSno._p2_hq_zoltunkulle)] //Zoltun
|
||||
//[HandledSNO(431095)] //Wardrobe
|
||||
public class ZoltunNPC : Artisan
|
||||
{
|
||||
public ZoltunNPC(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public ZoltunNPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
if (world.Game.CurrentAct == 3000)
|
||||
{
|
||||
|
||||
this.Conversations.Add(new ActorSystem.Interactions.ConversationInteraction(430146));
|
||||
this.Conversations.Add(new ConversationInteraction(430146));
|
||||
//[430335] [Worlds] a3dun_ruins_frost_city_a_02
|
||||
//[428493] [Worlds] a3dun_ruins_frost_city_a_01
|
||||
//this.Attributes[GameAttribute.Conversation_Icon, 0] = 1;
|
||||
@ -39,7 +40,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
public override void OnTargeted(Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
{
|
||||
base.OnTargeted(player, message);//player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Misc.ANNDataMessage(MessageSystem.Opcodes.OpenArtisanWindowMessage) { ActorID = this.DynamicID });
|
||||
player.ArtisanInteraction = "KanaiCube";
|
||||
@ -47,7 +48,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 439975)
|
||||
if (this.SNO == ActorSno._kanaicube_stand)
|
||||
if (!player.KanaiUnlocked)
|
||||
Interactions.Clear();
|
||||
else
|
||||
@ -59,18 +60,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Artisans
|
||||
}
|
||||
}
|
||||
|
||||
[HandledSNO(
|
||||
439975 /* Actor KanaiCube_Stand */)]
|
||||
[HandledSNO(ActorSno._kanaicube_stand /* Actor KanaiCube_Stand */)]
|
||||
public class CubeShortcut : InteractiveNPC
|
||||
{
|
||||
public CubeShortcut(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CubeShortcut(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
Attributes[GameAttribute.Conversation_Icon, 0] = 0;
|
||||
}
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
public override void OnTargeted(Player player, MessageSystem.Message.Definitions.World.TargetMessage message)
|
||||
{
|
||||
player.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Misc.ANNDataMessage(Opcodes.OpenArtisanWindowMessage) { ActorID = this.DynamicID(player) });
|
||||
player.ArtisanInteraction = "Cube";
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
//Blizzless Project 2022
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
@ -10,32 +11,54 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class Banner : Gizmo
|
||||
{
|
||||
public Banner(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
private static readonly Dictionary<int, ActorSno[]> bannerActors = new Dictionary<int, ActorSno[]>()
|
||||
{
|
||||
if (this.ActorSNO.Name.Contains("Player_2"))
|
||||
this.BannerPlayerIndex = 1;
|
||||
else if (this.ActorSNO.Name.Contains("Player_3"))
|
||||
this.BannerPlayerIndex = 2;
|
||||
else if (this.ActorSNO.Name.Contains("Player_4"))
|
||||
this.BannerPlayerIndex = 3;
|
||||
[0] = new ActorSno[] {
|
||||
ActorSno._banner_player_1,
|
||||
ActorSno._emotebanner_player_1,
|
||||
ActorSno._banner_player_1_act2,
|
||||
ActorSno._emotebanner_player_1_lit,
|
||||
ActorSno._banner_player_1_act5,
|
||||
},
|
||||
[1] = new ActorSno[] {
|
||||
ActorSno._banner_player_2,
|
||||
ActorSno._emotebanner_player_2,
|
||||
ActorSno._banner_player_2_act2,
|
||||
ActorSno._banner_player_2_act5,
|
||||
},
|
||||
[2] = new ActorSno[] {
|
||||
ActorSno._banner_player_3,
|
||||
ActorSno._emotebanner_player_3,
|
||||
ActorSno._banner_player_3_act2,
|
||||
ActorSno._banner_player_3_act5,
|
||||
},
|
||||
[3] = new ActorSno[] {
|
||||
ActorSno._banner_player_4,
|
||||
ActorSno._emotebanner_player_4,
|
||||
ActorSno._banner_player_4_act2,
|
||||
ActorSno._banner_player_4_act5,
|
||||
},
|
||||
};
|
||||
public Banner(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.BannerPlayerIndex = bannerActors.FirstOrDefault(x => x.Value.Contains(this.SNO)).Key;
|
||||
}
|
||||
|
||||
public int BannerPlayerIndex = 0;
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (!base.Reveal(player))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
return base.Reveal(player);
|
||||
}
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
Logger.Trace("(OnTargeted) Banner has been activated ");
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -18,65 +19,65 @@ using System.Threading.Tasks;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
5350, //Leoric King
|
||||
51341, //Aranea
|
||||
3526, //Butcher
|
||||
6031, //Maghda
|
||||
80509, //Zoltun Kulle
|
||||
62975, //Belial (small)
|
||||
3349, //Belial (big)
|
||||
87642, //Gluttony
|
||||
96192, //Siegebreaker
|
||||
95250, //Cydaea
|
||||
89690, //Azmodan
|
||||
148449, //Izual
|
||||
196102, //Iskatu
|
||||
4630, //Despair (Rakanoth)
|
||||
114917, //Diablo
|
||||
133562, //Diablo's shadow
|
||||
291368, //Urzael
|
||||
279394, //Adria
|
||||
297730, //Malthael
|
||||
//Nephalem Bosses
|
||||
358429, //X1_LR_Boss_MistressofPain
|
||||
358489, //X1_LR_Boss_Angel_Corrupt_A
|
||||
358614, //X1_LR_Boss_creepMob_A
|
||||
359094, //X1_LR_Boss_SkeletonSummoner_C
|
||||
359688, //X1_LR_Boss_Succubus_A
|
||||
360281, //X1_LR_Boss_Snakeman_Melee_Belial
|
||||
360636, //X1_LR_Boss_TerrorDemon_A
|
||||
434201, //P4_LR_Boss_Sandmonster_Turret
|
||||
343743, //x1_LR_Boss_SkeletonKing
|
||||
343751, //x1_LR_Boss_Gluttony
|
||||
343759, //x1_LR_Boss_Despair
|
||||
343767, //x1_LR_Boss_MalletDemon
|
||||
344119, //X1_LR_Boss_morluSpellcaster_Ice
|
||||
344389, //X1_LR_Boss_SandMonster
|
||||
345004, //X1_LR_Boss_morluSpellcaster_Fire
|
||||
346563, //X1_LR_Boss_DeathMaiden
|
||||
353517, //X1_LR_Boss_Secret_Cow
|
||||
353535, //X1_LR_Boss_Squigglet
|
||||
353823, //X1_LR_Boss_sniperAngel
|
||||
353874, //X1_LR_Boss_westmarchBrute
|
||||
354050, //X1_LR_Boss_Dark_Angel
|
||||
354144, //X1_LR_Boss_BigRed_Izual
|
||||
354652, //X1_LR_Boss_demonFlyerMega
|
||||
426943, //X1_LR_Boss_RatKing_A
|
||||
428323, //X1_LR_Boss_RatKing_A_UI
|
||||
429010, //X1_LR_Boss_TerrorDemon_A_BreathMinion
|
||||
357917, //x1_LR_Boss_Butcher
|
||||
358208, //X1_LR_Boss_ZoltunKulle
|
||||
360766, //X1_LR_Boss_Minion_shadowVermin_A
|
||||
360794, //X1_LR_Boss_Minion_TerrorDemon_Clone_C
|
||||
360327, //X1_LR_Boss_Minion_Swarm_A
|
||||
360329 //X1_LR_Boss_Minion_electricEel_B
|
||||
ActorSno._skeletonking, //Leoric King
|
||||
ActorSno._spiderqueen, //Aranea
|
||||
ActorSno._butcher, //Butcher
|
||||
ActorSno._maghda, //Maghda
|
||||
ActorSno._zoltunkulle, //Zoltun Kulle
|
||||
ActorSno._belial_trueform, //Belial (small)
|
||||
ActorSno._belial, //Belial (big)
|
||||
ActorSno._gluttony, //Gluttony
|
||||
ActorSno._siegebreakerdemon, //Siegebreaker
|
||||
ActorSno._mistressofpain, //Cydaea
|
||||
ActorSno._azmodan, //Azmodan
|
||||
ActorSno._bigred_izual, //Izual
|
||||
ActorSno._terrordemon_a_unique_1000monster, //Iskatu
|
||||
ActorSno._despair, //Despair (Rakanoth)
|
||||
ActorSno._diablo, //Diablo
|
||||
ActorSno._terrordiablo, //Diablo's shadow
|
||||
ActorSno._x1_urzael_boss, //Urzael
|
||||
ActorSno._x1_adria_boss, //Adria
|
||||
ActorSno._x1_malthael_boss, //Malthael
|
||||
//Nephalem Bosses
|
||||
ActorSno._x1_lr_boss_mistressofpain, //X1_LR_Boss_MistressofPain
|
||||
ActorSno._x1_lr_boss_angel_corrupt_a, //X1_LR_Boss_Angel_Corrupt_A
|
||||
ActorSno._x1_lr_boss_creepmob_a, //X1_LR_Boss_creepMob_A
|
||||
ActorSno._x1_lr_boss_skeletonsummoner_c, //X1_LR_Boss_SkeletonSummoner_C
|
||||
ActorSno._x1_lr_boss_succubus_a, //X1_LR_Boss_Succubus_A
|
||||
ActorSno._x1_lr_boss_snakeman_melee_belial, //X1_LR_Boss_Snakeman_Melee_Belial
|
||||
ActorSno._x1_lr_boss_terrordemon_a, //X1_LR_Boss_TerrorDemon_A
|
||||
ActorSno._p4_lr_boss_sandmonster_turret, //P4_LR_Boss_Sandmonster_Turret
|
||||
ActorSno._x1_lr_boss_skeletonking, //x1_LR_Boss_SkeletonKing
|
||||
ActorSno._x1_lr_boss_gluttony, //x1_LR_Boss_Gluttony
|
||||
ActorSno._x1_lr_boss_despair, //x1_LR_Boss_Despair
|
||||
ActorSno._x1_lr_boss_malletdemon, //x1_LR_Boss_MalletDemon
|
||||
ActorSno._x1_lr_boss_morluspellcaster_ice, //X1_LR_Boss_morluSpellcaster_Ice
|
||||
ActorSno._x1_lr_boss_sandmonster, //X1_LR_Boss_SandMonster
|
||||
ActorSno._x1_lr_boss_morluspellcaster_fire, //X1_LR_Boss_morluSpellcaster_Fire
|
||||
ActorSno._x1_lr_boss_deathmaiden, //X1_LR_Boss_DeathMaiden
|
||||
ActorSno._x1_lr_boss_secret_cow, //X1_LR_Boss_Secret_Cow
|
||||
ActorSno._x1_lr_boss_squigglet, //X1_LR_Boss_Squigglet
|
||||
ActorSno._x1_lr_boss_sniperangel, //X1_LR_Boss_sniperAngel
|
||||
ActorSno._x1_lr_boss_westmarchbrute, //X1_LR_Boss_westmarchBrute
|
||||
ActorSno._x1_lr_boss_dark_angel, //X1_LR_Boss_Dark_Angel
|
||||
ActorSno._x1_lr_boss_bigred_izual, //X1_LR_Boss_BigRed_Izual
|
||||
ActorSno._x1_lr_boss_demonflyermega, //X1_LR_Boss_demonFlyerMega
|
||||
ActorSno._x1_lr_boss_ratking_a, //X1_LR_Boss_RatKing_A
|
||||
ActorSno._x1_lr_boss_ratking_a_ui, //X1_LR_Boss_RatKing_A_UI
|
||||
ActorSno._x1_lr_boss_terrordemon_a_breathminion, //X1_LR_Boss_TerrorDemon_A_BreathMinion
|
||||
ActorSno._x1_lr_boss_butcher, //x1_LR_Boss_Butcher
|
||||
ActorSno._x1_lr_boss_zoltunkulle, //X1_LR_Boss_ZoltunKulle
|
||||
ActorSno._x1_lr_boss_minion_shadowvermin_a, //X1_LR_Boss_Minion_shadowVermin_A
|
||||
ActorSno._x1_lr_boss_minion_terrordemon_clone_c, //X1_LR_Boss_Minion_TerrorDemon_Clone_C
|
||||
ActorSno._x1_lr_boss_minion_swarm_a, //X1_LR_Boss_Minion_Swarm_A
|
||||
ActorSno._x1_lr_boss_minion_electriceel_b //X1_LR_Boss_Minion_electricEel_B
|
||||
)/*Act Bosses*/]
|
||||
public sealed class Boss : Monster
|
||||
{
|
||||
public Boss(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Boss(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
if (snoId == 80509 && world.WorldSNO.Id == 50613) this.SetVisible(false);
|
||||
if (sno == ActorSno._zoltunkulle && world.SNO == WorldSno.a2dun_zolt_lobby) this.SetVisible(false);
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
//this.Attributes[GameAttribute.Immune_To_Charm] = true;
|
||||
this.Attributes[GameAttribute.//Blizzless Project 2022
|
||||
@ -89,13 +90,14 @@ using_Bossbar] = true;
|
||||
this.Attributes[GameAttribute.TeamID] = 10;
|
||||
|
||||
this.WalkSpeed *= 0.5f;
|
||||
switch (snoId)
|
||||
MonsterBrain monsterBrain = (Brain as MonsterBrain);
|
||||
switch (sno)
|
||||
{
|
||||
case 114917: //Diablo
|
||||
//(Brain as MonsterBrain).RemovePresetPower(30592);
|
||||
//(Brain as MonsterBrain).AddPresetPower(136189); //[136189] Diablo_ClawRip
|
||||
(Brain as MonsterBrain).AddPresetPower(136223); //Diablo_RingOfFire
|
||||
(Brain as MonsterBrain).AddPresetPower(136226); //Diablo_HellSpikes
|
||||
case ActorSno._diablo: //Diablo
|
||||
//(Brain as MonsterBrain).RemovePresetPower(30592);
|
||||
//(Brain as MonsterBrain).AddPresetPower(136189); //[136189] Diablo_ClawRip
|
||||
monsterBrain.AddPresetPower(136223); //Diablo_RingOfFire
|
||||
monsterBrain.AddPresetPower(136226); //Diablo_HellSpikes
|
||||
;
|
||||
|
||||
/*
|
||||
@ -154,30 +156,30 @@ using_Bossbar] = true;
|
||||
|
||||
*/
|
||||
break;
|
||||
case 5350://Leoric King
|
||||
(Brain as MonsterBrain).RemovePresetPower(30592);
|
||||
(Brain as MonsterBrain).AddPresetPower(30496);
|
||||
(Brain as MonsterBrain).AddPresetPower(30504);
|
||||
(Brain as MonsterBrain).AddPresetPower(73824);
|
||||
(Brain as MonsterBrain).AddPresetPower(79334);
|
||||
case ActorSno._skeletonking://Leoric King
|
||||
monsterBrain.RemovePresetPower(30592);
|
||||
monsterBrain.AddPresetPower(30496);
|
||||
monsterBrain.AddPresetPower(30504);
|
||||
monsterBrain.AddPresetPower(73824);
|
||||
monsterBrain.AddPresetPower(79334);
|
||||
break;
|
||||
case 3526://Butcher
|
||||
(Brain as MonsterBrain).AddPresetPower(83008);
|
||||
case ActorSno._butcher://Butcher
|
||||
monsterBrain.AddPresetPower(83008);
|
||||
break;
|
||||
case 62975://Belial (small)
|
||||
case ActorSno._belial_trueform://Belial (small)
|
||||
this.HasLoot = false;
|
||||
break;
|
||||
case 3349://Belial (big)
|
||||
(Brain as MonsterBrain).AddPresetPower(152540);
|
||||
case ActorSno._belial://Belial (big)
|
||||
monsterBrain.AddPresetPower(152540);
|
||||
break;
|
||||
case 6031://Maghda
|
||||
(Brain as MonsterBrain).AddPresetPower(131744); //summon berserker
|
||||
//(Brain as MonsterBrain).AddPresetPower(131745); //mothDust
|
||||
(Brain as MonsterBrain).AddPresetPower(131749); //teleport
|
||||
case ActorSno._maghda://Maghda
|
||||
monsterBrain.AddPresetPower(131744); //summon berserker
|
||||
//(Brain as MonsterBrain).AddPresetPower(131745); //mothDust
|
||||
monsterBrain.AddPresetPower(131749); //teleport
|
||||
break;
|
||||
case 87642://Gluttony
|
||||
(Brain as MonsterBrain).AddPresetPower(93676); //gas cloud
|
||||
(Brain as MonsterBrain).AddPresetPower(211292); //slime spawn
|
||||
case ActorSno._gluttony://Gluttony
|
||||
monsterBrain.AddPresetPower(93676); //gas cloud
|
||||
monsterBrain.AddPresetPower(211292); //slime spawn
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -201,7 +203,7 @@ using_Bossbar] = true;
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 196102)
|
||||
if (this.SNO == ActorSno._terrordemon_a_unique_1000monster)
|
||||
{
|
||||
this.Destroy();
|
||||
return false;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -11,11 +12,11 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(460429)]
|
||||
[HandledSNO(ActorSno._challenge_rift_inspect_armorrack)]
|
||||
class CR_Glass : Gizmo
|
||||
{
|
||||
public CR_Glass(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CR_Glass(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -22,21 +23,20 @@ using System.Threading.Tasks;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//5747
|
||||
[HandledSNO(5744, 89503 // trDun_cath_Chandilier_Trap.acr
|
||||
[HandledSNO(
|
||||
ActorSno._trdun_cath_chandelier_trap, ActorSno._trdun_cath_braizer_trap // trDun_cath_Chandilier_Trap.acr
|
||||
)]
|
||||
class CathedralLamp : Gizmo
|
||||
{
|
||||
public CathedralLamp(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CathedralLamp(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private int[] Unbreakables = new int[] { 81699, 5744, 89503 };
|
||||
|
||||
public void ReceiveDamage(Actor source, float damage)
|
||||
{
|
||||
if (this.ActorSNO.Id == 225252 && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
if (this.SNO == ActorSno._trout_highlands_goatman_totem_gharbad && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
|
||||
World.BroadcastIfRevealed(plr => new FloatingNumberMessage
|
||||
{
|
||||
@ -48,7 +48,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(Attributes[GameAttribute.Hitpoints_Cur] - damage, 0);
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.Unbreakables.Contains(this.ActorSNO.Id))
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.SNO.IsUndestroyable())
|
||||
Die(source);
|
||||
}
|
||||
|
||||
@ -56,7 +56,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
base.OnTargeted(null, null);
|
||||
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.SNO);
|
||||
|
||||
if (this.AnimationSet.TagMapAnimDefault.ContainsKey(AnimationSetKeys.DeathDefault))
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -21,21 +22,20 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(5786 // trDun_cath_Chandilier_Trap.acr
|
||||
[HandledSNO(
|
||||
ActorSno._trdun_cath_wallcollapse_01// trDun_cath_Chandilier_Trap.acr
|
||||
)]
|
||||
class CathedralWall : Gizmo
|
||||
{
|
||||
public CathedralWall(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CathedralWall(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private int[] Unbreakables = new int[] { 81699, 5744, 89503 };
|
||||
|
||||
public void ReceiveDamage(Actor source, float damage)
|
||||
{
|
||||
if (this.ActorSNO.Id == 225252 && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
if (this.SNO == ActorSno._trout_highlands_goatman_totem_gharbad && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
|
||||
World.BroadcastIfRevealed(plr => new FloatingNumberMessage
|
||||
{
|
||||
@ -47,7 +47,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
Attributes[GameAttribute.Hitpoints_Cur] = Math.Max(Attributes[GameAttribute.Hitpoints_Cur] - damage, 0);
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.Unbreakables.Contains(this.ActorSNO.Id))
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.SNO.IsUndestroyable())
|
||||
Die(source);
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
base.OnTargeted(null, null);
|
||||
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.SNO);
|
||||
|
||||
if (this.AnimationSet.TagMapAnimDefault.ContainsKey(AnimationSetKeys.DeathDefault))
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -25,11 +26,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(416137 /* x1_OpenWorld_LootRunObelisk_B.acr */)]
|
||||
[HandledSNO(ActorSno._p2_weeklychallenge_obelisk /* x1_OpenWorld_LootRunObelisk_B.acr */)]
|
||||
public sealed class ChallengeObelisk : Gizmo
|
||||
{
|
||||
public ChallengeObelisk(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public ChallengeObelisk(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
@ -52,11 +53,12 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
CollFlags = 0;
|
||||
|
||||
TickTimer Timeout = new SecondsTickTimer(this.World.Game, 3.5f);
|
||||
var Boom = System.Threading.Tasks.Task<bool>.Factory.StartNew(() => WaitToSpawn(Timeout));
|
||||
var Boom = Task<bool>.Factory.StartNew(() => WaitToSpawn(Timeout));
|
||||
Boom.ContinueWith(delegate
|
||||
{
|
||||
this.World.GetActorBySNO(473334).SetVisible(true);
|
||||
this.World.GetActorBySNO(473334).Reveal(player);
|
||||
var actor = this.World.GetActorBySNO(ActorSno._x1_openworld_challenge_rifts_portal);
|
||||
actor.SetVisible(true);
|
||||
actor.Reveal(player);
|
||||
|
||||
World.BroadcastIfRevealed(plr => new ACDCollFlagsMessage()
|
||||
{
|
||||
@ -73,8 +75,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
return false;
|
||||
if (!Attributes[GameAttribute.Operatable])
|
||||
{
|
||||
this.World.GetActorBySNO(473334).SetVisible(false);
|
||||
this.World.GetActorBySNO(473334).Unreveal(player);
|
||||
var actor = this.World.GetActorBySNO(ActorSno._x1_openworld_challenge_rifts_portal);
|
||||
actor.SetVisible(false);
|
||||
actor.Unreveal(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -19,8 +20,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
private int NamePrefix = -1;
|
||||
private int NameSuffix = -1;
|
||||
|
||||
public Champion(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Champion(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Hitpoints_Max] *= 4.0f;
|
||||
this.Attributes[GameAttribute.Immune_To_Charm] = true;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -13,8 +14,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
private bool _checkpointReached = false;
|
||||
|
||||
public Checkpoint(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags, false)
|
||||
public Checkpoint(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags, false)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
@ -15,11 +16,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(364559, 365097)]
|
||||
[HandledSNO(ActorSno._x1_global_chest_cursedchest, ActorSno._x1_global_chest_cursedchest_b)]
|
||||
class CursedChest : Gizmo
|
||||
{
|
||||
public CursedChest(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CursedChest(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
}
|
||||
|
||||
@ -12,14 +12,19 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Misc;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(364601, 368169)]
|
||||
[HandledSNO(
|
||||
//364601, 368169 - not found, possible values below
|
||||
ActorSno._p4_bountygrounds_cursedshrine,
|
||||
ActorSno._p4_bountygrounds_cursedshrine_a5
|
||||
)]
|
||||
class CursedShrine : Gizmo
|
||||
{
|
||||
public CursedShrine(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CursedShrine(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -29,22 +30,28 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class DesctructibleLootContainer : Gizmo
|
||||
{
|
||||
private static readonly ActorSno[] tombs = new ActorSno[]
|
||||
{
|
||||
ActorSno._trout_oldtristramtombstonedestructiblea,
|
||||
ActorSno._trout_oldtristramtombstonedestructibled,
|
||||
ActorSno._trout_oldtristramtombstonedestructiblee,
|
||||
ActorSno._trout_oldtristramtombstonedestructibleb,
|
||||
ActorSno._tombstone_a_wilderness_trout_wilderness,
|
||||
ActorSno._tombstone_c_wilderness_trout_wilderness,
|
||||
ActorSno._tombstone_b_wilderness_trout_wilderness
|
||||
};
|
||||
|
||||
private bool haveDrop;
|
||||
|
||||
public DesctructibleLootContainer(World world, int snoId, bool haveDrop, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public DesctructibleLootContainer(World world, ActorSno sno, bool haveDrop, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.haveDrop = haveDrop;
|
||||
}
|
||||
|
||||
private List<int> tombs = new List<int>() { 6155, 6158, 6159, 6156, 74909, 75023, 75132 };
|
||||
|
||||
private int[] Unbreakables = new int[] { 81699, 5744, 89503 };
|
||||
|
||||
public void ReceiveDamage(Actor source, float damage /* critical, type */)
|
||||
{
|
||||
if (this.ActorSNO.Id == 225252 && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
if (this.SNO == ActorSno._trout_highlands_goatman_totem_gharbad && this.World.Game.CurrentSideQuest != 225253) return;
|
||||
|
||||
World.BroadcastIfRevealed(plr => new FloatingNumberMessage
|
||||
{
|
||||
@ -58,7 +65,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.Unbreakables.Contains(this.ActorSNO.Id))
|
||||
if (Attributes[GameAttribute.Hitpoints_Cur] == 0 && !this.SNO.IsUndestroyable())
|
||||
{
|
||||
Die(source);
|
||||
}
|
||||
@ -92,9 +99,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
}
|
||||
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.ActorSNO.Id);
|
||||
Logger.Trace("Breaked barricade, id: {0}", this.SNO);
|
||||
|
||||
if (source != null && source is Player && this.tombs.Contains(this.ActorSNO.Id))
|
||||
if (source != null && source is Player && tombs.Contains(this.SNO))
|
||||
{
|
||||
(source as Player).AddAchievementCounter(74987243307171, 1);
|
||||
}
|
||||
@ -124,28 +131,28 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
//handling quest triggers
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
if (this.World.Game.QuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.KillMonster)
|
||||
{
|
||||
this.World.Game.QuestProgress.UpdateCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.QuestProgress.UpdateCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.QuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
}
|
||||
else
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.MonsterFromGroup)
|
||||
{
|
||||
this.World.Game.QuestProgress.UpdateCounter(this.ActorSNO.Id);
|
||||
this.World.Game.QuestProgress.UpdateCounter((int)this.SNO);
|
||||
}
|
||||
}
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey(this.ActorSNO.Id))
|
||||
else if (this.World.Game.SideQuestProgress.QuestTriggers.ContainsKey((int)this.SNO))
|
||||
{
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id];
|
||||
var trigger = this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO];
|
||||
if (trigger.triggerType == DiIiS_NA.Core.MPQ.FileFormats.QuestStepObjectiveType.KillMonster)
|
||||
{
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter(this.ActorSNO.Id);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[this.ActorSNO.Id].counter)
|
||||
this.World.Game.SideQuestProgress.UpdateSideCounter((int)this.SNO);
|
||||
if (trigger.count == this.World.Game.SideQuestProgress.QuestTriggers[(int)this.SNO].counter)
|
||||
trigger.questEvent.Execute(this.World); // launch a questEvent
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -27,13 +28,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(175810)]
|
||||
[HandledSNO(ActorSno._caout_stingingwinds_khamsin_gate)]
|
||||
class Door : Gizmo
|
||||
{
|
||||
public bool isOpened = false;
|
||||
public Portal NearestPortal = null;
|
||||
public Door(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Door(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
var Portals = GetObjectsInRange<Portal>(10f);
|
||||
if (Portals.Count > 0)
|
||||
@ -48,14 +49,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 167185) return false;
|
||||
if (this.ActorSNO.Id == 207615 && this.World.WorldSNO.Id != 158593) return false; //dakab door
|
||||
if (this.ActorSNO.Id == 153836 && this.World.WorldSNO.Id == 158593) return false; //not dakab door
|
||||
if (this.SNO == ActorSno._trout_cultists_summoning_portal_b) return false;
|
||||
if (this.SNO == ActorSno._a2dun_aqd_godhead_door_largepuzzle && this.World.SNO != WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //dakab door
|
||||
if (this.SNO == ActorSno._a2dun_aqd_godhead_door && this.World.SNO == WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //not dakab door
|
||||
|
||||
if (this.ActorSNO.Id == 220337) //Treasure Room door
|
||||
if (this.SNO == ActorSno._a2dun_zolt_random_portal_timed) //Treasure Room door
|
||||
this.isOpened = true;
|
||||
|
||||
if (this.ActorSNO.Id == 178161 && (float)DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.NextDouble() < 0.3f) //Mysterious Cave door
|
||||
if (this.SNO == ActorSno._caout_oasis_mine_entrance_a && (float)DiIiS_NA.Core.Helpers.Math.FastRandom.Instance.NextDouble() < 0.3f) //Mysterious Cave door
|
||||
this.isOpened = true;
|
||||
|
||||
if (!base.Reveal(player))
|
||||
|
||||
@ -18,6 +18,7 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
using DiIiS_NA.Core.Logging;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Portal;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
@ -29,19 +30,19 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
private ResolvedPortalDestination Destination { get; set; }
|
||||
|
||||
public DungeonStonePortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public DungeonStonePortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
|
||||
//this.Field2 = 0x9;//16;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
//this.Attributes[GameAttribute.MinimapIconOverride] = 218394;
|
||||
if (this.World.WorldSNO.Name.ToLower().Contains("x1_lr_tileset"))
|
||||
if (this.World.SNO.IsDungeon())
|
||||
{
|
||||
this.Destination = new ResolvedPortalDestination()
|
||||
{
|
||||
DestLevelAreaSNO = 332339,
|
||||
WorldSNO = 332336,
|
||||
WorldSNO = (int)WorldSno.x1_tristram_adventure_mode_hub,
|
||||
StartingPointActorTag = 24
|
||||
};
|
||||
}
|
||||
@ -52,10 +53,10 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
if (!base.Reveal(player))
|
||||
return false;
|
||||
|
||||
if (World.WorldSNO.Id == 92126)
|
||||
if (World.SNO == WorldSno.trdun_crypt_skeletonkingcrown_02)
|
||||
{
|
||||
Portal Exit = null;
|
||||
foreach (Actor actor in World.Game.GetWorld(154587).GetStartingPointById(172).GetActorsInRange(120f))
|
||||
foreach (Actor actor in World.Game.GetWorld(WorldSno.trdun_crypt_skeletonkingcrown_00).GetStartingPointById(172).GetActorsInRange(120f))
|
||||
if (actor is Portal)
|
||||
Exit = actor as Portal;
|
||||
if (Exit != null)
|
||||
@ -77,8 +78,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
if (this.Destination.StartingPointActorTag != 0)
|
||||
{
|
||||
StartingPoint NeededStartingPoint = world.GetStartingPointById(this.Destination.StartingPointActorTag);
|
||||
var DestWorld = world.Game.GetWorld(this.Destination.WorldSNO);
|
||||
var StartingPoints = DestWorld.GetActorsBySNO(5502);
|
||||
var DestWorld = world.Game.GetWorld((WorldSno)this.Destination.WorldSNO);
|
||||
var StartingPoints = DestWorld.GetActorsBySNO(ActorSno._start_location_0);
|
||||
foreach (var ST in StartingPoints)
|
||||
{
|
||||
if (ST.CurrentScene.SceneSNO.Id == this.Destination.StartingPointActorTag)
|
||||
@ -96,14 +97,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
Logger.Debug("(OnTargeted) Portal has been activated ");
|
||||
|
||||
if (this.World.WorldSNO.Name.ToLower().Contains("x1_lr_tileset"))
|
||||
if (this.World.SNO.IsDungeon())
|
||||
{
|
||||
this.Destination.DestLevelAreaSNO = 332339;
|
||||
this.Destination.WorldSNO = 332336;
|
||||
this.Destination.WorldSNO = (int)WorldSno.x1_tristram_adventure_mode_hub;
|
||||
this.Destination.StartingPointActorTag = 24;
|
||||
}
|
||||
|
||||
var world = this.World.Game.GetWorld(this.Destination.WorldSNO);
|
||||
var world = this.World.Game.GetWorld((WorldSno)this.Destination.WorldSNO);
|
||||
|
||||
if (world == null)
|
||||
{
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -21,11 +22,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(451547)] //EquipmentManagerTest
|
||||
[HandledSNO(ActorSno._equipmentmanagertest)] //EquipmentManagerTest
|
||||
class EquipmentManager : InteractiveNPC
|
||||
{
|
||||
public EquipmentManager(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public EquipmentManager(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -8,20 +9,20 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
129345, //maghda
|
||||
5360, //Leoric ghost
|
||||
211014, //Maghda event
|
||||
215247, //Diablo_EndGame
|
||||
186130, //DemonVoiceover
|
||||
321479, 321451, 321454, //A5 voice actors
|
||||
175310, //PT_Mystic_NoVendor_NonGlobalFollower
|
||||
340101, //x1_Urzael_Invisible
|
||||
373456 //Malthael ghost
|
||||
ActorSno._maghda_a_tempprojection, //maghda
|
||||
ActorSno._skeletonking_ghost, //Leoric ghost
|
||||
ActorSno._maghda_nolaugh, //Maghda event
|
||||
ActorSno._diablo_endgame, //Diablo_EndGame
|
||||
ActorSno._demonvoiceover, //DemonVoiceover
|
||||
ActorSno._x1_westm_heroworship03_vo, ActorSno._x1_westm_heroworship01_vo, ActorSno._x1_westm_heroworship02_vo, //A5 voice actors
|
||||
ActorSno._pt_mystic_novendor_nonglobalfollower, //PT_Mystic_NoVendor_NonGlobalFollower
|
||||
ActorSno._x1_urzael_invisible, //x1_Urzael_Invisible
|
||||
ActorSno._x1_malthael_deathorbevent //Malthael ghost
|
||||
)]
|
||||
public class Ghost : InteractiveNPC
|
||||
{
|
||||
public Ghost(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Ghost(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.CollFlags = 0;
|
||||
this.WalkSpeed = 0;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -18,15 +19,14 @@ using System;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
5984, //treasureGoblin_A
|
||||
5985, //treasureGoblin_B
|
||||
5987, //treasureGoblin_C
|
||||
5988 //treasureGoblin_D
|
||||
ActorSno._treasuregoblin_a, //treasureGoblin_A
|
||||
ActorSno._treasuregoblin_b, //treasureGoblin_B
|
||||
ActorSno._treasuregoblin_c //treasureGoblin_C
|
||||
)]
|
||||
public class Goblin : Monster
|
||||
{
|
||||
public Goblin(World world, int snoId, TagMap tags)//, int level = 1)
|
||||
: base(world, snoId, tags)
|
||||
public Goblin(World world, ActorSno sno, TagMap tags)//, int level = 1)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
// Override minimap icon in markerset tags
|
||||
this.WalkSpeed = 0;
|
||||
@ -44,7 +44,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.World.WorldSNO.Id == 180550 || this.World.WorldSNO.Id == 107050)
|
||||
if (this.World.SNO == WorldSno.a1dun_spidercave_01 || this.World.SNO == WorldSno.trout_oldtistram_cellar_3)
|
||||
{
|
||||
this.Destroy();
|
||||
return false;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
|
||||
//Blizzless Project 2022
|
||||
using System.Linq;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -12,13 +13,13 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(4860 /* PlayerHeadstone.acr */)]
|
||||
[HandledSNO(ActorSno._playerheadstone /* PlayerHeadstone.acr */)]
|
||||
class Headstone : Gizmo
|
||||
{
|
||||
public int playerIndex { get; set; }
|
||||
|
||||
public Headstone(World world, int snoId, TagMap tags, int playerIndex = -1)
|
||||
: base(world, snoId, tags)
|
||||
public Headstone(World world, ActorSno sno, TagMap tags, int playerIndex = -1)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.playerIndex = playerIndex;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using System.Linq;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -11,11 +12,16 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(141246, 226343, 226345, 309879)]
|
||||
[HandledSNO(
|
||||
ActorSno._priest_male_b_nolook,
|
||||
ActorSno._priest_caldeum,
|
||||
ActorSno._priest_bastionskeep_healer,
|
||||
ActorSno._x1_a5_westmhub_healer
|
||||
)]
|
||||
public sealed class Healer : InteractiveNPC
|
||||
{
|
||||
public Healer(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Healer(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -21,8 +22,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class Healthwell : Gizmo
|
||||
{
|
||||
public Healthwell(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Healthwell(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Attributes[GameAttribute.MinimapActive] = true;
|
||||
Attributes[GameAttribute.Gizmo_State] = 0;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.Math;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
@ -25,14 +26,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class HearthPortal : Gizmo
|
||||
{
|
||||
public int ReturnWorld = -1;
|
||||
public WorldSno ReturnWorld = WorldSno.__NONE;
|
||||
|
||||
public Vector3D ReturnPosition = null;
|
||||
|
||||
public Player Owner = null;
|
||||
|
||||
public HearthPortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public HearthPortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
this.SetVisible(false);
|
||||
@ -50,7 +51,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.World.Game.QuestManager.SideQuests.ContainsKey(120396) && this.World.Game.QuestManager.SideQuests[120396].Completed && this.ReturnWorld == 50596) return;
|
||||
if (this.World.Game.QuestManager.SideQuests.ContainsKey(120396) && this.World.Game.QuestManager.SideQuests[120396].Completed && this.ReturnWorld == WorldSno.a2dun_zolt_timed01_level01) return;
|
||||
|
||||
Vector3D exCheckpoint = player.CheckPointPosition;
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -23,13 +24,34 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(81610, 105372, 81609, 107419, 106354, 115928, 144328, 176826)]
|
||||
[HandledSNO(
|
||||
ActorSno._a1_genericvendor_tinker,
|
||||
ActorSno._a1_uniquevendor_alchemist,
|
||||
ActorSno._a1_uniquevendor_armorer,
|
||||
ActorSno._a1_uniquevendor_curios,
|
||||
ActorSno._a1_uniquevendor_weaponsmith,
|
||||
ActorSno._a2_uniquevendor_event_mapvendor,
|
||||
ActorSno._a2_uniquevendor_tinker,
|
||||
ActorSno._a3_uniquevendor_alchemist
|
||||
)]
|
||||
public class HiddenVendor : Vendor
|
||||
{
|
||||
// TODO: extract
|
||||
private static readonly Dictionary<ActorSno, ulong> criteria = new Dictionary<ActorSno, ulong>
|
||||
{
|
||||
[ActorSno._a1_genericvendor_tinker] = 74987243309911,
|
||||
[ActorSno._a1_uniquevendor_alchemist] = 74987243309912,
|
||||
[ActorSno._a1_uniquevendor_armorer] = 74987243309913,
|
||||
[ActorSno._a1_uniquevendor_curios] = 74987243309914,
|
||||
[ActorSno._a1_uniquevendor_weaponsmith] = 74987243309915,
|
||||
[ActorSno._a2_uniquevendor_event_mapvendor] = 74987243309918,
|
||||
[ActorSno._a2_uniquevendor_tinker] = 74987243309920,
|
||||
[ActorSno._a3_uniquevendor_alchemist] = 74987243309922
|
||||
};
|
||||
private bool Enabled = false;
|
||||
|
||||
public HiddenVendor(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public HiddenVendor(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Enabled = (FastRandom.Instance.Next(100) < 40);
|
||||
}
|
||||
@ -57,33 +79,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
public override void OnTargeted(PlayerSystem.Player player, TargetMessage message)
|
||||
{
|
||||
base.OnTargeted(player, message);
|
||||
switch (this.ActorSNO.Id)
|
||||
{
|
||||
case 81610:
|
||||
player.GrantCriteria(74987243309911);
|
||||
break;
|
||||
case 105372:
|
||||
player.GrantCriteria(74987243309912);
|
||||
break;
|
||||
case 81609:
|
||||
player.GrantCriteria(74987243309913);
|
||||
break;
|
||||
case 107419:
|
||||
player.GrantCriteria(74987243309914);
|
||||
break;
|
||||
case 106354:
|
||||
player.GrantCriteria(74987243309915);
|
||||
break;
|
||||
case 115928:
|
||||
player.GrantCriteria(74987243309918);
|
||||
break;
|
||||
case 144328:
|
||||
player.GrantCriteria(74987243309920);
|
||||
break;
|
||||
case 176826:
|
||||
player.GrantCriteria(74987243309922);
|
||||
break;
|
||||
}
|
||||
if (criteria.ContainsKey(SNO))
|
||||
player.GrantCriteria(criteria[SNO]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,26 +10,27 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
[HandledSNO(4062 /* Enchantress.acr */)]
|
||||
[HandledSNO(ActorSno._enchantress /* Enchantress.acr */)]
|
||||
public class Enchantress : Hireling
|
||||
{
|
||||
public Enchantress(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Enchantress(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4062;
|
||||
hirelingSNO = 4482;
|
||||
proxySNO = 192942;
|
||||
mainSNO = ActorSno._enchantress;
|
||||
hirelingSNO = ActorSno._hireling_enchantress;
|
||||
proxySNO = ActorSno._hireling_enchantress_proxy;
|
||||
skillKit = 484938;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Enchantress");
|
||||
this.Attributes[GameAttribute.Hireling_Class] = 3;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Enchantress(world, snoId, tags);
|
||||
return new Enchantress(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
||||
@ -36,14 +36,15 @@ using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
using DiIiS_NA.GameServer.GSSystem.ItemsSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Hireling;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
public class Hireling : InteractiveNPC, IUpdateable
|
||||
{
|
||||
protected int mainSNO = -1;
|
||||
protected int hirelingSNO = -1;
|
||||
protected int proxySNO = -1;
|
||||
protected ActorSno mainSNO = ActorSno.__NONE;
|
||||
protected ActorSno hirelingSNO = ActorSno.__NONE;
|
||||
protected ActorSno proxySNO = ActorSno.__NONE;
|
||||
protected int skillKit = -1;
|
||||
protected int hirelingGBID = -1;
|
||||
|
||||
@ -51,15 +52,15 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
// Resource generation timing
|
||||
private int _lastResourceUpdateTick;
|
||||
|
||||
public bool IsProxy { get { return ActorSNO.Id == proxySNO; } }
|
||||
public bool IsHireling { get { return ActorSNO.Id == hirelingSNO; } }
|
||||
public bool HasHireling { get { return this.hirelingSNO != -1; } }
|
||||
public bool HasProxy { get { return this.proxySNO != -1; } }
|
||||
public bool IsProxy { get { return SNO == proxySNO; } }
|
||||
public bool IsHireling { get { return SNO == hirelingSNO; } }
|
||||
public bool HasHireling { get { return this.hirelingSNO != ActorSno.__NONE; } }
|
||||
public bool HasProxy { get { return this.proxySNO != ActorSno.__NONE; } }
|
||||
public int PetType { get { return IsProxy ? 22 : 0; } }
|
||||
private Dictionary<Player, Dictionary<int, Item>> _equipment = new Dictionary<Player, Dictionary<int, Item>>();
|
||||
|
||||
public Hireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Hireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
Interactions.Add(new HireInteraction());
|
||||
@ -156,7 +157,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
|
||||
}
|
||||
|
||||
public virtual Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public virtual Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
@ -231,7 +232,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
|
||||
public override void OnHire(Player player)
|
||||
{
|
||||
if (hirelingSNO == -1)
|
||||
if (hirelingSNO == ActorSno.__NONE)
|
||||
return;
|
||||
|
||||
if (this.World.Game.Players.Count > 1) return;
|
||||
@ -274,7 +275,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
}
|
||||
if (player.ActiveHireling == null)
|
||||
return;
|
||||
if (proxySNO == -1)
|
||||
if (proxySNO == ActorSno.__NONE)
|
||||
return;
|
||||
|
||||
if (IsHireling || IsProxy)
|
||||
@ -447,7 +448,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
Owner = player.PlayerIndex,
|
||||
Index = 10,
|
||||
PetId = this.DynamicID(player),
|
||||
Type = this.ActorSNO.Id == 274457 ? 29 : 0,
|
||||
Type = this.SNO == ActorSno._x1_malthael_npc ? 29 : 0,
|
||||
});
|
||||
|
||||
return true;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -21,15 +22,16 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
//[HandledSNO(144681 /* Leah_Party.acr */)]
|
||||
public class Leah : Hireling
|
||||
// TODO: Check for copy-paste from Scoundrel
|
||||
//[HandledSNO(144681 /* Leah_Party.acr */)]
|
||||
public class Leah : Hireling
|
||||
{
|
||||
public Leah(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Leah(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4580;
|
||||
hirelingSNO = 52694;
|
||||
proxySNO = 192941;
|
||||
mainSNO = ActorSno._leah;
|
||||
hirelingSNO = ActorSno._hireling_scoundrel;
|
||||
proxySNO = ActorSno._hireling_scoundrel_proxy;
|
||||
skillKit = 0x8AFE;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Scoundrel");
|
||||
Attributes[GameAttribute.Hireling_Class] = 4;
|
||||
@ -49,9 +51,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Leah(world, snoId, tags);
|
||||
return new Leah(world, sno, tags);
|
||||
}
|
||||
|
||||
public override bool Reveal(Player player)
|
||||
|
||||
@ -10,18 +10,19 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
public class MalthaelHireling : Hireling
|
||||
{
|
||||
public MalthaelHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public MalthaelHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
//Brain = new AISystem.Brains.HirelingBrain(this);
|
||||
mainSNO = 365908;
|
||||
hirelingSNO = 274457;
|
||||
proxySNO = 0x0002F1AC;
|
||||
mainSNO = ActorSno._x1_malthael_npc_nocollision;
|
||||
hirelingSNO = ActorSno._x1_malthael_npc;
|
||||
proxySNO = ActorSno._hireling_templar_proxy;
|
||||
skillKit = 484941;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Templar");
|
||||
this.Attributes[GameAttribute.Hireling_Class] = 0;
|
||||
@ -29,9 +30,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
this.Attributes[GameAttribute.Team_Override] = 2;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new MalthaelHireling(world, snoId, tags);
|
||||
return new MalthaelHireling(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
||||
@ -10,26 +10,27 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
[HandledSNO(4644 /* Scoundrel.acr */)]
|
||||
[HandledSNO(ActorSno._scoundrel /* Scoundrel.acr */)]
|
||||
public class Scoundrel : Hireling
|
||||
{
|
||||
public Scoundrel(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Scoundrel(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4644;
|
||||
hirelingSNO = 52694;
|
||||
proxySNO = 192941;
|
||||
mainSNO = ActorSno._scoundrel;
|
||||
hirelingSNO = ActorSno._hireling_scoundrel;
|
||||
proxySNO = ActorSno._hireling_scoundrel_proxy;
|
||||
skillKit = 484937;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Scoundrel");
|
||||
Attributes[GameAttribute.Hireling_Class] = 2;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Scoundrel(world, snoId, tags);
|
||||
return new Scoundrel(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
||||
@ -10,26 +10,27 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.Core.Storage.AccountDataBase.Entities;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Hash;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings
|
||||
{
|
||||
[HandledSNO(4538 /* Templar.acr */)]
|
||||
[HandledSNO(ActorSno._templar /* Templar.acr */)]
|
||||
public class Templar : Hireling
|
||||
{
|
||||
public Templar(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Templar(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
mainSNO = 4538;
|
||||
hirelingSNO = 0x0000CDD5;
|
||||
proxySNO = 0x0002F1AC;
|
||||
mainSNO = ActorSno._templar;
|
||||
hirelingSNO = ActorSno._hireling_templar;
|
||||
proxySNO = ActorSno._hireling_templar_proxy;
|
||||
skillKit = 484941;
|
||||
hirelingGBID = StringHashHelper.HashItemName("Templar");
|
||||
this.Attributes[GameAttribute.Hireling_Class] = 1;
|
||||
}
|
||||
|
||||
public override Hireling CreateHireling(MapSystem.World world, int snoId, TagMap tags)
|
||||
public override Hireling CreateHireling(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
{
|
||||
return new Templar(world, snoId, tags);
|
||||
return new Templar(world, sno, tags);
|
||||
}
|
||||
|
||||
public void SetSkill(Player player, int SkillSNOId)
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using System;
|
||||
@ -15,20 +16,20 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(
|
||||
//act 1
|
||||
109467,
|
||||
ActorSno._trout_barkeep,
|
||||
//act 2
|
||||
180291,
|
||||
ActorSno._a2_uniquevendor_innkeeper,
|
||||
//act 3
|
||||
181473,
|
||||
ActorSno._a3_uniquevendor_innkeeper,
|
||||
//act 4
|
||||
182413,
|
||||
ActorSno._a4_uniquevendor_innkeeper,
|
||||
//act 5
|
||||
309718
|
||||
)]
|
||||
ActorSno._x1_a5_uniquevendor_innkeeper
|
||||
)]
|
||||
public class Innkeeper : Vendor
|
||||
{
|
||||
public Innkeeper(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Innkeeper(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using System;
|
||||
@ -13,37 +14,36 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(361241)]
|
||||
[HandledSNO(ActorSno._x1_randomitemnpc)]
|
||||
public class Kadala : Vendor
|
||||
{
|
||||
public Kadala(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
private static readonly int[] itemGbIds = new int[]
|
||||
{
|
||||
-1492848355,
|
||||
-594428401,
|
||||
2050033703,
|
||||
-2026108002,
|
||||
-537237168,
|
||||
-1493063970,
|
||||
-2010009315,
|
||||
1281756953,
|
||||
-1492484569,
|
||||
1816611999,
|
||||
-767866790,
|
||||
-1099096773,
|
||||
-1780286480,
|
||||
215071258,
|
||||
-1492657844,
|
||||
-1843121997
|
||||
};
|
||||
public Kadala(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
}
|
||||
|
||||
protected override List<ItemsSystem.Item> GetVendorItems()
|
||||
{
|
||||
var list = new List<ItemsSystem.Item>
|
||||
{
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1492848355), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-594428401), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(2050033703), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-2026108002), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-537237168), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1493063970), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-2010009315), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(1281756953), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1492484569), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(1816611999), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-767866790), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1099096773), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1780286480), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(215071258), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1492657844), 1, false),
|
||||
ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(-1843121997), 1, false)
|
||||
};
|
||||
|
||||
return list;
|
||||
return itemGbIds.Select(x => ItemsSystem.ItemGenerator.CookFromDefinition(this.World, ItemsSystem.ItemGenerator.GetItemDefinition(x), 1, false)).ToList();
|
||||
}
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
|
||||
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -31,26 +32,26 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(96993)]
|
||||
[HandledSNO(ActorSno._a1dun_cath_chest_rare)]
|
||||
class LegendaryChest : LootContainer
|
||||
{
|
||||
public bool ChestActive = false;
|
||||
|
||||
public LegendaryChest(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LegendaryChest(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.NameSNOId = 108122;
|
||||
this.NameSNO = ActorSno._caout_stingingwinds_chest;
|
||||
this.Field7 = 1;
|
||||
}
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (!this.ChestActive) return false;
|
||||
return base.Reveal(player);
|
||||
}
|
||||
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, TargetMessage message)
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
if (this.Attributes[GameAttribute.Disabled]) return;
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -34,32 +35,32 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
private bool haveDrop = false;
|
||||
public bool rewardChestAvailable = true;
|
||||
|
||||
public LootContainer(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LootContainer(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
if (this.ActorSNO.Id == 200872) this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
if (this.SNO == ActorSno._a3dunrmpt_interactives_signal_fire_a_prop) this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
|
||||
if (this.ActorSNO.Name.ToLower().Contains("chest") || this.ActorSNO.Name.ToLower().Contains("corpse")) haveDrop = true;
|
||||
if (this.SNO.IsChest() || this.SNO.IsCorpse()) haveDrop = true;
|
||||
|
||||
switch (snoId)
|
||||
switch (sno)
|
||||
{
|
||||
case 79319: //bloody
|
||||
case ActorSno._trout_highlands_chest_bloody: //bloody
|
||||
this.Quality = 1;
|
||||
break;
|
||||
case 62860: //rare
|
||||
case 101500: //Zolt_rare
|
||||
case 363725: //event
|
||||
case ActorSno._trout_fields_chest_rare: //rare
|
||||
case ActorSno._a2dun_zolt_chest_rare: //Zolt_rare
|
||||
case ActorSno._x1_global_chest_startsclean: //event
|
||||
this.Quality = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (snoId == 363725) rewardChestAvailable = false;
|
||||
if (sno == ActorSno._x1_global_chest_startsclean) rewardChestAvailable = false;
|
||||
}
|
||||
|
||||
public override bool Reveal(PlayerSystem.Player player)
|
||||
public override bool Reveal(Player player)
|
||||
{
|
||||
if (this.ActorSNO.Id == 190524 && this.World.WorldSNO.Id != 158593) return false; //dakab chest
|
||||
if (this.ActorSNO.Id == 190708 && this.World.WorldSNO.Id == 158593) return false; //not dakab chest
|
||||
if (this.SNO == ActorSno._a2dun_aqd_chest_special_facepuzzle_large && this.World.SNO != WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //dakab chest
|
||||
if (this.SNO == ActorSno._a2dun_aqd_chest_rare_facepuzzlesmall && this.World.SNO == WorldSno.a2dun_aqd_oasis_randomfacepuzzle_large) return false; //not dakab chest
|
||||
|
||||
if (!rewardChestAvailable) return false; //event reward chest
|
||||
|
||||
@ -78,143 +79,139 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
|
||||
|
||||
public override void OnTargeted(PlayerSystem.Player player, TargetMessage message)
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
if (this.ActorSNO.Id == 450254)
|
||||
if (this.SNO == ActorSno._p4_setdung_totem_cru_thorns)
|
||||
return;
|
||||
|
||||
if (this.Attributes[GameAttribute.Disabled]) return;
|
||||
|
||||
base.OnTargeted(player, message);
|
||||
|
||||
player.AddAchievementCounter(74987243307152, 1);
|
||||
|
||||
if (ActorData.TagMap.ContainsKey(ActorKeys.Lore))
|
||||
Logger.Debug("Lore detected: {0}", ActorData.TagMap[ActorKeys.Lore].Id);
|
||||
|
||||
if (this.SNO == ActorSno._trout_highlands_manor_firewood) //Leor bone
|
||||
{
|
||||
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -629520052);
|
||||
}
|
||||
if (this.SNO == ActorSno._trout_newtristram_adria_blackmushroom) //Black Mushroom
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -1993550104);
|
||||
}
|
||||
if (this.SNO == ActorSno._caout_oasis_chest_rare_mapvendorcave) //Rainbow Chest
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, 725082635);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this.Attributes[GameAttribute.Disabled]) return;
|
||||
|
||||
base.OnTargeted(player, message);
|
||||
|
||||
player.AddAchievementCounter(74987243307152, 1);
|
||||
|
||||
if (ActorData.TagMap.ContainsKey(ActorKeys.Lore))
|
||||
Logger.Debug("Lore detected: {0}", ActorData.TagMap[ActorKeys.Lore].Id);
|
||||
|
||||
if (this.ActorSNO.Id == 213905) //Leor bone
|
||||
{
|
||||
if (haveDrop)
|
||||
{
|
||||
var dropRates = this.World.Game.IsHardcore ? LootManager.GetSeasonalDropRates((int)this.Quality, Program.MaxLevel) : LootManager.GetDropRates((int)this.Quality, Program.MaxLevel);
|
||||
foreach (var rate in dropRates)
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -629520052);
|
||||
}
|
||||
if (this.ActorSNO.Id == 172948) //Black Mushroom
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, -1993550104);
|
||||
}
|
||||
if (this.ActorSNO.Id == 207706) //Rainbow Chest
|
||||
{
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
this.World.SpawnItem(this, plr, 725082635);
|
||||
}
|
||||
|
||||
if (haveDrop)
|
||||
{
|
||||
var dropRates = this.World.Game.IsHardcore ? LootManager.GetSeasonalDropRates((int)this.Quality, Program.MaxLevel) : LootManager.GetDropRates((int)this.Quality, Program.MaxLevel);
|
||||
foreach (var rate in dropRates)
|
||||
foreach (var plr in this.GetPlayersInRange(30))
|
||||
{
|
||||
float seed = (float)FastRandom.Instance.NextDouble();
|
||||
if (seed < 0.8f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.6f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.5f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.2f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.07f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.04f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.10f)
|
||||
this.World.SpawnRandomPotion(this, plr);
|
||||
if (seed < (rate * (1f + plr.Attributes[GameAttribute.Magic_Find])))
|
||||
{
|
||||
float seed = (float)FastRandom.Instance.NextDouble();
|
||||
if (seed < 0.8f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.6f)
|
||||
this.World.SpawnGold(this, plr);
|
||||
if (seed < 0.5f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.2f)
|
||||
this.World.SpawnRandomCraftItem(this, plr);
|
||||
if (seed < 0.07f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.04f)
|
||||
this.World.SpawnRandomGem(this, plr);
|
||||
if (seed < 0.10f)
|
||||
this.World.SpawnRandomPotion(this, plr);
|
||||
if (seed < (rate * (1f + plr.Attributes[GameAttribute.Magic_Find])))
|
||||
{
|
||||
var lootQuality = this.World.Game.IsHardcore ? LootManager.GetSeasonalLootQuality((int)this.Quality, this.World.Game.Difficulty) : LootManager.GetLootQuality((int)this.Quality, this.World.Game.Difficulty);
|
||||
this.World.SpawnRandomEquip(plr, plr, lootQuality);
|
||||
}
|
||||
else
|
||||
break;
|
||||
var lootQuality = this.World.Game.IsHardcore ? LootManager.GetSeasonalLootQuality((int)this.Quality, this.World.Game.Difficulty) : LootManager.GetLootQuality((int)this.Quality, this.World.Game.Difficulty);
|
||||
this.World.SpawnRandomEquip(plr, plr, lootQuality);
|
||||
}
|
||||
}
|
||||
|
||||
if (GeneratorsSystem.LoreRegistry.Lore.ContainsKey(this.World.WorldSNO.Id) && GeneratorsSystem.LoreRegistry.Lore[this.World.WorldSNO.Id].chests_lore.ContainsKey(this.ActorSNO.Id))
|
||||
foreach (var p in this.GetPlayersInRange(30))
|
||||
foreach (int loreId in GeneratorsSystem.LoreRegistry.Lore[this.World.WorldSNO.Id].chests_lore[this.ActorSNO.Id])
|
||||
if (!p.HasLore(loreId))
|
||||
{
|
||||
World.DropItem(this, null, ItemGenerator.CreateLore(p, loreId));
|
||||
break;
|
||||
}
|
||||
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimReason = 5,
|
||||
UnitAniimStartTime = 0,
|
||||
tAnim = new PlayAnimationMessageSpec[]
|
||||
{
|
||||
new PlayAnimationMessageSpec()
|
||||
{
|
||||
Duration = 50,
|
||||
AnimationSNO = AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening],
|
||||
PermutationIndex = 0,
|
||||
AnimationTag = 0,
|
||||
Speed = 1
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}, this);
|
||||
if (GeneratorsSystem.LoreRegistry.Lore.ContainsKey(this.World.SNO) && GeneratorsSystem.LoreRegistry.Lore[this.World.SNO].chests_lore.ContainsKey(this.SNO))
|
||||
foreach (var p in this.GetPlayersInRange(30))
|
||||
foreach (int loreId in GeneratorsSystem.LoreRegistry.Lore[this.World.SNO].chests_lore[this.SNO])
|
||||
if (!p.HasLore(loreId))
|
||||
{
|
||||
World.DropItem(this, null, ItemGenerator.CreateLore(p, loreId));
|
||||
break;
|
||||
}
|
||||
|
||||
World.BroadcastIfRevealed(plr => new SetIdleAnimationMessage
|
||||
World.BroadcastIfRevealed(plr => new PlayAnimationMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimReason = 5,
|
||||
UnitAniimStartTime = 0,
|
||||
tAnim = new PlayAnimationMessageSpec[]
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimationSNO = AnimationSetKeys.Open.ID
|
||||
}, this);
|
||||
|
||||
this.Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
|
||||
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
|
||||
this.Attributes[GameAttribute.Chest_Open, 0xFFFFFF] = true;
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
this.Attributes[GameAttribute.Disabled] = true;
|
||||
|
||||
if (this.ActorSNO.Id == 5747)
|
||||
new PlayAnimationMessageSpec()
|
||||
{
|
||||
var lamp = this.GetActorsInRange(50f).Where(x => x.ActorSNO.Id == 5744 || x.ActorSNO.Id == 89503).First();
|
||||
if (lamp != null)
|
||||
(lamp as CathedralLamp).Die();
|
||||
Duration = 50,
|
||||
AnimationSNO = AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening],
|
||||
PermutationIndex = 0,
|
||||
AnimationTag = 0,
|
||||
Speed = 1
|
||||
}
|
||||
}
|
||||
|
||||
if (this.ActorSNO.Id == 2975)
|
||||
{
|
||||
if (this.World.WorldSNO.Id == 50610)
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 0,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
else
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 1,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
}
|
||||
}, this);
|
||||
|
||||
World.BroadcastIfRevealed(plr => new SetIdleAnimationMessage
|
||||
{
|
||||
ActorID = this.DynamicID(plr),
|
||||
AnimationSNO = AnimationSetKeys.Open.ID
|
||||
}, this);
|
||||
|
||||
this.Attributes[GameAttribute.Gizmo_Has_Been_Operated] = true;
|
||||
//this.Attributes[GameAttribute.Gizmo_Operator_ACDID] = unchecked((int)player.DynamicID);
|
||||
this.Attributes[GameAttribute.Chest_Open, 0xFFFFFF] = true;
|
||||
Attributes.BroadcastChangedIfRevealed();
|
||||
|
||||
this.Attributes[GameAttribute.Disabled] = true;
|
||||
|
||||
if (this.SNO == ActorSno._trdun_cath_chandelier_trap_switch2)
|
||||
{
|
||||
var lamp = this.GetActorsInRange(50f).Where(x => x.SNO == ActorSno._trdun_cath_chandelier_trap || x.SNO == ActorSno._trdun_cath_braizer_trap).First();
|
||||
if (lamp != null)
|
||||
(lamp as CathedralLamp).Die();
|
||||
}
|
||||
|
||||
if (this.SNO == ActorSno._a2dun_zolt_centerpiece_a)
|
||||
{
|
||||
if (this.World.SNO == WorldSno.a2dun_zolt_level01)
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 0,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
else
|
||||
foreach (var plr in this.World.Game.Players.Values)
|
||||
plr.InGameClient.SendMessage(new QuestCounterMessage()
|
||||
{
|
||||
snoQuest = 57337,
|
||||
snoLevelArea = -1,
|
||||
StepID = 35,
|
||||
TaskIndex = 1,
|
||||
Counter = 1,
|
||||
Checked = 1,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using DiIiS_NA.Core.Helpers.Math;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -31,18 +32,18 @@ using DiIiS_NA.GameServer.MessageSystem.Message.Fields;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(345935)]
|
||||
[HandledSNO(ActorSno._x1_openworld_lootrunportal)]
|
||||
public class LootRunPortal : Portal
|
||||
{
|
||||
static readonly Logger Logger = LogManager.CreateLogger();
|
||||
private int MinimapIcon;
|
||||
|
||||
public LootRunPortal(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LootRunPortal(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Destination = new ResolvedPortalDestination
|
||||
{
|
||||
WorldSNO = 338944,
|
||||
WorldSNO = (int)WorldSno.x1_westm_graveyard_deathorb,
|
||||
DestLevelAreaSNO = 338946,
|
||||
StartingPointActorTag = 171
|
||||
};
|
||||
@ -78,9 +79,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
public override void OnTargeted(Player player, TargetMessage message)
|
||||
{
|
||||
Logger.Debug("(OnTargeted) Portal has been activated, Id: {0}, LevelArea: {1}, World: {2}", this.ActorSNO.Id, this.Destination.DestLevelAreaSNO, this.Destination.WorldSNO);
|
||||
Logger.Debug("(OnTargeted) Portal has been activated, Id: {0}, LevelArea: {1}, World: {2}", (int)this.SNO, this.Destination.DestLevelAreaSNO, this.Destination.WorldSNO);
|
||||
|
||||
var world = this.World.Game.GetWorld(this.Destination.WorldSNO);
|
||||
var world = this.World.Game.GetWorld((WorldSno)this.Destination.WorldSNO);
|
||||
|
||||
if (world == null)
|
||||
{
|
||||
@ -92,7 +93,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
|
||||
if (startingPoint != null)
|
||||
{
|
||||
if (this.ActorSNO.Id == 230751) //a2 timed event
|
||||
if (this.SNO == ActorSno._a2dun_zolt_portal_timedevent) //a2 timed event
|
||||
{
|
||||
if (!this.World.Game.QuestManager.SideQuests[120396].Completed)
|
||||
player.ShowConfirmation(this.DynamicID(player), (() => {
|
||||
|
||||
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -20,7 +21,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public AncientKorlic(World world, PowerContext context, int AncientsID)
|
||||
: base(world, 90443, context.User, null)
|
||||
: base(world, ActorSno._barbarian_calloftheancients_1, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -47,8 +48,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == 90443) > 1)
|
||||
(this.Master as Player).DestroyFollower(90443);
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == SNO) > 1)
|
||||
(this.Master as Player).DestroyFollower(SNO);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -20,7 +21,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public AncientMawdawc(World world, PowerContext context, int AncientsID)
|
||||
: base(world, 90536, context.User, null)
|
||||
: base(world, ActorSno._barbarian_calloftheancients_3, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -47,8 +48,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == 90536) > 1)
|
||||
(this.Master as Player).DestroyFollower(90536);
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == SNO) > 1)
|
||||
(this.Master as Player).DestroyFollower(SNO);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -20,7 +21,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public AncientTalic(World world, PowerContext context, int AncientsID)
|
||||
: base(world, 90535, context.User, null)
|
||||
: base(world, ActorSno._barbarian_calloftheancients_2, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -47,8 +48,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == 90535) > 1)
|
||||
(this.Master as Player).DestroyFollower(90535);
|
||||
if ((this.Master as Player).Followers.Values.Count(a => a == SNO) > 1)
|
||||
(this.Master as Player).DestroyFollower(SNO);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -12,13 +12,14 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class AvatarMelee : Minion
|
||||
{
|
||||
public AvatarMelee(World world, PowerContext context, int AvatarID, float damageMult, TickTimer lifeTime)
|
||||
: base(world, 345682, context.User, null)
|
||||
: base(world, ActorSno._x1_crusader_phalanx, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
WalkSpeed *= 5;
|
||||
@ -42,7 +43,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
class AvatarRanged : Minion
|
||||
{
|
||||
public AvatarRanged(World world, PowerContext context, int AvatarID, float damageMult, TickTimer lifeTime)
|
||||
: base(world, 369795, context.User, null)
|
||||
: base(world, ActorSno._x1_crusader_phalanxarcher, context.User, null)
|
||||
{
|
||||
Scale = 1f;
|
||||
WalkSpeed *= 5;
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -24,10 +25,17 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public static List<int> Companions = new List<int>() { 133741, 173827, 181748, 159098, 159102, 178664 };
|
||||
private static readonly List<ActorSno> Companions = new List<ActorSno>() {
|
||||
ActorSno._dh_companion,
|
||||
ActorSno._dh_companion_spider,
|
||||
ActorSno._dh_companion_boar,
|
||||
ActorSno._dh_companion_runec,
|
||||
ActorSno._dh_companion_runed,
|
||||
ActorSno._dh_companion_ferret
|
||||
};
|
||||
|
||||
public CompanionMinion(World world, PowerContext context, int CompanionSNOId)
|
||||
: base(world, CompanionSNOId, context.User, null)
|
||||
public CompanionMinion(World world, PowerContext context, ActorSno CompanionSNO)
|
||||
: base(world, CompanionSNO, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
if (context.User.Attributes[GameAttribute.Rune_B, 0x000592ff] > 0) Scale = 2f; //Boar
|
||||
@ -38,7 +46,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
this.Attributes[GameAttribute.Is_Helper] = true;
|
||||
this.Attributes[GameAttribute.Summoned_By_SNO] = context.PowerSNO;
|
||||
if (CompanionSNOId == 178664)
|
||||
if (CompanionSNO == ActorSno._dh_companion_ferret)
|
||||
SetBrain(new LooterBrain(this, false));
|
||||
else
|
||||
{
|
||||
|
||||
@ -12,6 +12,7 @@ using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -19,8 +20,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//107031, 106731, 106749, 107067, 107107, 107112
|
||||
|
||||
public CorpseSpider(World world, PowerContext context, int snoId, int SpiderID)
|
||||
: base(world, snoId, context.User, null)
|
||||
public CorpseSpider(World world, PowerContext context, ActorSno sno, int SpiderID)
|
||||
: base(world, sno, context.User, null)
|
||||
{
|
||||
Scale = 0.7f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -24,7 +25,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public CorpseSpiderQueen(World world, PowerContext context, int SpiderID)
|
||||
: base(world, 106749, context.User, null)
|
||||
: base(world, ActorSno._witchdoctor_corpsespider_indigorune, context.User, null)
|
||||
{
|
||||
Scale = 0.7f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -54,7 +55,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
var rem = new List<uint>();
|
||||
foreach (var fol in (this.Master as Player).Followers)
|
||||
if (fol.Value == 106749 && fol.Key != this.GlobalID)
|
||||
if (fol.Value == SNO && fol.Key != this.GlobalID)
|
||||
rem.Add(fol.Key);
|
||||
foreach (var rm in rem)
|
||||
(this.Master as Player).DestroyFollowerById(rm);
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public FetishHunter(World world, PowerContext context, int FetishID)
|
||||
: base(world, 89933, context.User, null)
|
||||
: base(world, ActorSno._fetish_ranged_a, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public FetishMelee(World world, PowerContext context, int FetishID)
|
||||
: base(world, 87189, context.User, null)
|
||||
: base(world, ActorSno._fetish_melee_a, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public FetishShaman(World world, PowerContext context, int FetishID)
|
||||
: base(world, 90320, context.User, null)
|
||||
: base(world, ActorSno._fetish_shaman_a, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -14,13 +14,14 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class GargantuanMinion : Minion
|
||||
{
|
||||
public GargantuanMinion(World world, PowerContext context, int GargID)
|
||||
: base(world, 122305, context.User, null)
|
||||
: base(world, ActorSno._wd_gargantuan, context.User, null)
|
||||
{
|
||||
Scale = 1f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -58,7 +59,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
var rem = new List<uint>();
|
||||
foreach (var fol in (this.Master as Player).Followers)
|
||||
if (fol.Value == 122305 && fol.Key != this.GlobalID)
|
||||
if (fol.Value == SNO && fol.Key != this.GlobalID)
|
||||
rem.Add(fol.Key);
|
||||
foreach (var rm in rem)
|
||||
(this.Master as Player).DestroyFollowerById(rm);
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -33,8 +34,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
//[460042] [Actor] p6_BloodGolem
|
||||
public class BaseGolem : Minion
|
||||
{
|
||||
public BaseGolem(MapSystem.World world, ActorSystem.Actor master)
|
||||
: base(world, 471947, master, null)
|
||||
public BaseGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_necro_revive_golem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -53,8 +54,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class ConsumeFleshGolem : Minion
|
||||
{
|
||||
public ConsumeFleshGolem(MapSystem.World world, ActorSystem.Actor master)
|
||||
: base(world, 471646, master, null)
|
||||
public ConsumeFleshGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_consumefleshgolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -73,7 +74,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class IceGolem : Minion
|
||||
{
|
||||
public IceGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 471647, master, null)
|
||||
public IceGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_icegolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -92,7 +94,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class BoneGolem : Minion
|
||||
{
|
||||
public BoneGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 465239, master, null)
|
||||
public BoneGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_bonegolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -110,7 +113,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class DecayGolem : Minion
|
||||
{
|
||||
public DecayGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 471619, master, null)
|
||||
public DecayGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_decaygolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
@ -129,7 +133,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
}
|
||||
public class BloodGolem : Minion
|
||||
{
|
||||
public BloodGolem(MapSystem.World world, ActorSystem.Actor master) : base(world, 460042, master, null)
|
||||
public BloodGolem(World world, Actor master)
|
||||
: base(world, ActorSno._p6_bloodgolem, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -14,13 +14,14 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class HexMinion : Minion
|
||||
{
|
||||
public HexMinion(World world, PowerContext context, int HexID)
|
||||
: base(world, 107826, context.User, null)
|
||||
: base(world, ActorSno._fetish_hex, context.User, null)
|
||||
{
|
||||
Scale = 1f;
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public LooterPetAnniversary(World world, Actor master)
|
||||
: base(world, 4093, master, null)
|
||||
: base(world, ActorSno._fallenlunatic_a, master, null)
|
||||
{
|
||||
Scale = 0.75f;
|
||||
this.WalkSpeed *= 5;
|
||||
|
||||
@ -14,13 +14,14 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class MirrorImageMinion : Minion
|
||||
{
|
||||
public MirrorImageMinion(World world, PowerContext context, int ImageID, float lifetime)
|
||||
: base(world, 98010, context.User, null) //male Mirror images
|
||||
: base(world, ActorSno._wizard_mirrorimage_female, context.User, null) //female Mirror images
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
@ -41,13 +42,13 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
|
||||
LifeTime = TickTimer.WaitSeconds(world.Game, lifetime);
|
||||
|
||||
if (this.Master != null && context.ScriptFormula(1) < (this.Master as Player).Followers.Values.Where(f => f == 98010).Count())
|
||||
if (this.Master != null && context.ScriptFormula(1) < (this.Master as Player).Followers.Values.Where(f => f == SNO).Count())
|
||||
{
|
||||
if (this.Master is Player)
|
||||
{
|
||||
var rem = new List<uint>();
|
||||
foreach (var fol in (this.Master as Player).Followers.Where(f => f.Key != this.GlobalID).Take((this.Master as Player).Followers.Values.Where(f => f == 98010).Count() - (int)context.ScriptFormula(1)))
|
||||
if (fol.Value == 98010)
|
||||
foreach (var fol in (this.Master as Player).Followers.Where(f => f.Key != this.GlobalID).Take((this.Master as Player).Followers.Values.Where(f => f == SNO).Count() - (int)context.ScriptFormula(1)))
|
||||
if (fol.Value == SNO)
|
||||
rem.Add(fol.Key);
|
||||
foreach (var rm in rem)
|
||||
(this.Master as Player).DestroyFollowerById(rm);
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -21,7 +22,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
public new int SummonLimit = 1;
|
||||
|
||||
public MysticAllyMinion(World world, PowerContext context, int MysticAllyID)
|
||||
public MysticAllyMinion(World world, PowerContext context, ActorSno MysticAllyID)
|
||||
: base(world, MysticAllyID, context.User, null)
|
||||
{
|
||||
Scale = 1.35f; //they look cooler bigger :)
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -25,8 +26,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
class NecromancerSkeleton_A : Minion
|
||||
{
|
||||
public NecromancerSkeleton_A(MapSystem.World world, int snoId, ActorSystem.Actor master)
|
||||
: base(world, snoId, master, null)
|
||||
public NecromancerSkeleton_A(MapSystem.World world, ActorSno sno, ActorSystem.Actor master)
|
||||
: base(world, sno, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,10 +23,18 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
//Changes creature with each rune,
|
||||
//RuneSelect(141402, 168815, 150024, 150025, 150026, 150027)
|
||||
|
||||
public static List<int> Sentries = new List<int>() { 141402, 168815, 150024, 150025, 150026, 150027 };
|
||||
public static readonly List<ActorSno> Sentries = new List<ActorSno>()
|
||||
{
|
||||
ActorSno._dh_sentry,
|
||||
ActorSno._dh_sentry_tether,
|
||||
ActorSno._dh_sentry_addsduration,
|
||||
ActorSno._dh_sentry_addsmissiles,
|
||||
ActorSno._dh_sentry_addsheals,
|
||||
ActorSno._dh_sentry_addsshield
|
||||
};
|
||||
|
||||
public SentryMinion(World world, PowerContext context, int SentrySNOId)
|
||||
: base(world, SentrySNOId, context.User, null)
|
||||
public SentryMinion(World world, PowerContext context, ActorSno SentrySNO)
|
||||
: base(world, SentrySNO, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -25,7 +26,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
public bool Rune_Flesh = false;
|
||||
//Melee - 87189, 89933 - ranged, 90320 - shaman, skeleton? - 89934
|
||||
public SkeletalMage(World world, PowerContext context, int FetishID, int SNO)
|
||||
public SkeletalMage(World world, PowerContext context, int FetishID, ActorSno SNO)
|
||||
: base(world, SNO, context.User, null)
|
||||
{
|
||||
Scale = 1.2f;
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 10;
|
||||
|
||||
public WallCreeper(World world, PowerContext context, int creeperID)
|
||||
: base(world, 146534, context.User, null)
|
||||
: base(world, ActorSno._wd_wallofzombiesrune_spawn, context.User, null)
|
||||
{
|
||||
Scale = 1.2f; //they look cooler bigger :)
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -14,6 +14,7 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
//Blizzless Project 2022
|
||||
using System.Collections.Generic;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
{
|
||||
@ -22,7 +23,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Minions
|
||||
public new int SummonLimit = 4;
|
||||
|
||||
public ZombieDog(World world, Actor master, int dogID, float mul = 1f)
|
||||
: base(world, 51353, master, null)
|
||||
: base(world, ActorSno._wd_zombiedog, master, null)
|
||||
{
|
||||
Scale = 1.35f;
|
||||
//TODO: get a proper value for this.
|
||||
|
||||
@ -8,6 +8,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
//Blizzless Project 2022
|
||||
using System.Threading.Tasks;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -20,11 +21,11 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
|
||||
{
|
||||
#region Unique_CaptainDaltyn
|
||||
[HandledSNO(156801)]
|
||||
[HandledSNO(ActorSno._unique_captaindaltyn)]
|
||||
public class Unique_CaptainDaltyn : Monster
|
||||
{
|
||||
public Unique_CaptainDaltyn(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Unique_CaptainDaltyn(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.MinimapActive] = true;
|
||||
this.Attributes[GameAttribute.Immune_To_Charm] = true;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.AISystem.Brains;
|
||||
@ -20,11 +21,11 @@ using System.Threading.Tasks;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Monsters
|
||||
{
|
||||
//89578 GlobalId: 1015703058 Position: x:338 y:320.78137 z:-11.422008 Name: a1dun_leor_firewall1
|
||||
[HandledSNO(89578)]
|
||||
public class a1dun_firewall : Monster
|
||||
[HandledSNO(ActorSno._a1dun_leor_firewall1, ActorSno._a1dun_leor_firewall2)]
|
||||
public class A1dun_firewall : Monster
|
||||
{
|
||||
public a1dun_firewall(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public A1dun_firewall(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 0x8;
|
||||
this.CollFlags = 0;
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
[HandledSNO(5998)]
|
||||
[HandledSNO(ActorSno._tristramgateguardr)]
|
||||
class ArrowGuardian : NPC, IUpdateable
|
||||
{
|
||||
public ArrowGuardian(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public ArrowGuardian(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
|
||||
@ -10,14 +10,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(435707)] //px_Ruins_Frost_Camp_BarbNPC
|
||||
[HandledSNO(ActorSno._px_ruins_frost_camp_barbnpc)] //px_Ruins_Frost_Camp_BarbNPC
|
||||
public class BarbarianNPC : InteractiveNPC
|
||||
{
|
||||
public BarbarianNPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public BarbarianNPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{ }
|
||||
|
||||
protected override void ReadTags()
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
@ -19,11 +20,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(470782)] //SNO - 470782, Name - P6_ChallengeRift_Nephalem
|
||||
[HandledSNO(ActorSno._p6_challengerift_nephalem)] //SNO - 470782, Name - P6_ChallengeRift_Nephalem
|
||||
class CR_Nephalem : InteractiveNPC
|
||||
{
|
||||
public CR_Nephalem(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public CR_Nephalem(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Conversations.Clear();
|
||||
Conversations.Add(new Interactions.ConversationInteraction(471065));
|
||||
|
||||
@ -12,14 +12,15 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(3533)] //Cain
|
||||
[HandledSNO(ActorSno._cain)] //Cain
|
||||
public class Cain : InteractiveNPC
|
||||
{
|
||||
public Cain(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Cain(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,25 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(3739, 174436, 205189, 3546, 164195, 181857, 181858, 362323, 362440, 284568, 378363, 361670, 256248, 275409)]
|
||||
[HandledSNO(
|
||||
ActorSno._captainrumfoord,
|
||||
ActorSno._angel_trooper_a,
|
||||
ActorSno._bastionskeepguard_melee_a_01_stationedguard,
|
||||
ActorSno._caldeumguard_cleaver_a,
|
||||
ActorSno._caldeumguard_cleaver_a_jarulf,
|
||||
ActorSno._caldeumguard_cleaver_a_town,
|
||||
ActorSno._caldeumguard_spear_imperial_town,
|
||||
ActorSno._x1_westmhub_guardnohelmunarmed,
|
||||
ActorSno._x1_westmhub_guard_patrol,
|
||||
ActorSno._x1_westmhub_guard,
|
||||
ActorSno._x1_westmhub_guardnohelm,
|
||||
ActorSno._x1_malthael,
|
||||
ActorSno._x1_imperius
|
||||
)]
|
||||
class CaptainRumford : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public CaptainRumford(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public CaptainRumford(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -48,9 +63,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
||||
@ -1,15 +1,16 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(112768)]
|
||||
[HandledSNO(ActorSno._fate)]
|
||||
class Fate : InteractiveNPC
|
||||
{
|
||||
public Fate(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Fate(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -1,15 +1,24 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(196900, 196901, 196902, 196903, 196904, 196905)] //Ghosts
|
||||
[HandledSNO(
|
||||
ActorSno._a4dun_aspect_ghost_01,
|
||||
ActorSno._a4dun_aspect_ghost_02,
|
||||
ActorSno._a4dun_aspect_ghost_03,
|
||||
ActorSno._a4dun_aspect_ghost_04,
|
||||
ActorSno._a4dun_aspect_ghost_05,
|
||||
ActorSno._a4dun_aspect_ghost_06,
|
||||
ActorSno._a4dun_aspect_ghost_07
|
||||
)] //Ghosts
|
||||
public class GhostOnSpire : InteractiveNPC
|
||||
{
|
||||
public GhostOnSpire(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public GhostOnSpire(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -21,8 +22,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
class HirelingNPC : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public HirelingNPC(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public HirelingNPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -47,9 +48,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
||||
@ -1,15 +1,16 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(114074)]
|
||||
[HandledSNO(ActorSno._hope)]
|
||||
class Hope : InteractiveNPC
|
||||
{
|
||||
public Hope(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Hope(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
@ -7,18 +8,19 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(308474, //X1_WestM_Intro_Human_Male
|
||||
309191, //X1_WestM_Intro_Human_Male2
|
||||
181563, //vizjereiMale_A_Town
|
||||
210087, //Zakarum_Female_Wealthy_Gates
|
||||
190390, //A3_Hub_SacrificeLadyNew
|
||||
378376 //x1_WestmHub_Guard_NoLoS_KnownWithScene
|
||||
)]
|
||||
[HandledSNO(
|
||||
ActorSno._x1_westm_intro_human_male, //X1_WestM_Intro_Human_Male
|
||||
ActorSno._x1_westm_intro_human_male2, //X1_WestM_Intro_Human_Male2
|
||||
ActorSno._vizjereimale_a_town, //vizjereiMale_A_Town
|
||||
ActorSno._zakarum_female_wealthy_gates, //Zakarum_Female_Wealthy_Gates
|
||||
ActorSno._a3_hub_sacrificeladynew, //A3_Hub_SacrificeLadyNew
|
||||
ActorSno._x1_westmhub_guard_nolos_knownwithscene //x1_WestmHub_Guard_NoLoS_KnownWithScene
|
||||
)]
|
||||
class Humans : NPC
|
||||
{
|
||||
private bool _collapsed = false;
|
||||
public Humans(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Humans(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
@ -42,21 +44,26 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
_collapsed = true;
|
||||
|
||||
if (this.World.WorldSNO.Id == 306549)
|
||||
switch (this.ActorSNO.Id)
|
||||
if (this.World.SNO == WorldSno.x1_westm_intro)
|
||||
switch (this.SNO)
|
||||
{
|
||||
case 308474:
|
||||
case ActorSno._x1_westm_intro_human_male:
|
||||
if (this.Position.X > 1440)
|
||||
StartConversation(this.World, 311433);
|
||||
else
|
||||
{
|
||||
foreach (var man in this.World.GetActorsBySNO(308474)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(309191)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(310653)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(310631)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(
|
||||
ActorSno._x1_westm_intro_human_male,
|
||||
ActorSno._x1_westm_intro_human_male2,
|
||||
ActorSno._x1_westm_intro_human_female,
|
||||
ActorSno._x1_westmarchfemale_deathmaidenkill
|
||||
))
|
||||
{
|
||||
if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 309191:
|
||||
case ActorSno._x1_westm_intro_human_male2:
|
||||
if (this.Position.X > 1300 & this.Position.Y > 440)
|
||||
{
|
||||
StartConversation(this.World, 311435);
|
||||
@ -72,9 +79,14 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
+ [5] {70976 = 328782} DiIiS_NA.GameServer.Core.Types.TagMap.TagMapEntry
|
||||
+ [6] {98304 = 330015} DiIiS_NA.GameServer.Core.Types.TagMap.TagMapEntry
|
||||
*/
|
||||
foreach (var man in this.World.GetActorsBySNO(308474)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(309191)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(310653)) if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
foreach (var man in this.World.GetActorsBySNO(
|
||||
ActorSno._x1_westm_intro_human_male,
|
||||
ActorSno._x1_westm_intro_human_male2,
|
||||
ActorSno._x1_westm_intro_human_female
|
||||
))
|
||||
{
|
||||
if (man.CurrentScene.SceneSNO.Id == this.CurrentScene.SceneSNO.Id) man.PlayActionAnimation(306544);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -10,16 +10,17 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//[ Info] [AttackPayload]: Игрок с индесом: 0 - задамажил: ID: 449323 Name: Barbarian_KKG_Event, NumInWorld: 0
|
||||
//[ Info] [AttackPayload]: Игрок с индесом: 0 - задамажил: ID: 435818 Name: Barbarian_KKG, NumInWorld: 0
|
||||
[HandledSNO(435818, 449323)] //Barbarian_KKG
|
||||
[HandledSNO(ActorSno._barbarian_kkg, ActorSno._barbarian_kkg_event)] //Barbarian_KKG
|
||||
public class Barbarian_KKG : NPC
|
||||
{
|
||||
public Barbarian_KKG(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Barbarian_KKG(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.PlayActionAnimation(449259);
|
||||
}
|
||||
|
||||
@ -10,16 +10,17 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//[ Info] [AttackPayload]: Игрок с индесом: 0 - задамажил: ID: 437089 Name: Barbarian_KKG_Follower_NPC, NumInWorld: 0
|
||||
[HandledSNO(437089)] //Barbarian_KKG_Follower_NPC
|
||||
[HandledSNO(ActorSno._barbarian_kkg_follower_npc)] //Barbarian_KKG_Follower_NPC
|
||||
public class Barbarian_KKG_Follower_NPC : NPC
|
||||
{
|
||||
private bool _collapsed = false;
|
||||
public Barbarian_KKG_Follower_NPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Barbarian_KKG_Follower_NPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
//{[Actor] [Type: Monster] SNOId:437089 GlobalId: 1017303615 Position: x:348.598 y:853.68604 z:5.41089 Name: Barbarian_KKG_Follower_NPC}
|
||||
//437394 - Рык
|
||||
@ -53,7 +54,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
_collapsed = true;
|
||||
this.PlayActionAnimation(439753);
|
||||
|
||||
var Cube = World.GetActorBySNO(437895);
|
||||
var Cube = World.GetActorBySNO(ActorSno._p4_ruins_frost_kanaicube_altar);
|
||||
Cube.PlayActionAnimation(441642);
|
||||
//{[Actor] [Type: Gizmo] SNOId:437895 GlobalId: 1017303610 Position: x:331.9304 y:867.761 z:5.41071 Name: p4_Ruins_Frost_KanaiCube_Altar}
|
||||
foreach (var plr in player.InGameClient.Game.Players.Values)
|
||||
|
||||
@ -10,15 +10,16 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(437073)] //p2_HQ_ZoltunKulle_NPC
|
||||
public class p2_HQ_ZoltunKulle_NPC : NPC
|
||||
[HandledSNO(ActorSno._p2_hq_zoltunkulle_npc)] //p2_HQ_ZoltunKulle_NPC
|
||||
public class P2_HQ_ZoltunKulle_NPC : NPC
|
||||
{
|
||||
|
||||
public p2_HQ_ZoltunKulle_NPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public P2_HQ_ZoltunKulle_NPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Hidden = true;
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
@ -15,11 +16,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(138271)]
|
||||
[HandledSNO(ActorSno._leah_afterevent31_exit)]
|
||||
class LeahNPC : InteractiveNPC
|
||||
{
|
||||
public LeahNPC(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public LeahNPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -20,11 +21,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
//{[Actor] [Type: Monster] SNOId:284530 GlobalId: 1017400498 Position: x:593.36835 y:489.5003 z:-4.8999996 Name: x1_NPC_LorathNahr}
|
||||
[HandledSNO(284530)]
|
||||
[HandledSNO(ActorSno._x1_npc_lorathnahr)]
|
||||
class LorathNahr_NPC : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public LorathNahr_NPC(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public LorathNahr_NPC(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -37,7 +38,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
this.Attributes[GameAttribute.Hitpoints_Cur] = this.Attributes[GameAttribute.Hitpoints_Max_Total];
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
this.Attributes[GameAttribute.Attacks_Per_Second] = 1.0f;
|
||||
if (world.WorldSNO.Id == 308705)
|
||||
if (world.SNO == WorldSno.x1_westmarch_overlook_d)
|
||||
{
|
||||
this.Attributes[GameAttribute.Damage_Weapon_Min, 0] = 0f;
|
||||
this.Attributes[GameAttribute.Damage_Weapon_Delta, 0] = 0f;
|
||||
@ -58,9 +59,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
||||
@ -12,14 +12,15 @@ using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.World;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(61524)] //PT_Mystic_NoVendor
|
||||
[HandledSNO(ActorSno._pt_mystic_novendor)] //PT_Mystic_NoVendor
|
||||
public class MysticNoVendor : InteractiveNPC
|
||||
{
|
||||
public MysticNoVendor(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public MysticNoVendor(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
}
|
||||
@ -30,11 +31,11 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
base.ReadTags();
|
||||
}
|
||||
}
|
||||
[HandledSNO(87037)] //PT_Mystic_NoVendor
|
||||
[HandledSNO(ActorSno._templarnpc)]
|
||||
public class TemplarNPC : InteractiveNPC
|
||||
{
|
||||
public TemplarNPC(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public TemplarNPC(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Attributes[GameAttribute.Invulnerable] = true;
|
||||
}
|
||||
|
||||
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
||||
{
|
||||
[HandledSNO(453600)]
|
||||
[HandledSNO(ActorSno._p43_ad_cow)]
|
||||
class Cow : NPC
|
||||
{
|
||||
public Cow(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Cow(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453551)]
|
||||
[HandledSNO(ActorSno._p43_ad_farnham)]
|
||||
class Farnham : InteractiveNPC
|
||||
{
|
||||
public Farnham(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Farnham(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453553)]
|
||||
[HandledSNO(ActorSno._p43_ad_griswold)]
|
||||
class Griswold : InteractiveNPC
|
||||
{
|
||||
public Griswold(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Griswold(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453554)]
|
||||
[HandledSNO(ActorSno._p43_ad_ogden)]
|
||||
class Ogden : InteractiveNPC
|
||||
{
|
||||
public Ogden(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Ogden(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -4,14 +4,15 @@ using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
using DiIiS_NA.GameServer.MessageSystem;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.GSSystem.MapSystem;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(453555)]
|
||||
[HandledSNO(ActorSno._p43_ad_pepin)]
|
||||
class Pepin : InteractiveNPC
|
||||
{
|
||||
public Pepin(World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public Pepin(World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field7 = 1;
|
||||
this.Attributes[GameAttribute.TeamID] = 2;
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(4580)]
|
||||
[HandledSNO(ActorSno._leah)]
|
||||
class TownLeah : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public TownLeah(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public TownLeah(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this);
|
||||
(Brain as AggressiveNPCBrain).PresetPowers.Clear();
|
||||
@ -48,9 +49,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using DiIiS_NA.Core.MPQ;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.MPQ.FileFormats;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
@ -19,11 +20,11 @@ using MonsterFF = DiIiS_NA.Core.MPQ.FileFormats.Monster;
|
||||
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
[HandledSNO(6353)]
|
||||
[HandledSNO(ActorSno._tyrael)]
|
||||
class Tyrael : InteractiveNPC, IUpdateable
|
||||
{
|
||||
public Tyrael(MapSystem.World world, int snoID, TagMap tags)
|
||||
: base(world, snoID, tags)
|
||||
public Tyrael(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
Brain = new AggressiveNPCBrain(this); // erekose
|
||||
|
||||
@ -48,9 +49,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
}
|
||||
|
||||
base.ReadTags();
|
||||
|
||||
if (this.ActorSNO.Id == 256248)
|
||||
this.Attributes[GameAttribute.TeamID] = 0;
|
||||
}
|
||||
|
||||
public void Update(int tickCounter)
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.Core.Logging;
|
||||
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
|
||||
//Blizzless Project 2022
|
||||
using DiIiS_NA.GameServer.Core.Types.TagMap;
|
||||
//Blizzless Project 2022
|
||||
@ -8,11 +9,11 @@ using DiIiS_NA.GameServer.MessageSystem;
|
||||
namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
||||
{
|
||||
|
||||
[HandledSNO(454066)]
|
||||
[HandledSNO(ActorSno._p6_necro_corpse_flesh)]
|
||||
class NecromancerFlesh : Gizmo
|
||||
{
|
||||
public NecromancerFlesh(MapSystem.World world, int snoId, TagMap tags)
|
||||
: base(world, snoId, tags)
|
||||
public NecromancerFlesh(MapSystem.World world, ActorSno sno, TagMap tags)
|
||||
: base(world, sno, tags)
|
||||
{
|
||||
this.Field2 = 16;//16;
|
||||
this.Field7 = 0x00000001;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
user.block.title