mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-09-28 14:13:01 -04:00
WoD Mutant Rancor Lair/Boss Refactor
This commit is contained in:
+22
@@ -0,0 +1,22 @@
|
||||
strItemType
|
||||
s
|
||||
item_wod_bossloot_ns_bracer
|
||||
item_wod_bossloot_smc_bicep_l
|
||||
item_wod_bossloot_smc_bicep_l
|
||||
item_wod_bossloot_smc_bicep_l
|
||||
item_wod_bossloot_smc_bicep_l
|
||||
item_wod_bossloot_smc_bicep_r
|
||||
item_wod_bossloot_smc_bicep_r
|
||||
item_wod_bossloot_smc_bicep_r
|
||||
item_wod_bossloot_smc_bicep_r
|
||||
item_wod_bossloot_smc_bracer_l
|
||||
item_wod_bossloot_smc_bracer_l
|
||||
item_wod_bossloot_smc_bracer_r
|
||||
item_wod_bossloot_smc_bracer_r
|
||||
item_treasure_map_81_90
|
||||
item_treasure_map_81_90
|
||||
object/tangible/component/weapon/vibro_unit_nightsister.iff
|
||||
dynamic_armor_boss
|
||||
dynamic_armor_boss
|
||||
dynamic_clothing_boss
|
||||
dynamic_clothing_boss
|
||||
+25
-25
@@ -1,25 +1,25 @@
|
||||
rancor_81_90 bull_rancor_81_90 rancor_monstrous_brute_81_90 enraged_rancor_81_90 enraged_bull_rancor_81_90
|
||||
s s s s s
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard
|
||||
cash_loot/creature_cash_loot_81_90 crafting_loot/saber_crystals_medium:power_crystal crafting_loot/saber_crystals_medium:power_crystal crafting_loot/saber_crystals_medium:power_crystal crafting_loot/saber_crystals_medium:power_crystal
|
||||
cash_loot/creature_cash_loot_81_90 wearables/jedi_robes_high wearables/jedi_robes_high wearables/jedi_robes_high wearables/jedi_robes_high
|
||||
cash_loot/creature_cash_loot_81_90
|
||||
cash_loot/creature_cash_loot_81_90
|
||||
consumables/simple_consumables_81_90
|
||||
consumables/simple_consumables_81_90
|
||||
consumables/simple_consumables_81_90
|
||||
weapons/ranged_81_90
|
||||
weapons/melee_81_90
|
||||
rancor_81_90 bull_rancor_81_90 rancor_monstrous_brute_81_90 enraged_rancor_81_90 enraged_bull_rancor_81_90 mutant_rancor_81_90
|
||||
s s s s s s
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard wearables/dynamic_clothing_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard wearables/dynamic_armor_standard
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss wearables/dynamic_armor_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss wearables/dynamic_clothing_boss
|
||||
cash_loot/creature_cash_loot_81_90 wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard wearables/dynamic_armor_jedi_standard
|
||||
cash_loot/creature_cash_loot_81_90 crafting_loot/saber_crystals_medium:power_crystal crafting_loot/saber_crystals_medium:power_crystal crafting_loot/saber_crystals_medium:power_crystal crafting_loot/saber_crystals_medium:power_crystal crafting_loot/saber_crystals_medium:power_crystal
|
||||
cash_loot/creature_cash_loot_81_90 wearables/jedi_robes_high wearables/jedi_robes_high wearables/jedi_robes_high wearables/jedi_robes_high wearables/jedi_robes_high
|
||||
cash_loot/creature_cash_loot_81_90 cash_loot/creature_cash_loot_81_90
|
||||
cash_loot/creature_cash_loot_81_90 cash_loot/creature_cash_loot_81_90
|
||||
consumables/simple_consumables_81_90 crafting_loot/weapon_components:wp_comp_81_90
|
||||
consumables/simple_consumables_81_90 crafting_loot/weapon_components:wp_comp_81_90
|
||||
consumables/simple_consumables_81_90 crafting_loot/saber_crystals_high:power_crystal
|
||||
weapons/ranged_81_90
|
||||
weapons/melee_81_90
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
mutant_rancor_boss spider_queen_consort spider_queen_guard spider_queen_boss
|
||||
s s s s
|
||||
specific_npc/mutant_rancor_boss
|
||||
@@ -3495,7 +3495,7 @@ mutant_bark_mite_queen 30 5 1 0 0 NORMAL rori mutant_bark_mite bark_mite_hue
|
||||
mutant_bark_mite_soldier 20 4 2 0 0 NORMAL rori mutant_bark_mite bark_mite_hue.iff 5.7 6 3 30 30 -1 20 20 -1 -1 -1 2 1 25 meat_insect 20 hide_bristley defaultProfile creature/insect_11_20 generic_creature_2 18 bark_mite carnivore object/weapon/ranged/creature/creature_spit_large_toxicgreen.iff object/weapon/ranged/creature/creature_spit_large_toxicgreen.iff roach_2 roach_2 6 6 1 yes
|
||||
mutant_bark_mite_worker 8 2 4 0 -2 NORMAL rori mutant_bark_mite bark_mite_hue.iff 3.5 4 3 5 5 0 0 0 0 0 -1 2 1 15 meat_insect 10 hide_bristley defaultProfile creature/insect_1_10 generic_creature_1 18 bark_mite carnivore roach_1 roach_1 4 4 1 yes
|
||||
mutant_baz_nitch 63 0 0 0 0 NORMAL dathomir baz_nitch baz_nitch_hue.iff 1 1.5 1 0 0 0 0 0 0 0 0 2 1 5 meat_wild 3 hide_leathery 3 bone_mammal defaultProfile creature/creature_61_70 generic_creature_7 housing_improvement_04,col_story_count_dooku_set_1,col_story_count_dooku_set_2,col_glass_shelving_02 0.1 highAttackDamageAvg herbivore turkey_4 turkey_4 12 12 instant
|
||||
mutant_rancor 89 0 0 0 0 ELITE dathomir rancor beast_master/bm_mutated_rancor.iff 1.3 1.4 1 45 60 0 100 100 100 0 0 2 1 1020 meat_carnivore 901 hide_leathery 851 bone_mammal defaultProfile 1 80 npc/elite_npc:elite_npc_81_90 elite_creature_9 col_rancor_parts,housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_dejarik_holomonster,col_dejarik_table,col_shattered_shard_02 carnivore root_defense=100,snare_defense=100 gorilla_5 gorilla_5 5 5 1
|
||||
mutant_rancor 89 0 0 0 0 ELITE dathomir rancor beast_master/bm_mutated_rancor.iff 1.3 1.4 1 45 60 0 100 100 100 0 0 2 1 1020 meat_carnivore 901 hide_leathery 851 bone_mammal defaultProfile 2 80 creature/rancor_loot:mutant_rancor_81_90 elite_creature_8 col_rancor_parts,housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_dejarik_holomonster,col_dejarik_table,col_shattered_shard_02 carnivore root_defense=100,snare_defense=100 theme_park.wod.mutant_rancor_npc gorilla_5 gorilla_5 5 5 1
|
||||
mutant_womprat 12 0 -1 0 -4 NORMAL Tatooine - to be sorted tatooine womprat womp_rat_hue.iff 1.2 1.6 2 10 15 0 0 0 0 15 -1 2 1 6 meat_wild 5 hide_leathery 4 bone_mammal defaultProfile creature/creature_11_20 generic_creature_2 18 womprat 0.15 lowAttackAbilityWeak carnivore rat_1 rat_1 6 2
|
||||
mutated_borgax_mount 1 0 0 0 0 NORMAL tatooine bioengineer beast_master/bm_mutated_borgax.iff 1 1 4 0 0 0 0 0 0 0 0 2 defaultProfile creature/creature_1_10 herbivore 0 2
|
||||
mutated_cu_pa_mount 1 0 0 0 0 NORMAL tatooine bioengineer beast_master/bm_mutated_cu_pa.iff 1.25 1.25 4 0 0 0 0 0 0 0 0 2 defaultProfile creature/creature_1_10 herbivore 0 2
|
||||
@@ -6701,9 +6701,9 @@ vendor_bm_0 100 0 0 0 0 ELITE anywhere jabba vendor_bm_0.iff 1 1 0 0 0 0
|
||||
vendor_bm_1 100 0 0 0 0 ELITE anywhere jabba vendor_bm_1.iff 1 1 0 0 0 0 0 0 0 0 -1 2 0 0 npc 1 string:item.vendor.vendor_table=bm_vendor_1,int:ai.noClap=1 npc.vendor.vendor,conversation.bm_vendor 0 0
|
||||
vendor_bm_2 100 0 0 0 0 ELITE anywhere jabba vendor_bm_2.iff 1 1 0 0 0 0 0 0 0 0 -1 2 0 0 npc 1 string:item.vendor.vendor_table=bm_vendor_2,int:ai.noClap=1 npc.vendor.vendor,conversation.bm_vendor
|
||||
vendor_bm_3 100 0 0 0 0 ELITE anywhere jabba vendor_bm_3.iff 1 1 0 0 0 0 0 0 0 0 -1 2 0 0 npc 1 string:item.vendor.vendor_table=bm_vendor_3,int:ai.noClap=1 npc.vendor.vendor,conversation.bm_vendor
|
||||
wod_spider_queen_guard 91 0 0 0 5 BOSS dathomir spider_nightsister spider_nightsister razor_angler_hue.iff 2.8 2.8 3 0 60 0 100 100 100 0 0 2 1 1100 meat_carnivore 1000 hide_leathery 950 bone_mammal defaultProfile 3 100 npc/boss_npc:boss_npc_81_90 boss_npc_9 col_shattered_shard_02 18 nightsister carnivore int:bm_doNotShowExamineInfo=1 generic_creature_special_6 generic_creature_special_6 12 12 instant 15.0 item_razor_angler_dna
|
||||
wod_spider_queen_consort 92 0 0 0 5 ELITE dathomir spider_nightsister spider_nightsister spider_queen_consort.iff 2.9 2.9 3 0 60 0 100 100 100 0 0 2 1 1100 meat_carnivore 1000 hide_leathery 950 bone_mammal defaultProfile 3 100 npc/boss_npc:boss_npc_81_90 boss_npc_9 col_shattered_shard_02 18 nightsister carnivore int:bm_doNotShowExamineInfo=1 generic_creature_special_6 generic_creature_special_6 12 12 instant 15.0 item_spiderclan_consort_dna
|
||||
wod_spider_queen_boss 96 5 5 0 5 BOSS dathomir spider_nightsister spider_nightsister angler_queen.iff 4.2 4.5 3 0 60 0 100 100 100 0 0 2 1 1100 meat_carnivore 1000 hide_leathery 950 bone_mammal defaultProfile 3 100 npc/boss_npc:boss_npc_81_90 boss_npc_9 col_shattered_shard_02 18 nightsister carnivore 100 100 100 100 expertise_glancing_blow_reduction=100,expertise_glancing_blow_ranged=100 int:bm_doNotShowExamineInfo=1 generic_creature_special_6 generic_creature_special_6 12 12 instant 15.0 item_spiderclan_queen_dna
|
||||
wod_spider_queen_guard 91 0 0 0 5 BOSS dathomir spider_nightsister spider_nightsister razor_angler_hue.iff 2.8 2.8 3 0 60 0 100 100 100 0 0 2 1 1100 meat_carnivore 1000 hide_leathery 950 bone_mammal defaultProfile 1 100 theme_park/wod:spider_queen_guard col_shattered_shard_02 18 nightsister carnivore int:bm_doNotShowExamineInfo=1 generic_creature_special_6 generic_creature_special_6 12 12 instant 15.0 item_razor_angler_dna
|
||||
wod_spider_queen_consort 92 0 0 0 5 ELITE dathomir spider_nightsister spider_nightsister spider_queen_consort.iff 2.9 2.9 3 0 60 0 100 100 100 0 0 2 1 1100 meat_carnivore 1000 hide_leathery 950 bone_mammal defaultProfile 1 100 theme_park/wod:spider_queen_consort col_shattered_shard_02 18 nightsister carnivore int:bm_doNotShowExamineInfo=1 generic_creature_special_6 generic_creature_special_6 12 12 instant 15.0 item_spiderclan_consort_dna
|
||||
wod_spider_queen_boss 96 5 5 0 5 BOSS dathomir spider_nightsister spider_nightsister angler_queen.iff 4.2 4.5 3 0 60 0 100 100 100 0 0 2 1 1100 meat_carnivore 1000 hide_leathery 950 bone_mammal defaultProfile 3 100 theme_park/wod:spider_queen_boss col_shattered_shard_02 18 nightsister carnivore 100 100 100 100 expertise_glancing_blow_reduction=100,expertise_glancing_blow_ranged=100 int:bm_doNotShowExamineInfo=1 generic_creature_special_6 generic_creature_special_6 12 12 instant 15.0 item_spiderclan_queen_dna
|
||||
binjinphant_forest_small 64 0 0 0 0 NORMAL endor binjinphant beast_master/bm_binjinphant.iff 0.3 0.6 1 0 0 0 0 0 0 0 -1 2 1 meat_reptilian hide_scaley bone_mammal defaultProfile 1 100 creature/creature_61_70 generic_creature_7 housing_improvement_04,col_story_count_dooku_set_1,col_story_count_dooku_set_2,col_glass_shelving_02 medAttackUtilityAvg carnivore object/weapon/ranged/creature/creature_spit_large_green.iff object/weapon/ranged/creature/creature_spit_large_green.iff mantis_4 mantis_4 12 12 yes
|
||||
binjinphant_forest_medium 66 0 0 0 0 NORMAL endor binjinphant beast_master/bm_binjinphant.iff 0.9 1.1 1 0 0 0 0 0 0 0 -1 2 1 meat_reptilian hide_scaley bone_mammal defaultProfile 1 100 creature/creature_61_70 generic_creature_7 housing_improvement_04,col_story_count_dooku_set_1,col_story_count_dooku_set_2,col_glass_shelving_02 medAttackUtilityAvg carnivore object/weapon/ranged/creature/creature_spit_large_green.iff object/weapon/ranged/creature/creature_spit_large_green.iff mantis_4 mantis_4 12 12 yes
|
||||
binjinphant_forest_large 68 0 0 0 0 NORMAL endor binjinphant beast_master/bm_binjinphant.iff 1.3 1.6 1 0 0 0 0 0 0 0 -1 2 1 meat_reptilian hide_scaley bone_mammal defaultProfile 1 100 creature/creature_61_70 generic_creature_7 housing_improvement_04,col_story_count_dooku_set_1,col_story_count_dooku_set_2,col_glass_shelving_02 medAttackUtilityAvg carnivore object/weapon/ranged/creature/creature_spit_large_green.iff object/weapon/ranged/creature/creature_spit_large_green.iff mantis_4 mantis_4 12 12 yes
|
||||
@@ -6711,41 +6711,41 @@ binjinphant_mount 1 0 0 0 0 NORMAL global binjinphant_mount beast_master/bm_
|
||||
reptilian_flier_mount 1 0 0 0 0 NORMAL mount tatooine bioengineer beast_master/bm_reptilian_flier_mount.iff 1 1 0 0 0 0 0 0 0 0 0 2 defaultProfile creature/creature_1_10 herbivore 0 2 yes
|
||||
whisper_bird_mount 1 0 0 0 0 NORMAL mount tatooine bioengineer beast_master/bm_whisper_bird_mount.iff 1 1 0 0 0 0 0 0 0 0 0 2 defaultProfile creature/creature_1_10 herbivore 0 2 yes
|
||||
snorbal_mount 1 0 0 0 0 NORMAL mount tatooine bioengineer beast_master/bm_snorbal_mount.iff 1 1 0 0 0 0 0 0 0 0 0 2 defaultProfile creature/creature_1_10 herbivore 0 2 yes
|
||||
wod_omogg_rep 90 0 0 0 0 NORMAL global wod dressed_wod_omogg_rep.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_omogg_rep 0 0
|
||||
wod_rubina 90 0 0 0 0 NORMAL global wod dressed_wod_rubina.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_rubina 0 0
|
||||
wod_outcast_1 90 0 0 0 0 NORMAL global wod wod_outcast_1.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast1 0 0
|
||||
wod_outcast_2 90 0 0 0 0 NORMAL global wod wod_outcast_2.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast2 0 0
|
||||
wod_outcast_3 90 0 0 0 0 NORMAL global wod wod_outcast_3.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast3 0 0
|
||||
wod_outcast_4 90 0 0 0 0 NORMAL global wod wod_outcast_4.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast4 0 0
|
||||
wod_outcast_5 90 0 0 0 0 NORMAL global wod wod_outcast_5.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast5 0 0
|
||||
wod_outcast_6 90 0 0 0 0 NORMAL global wod wod_outcast_6.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast6 0 0
|
||||
wod_outcast_7 90 0 0 0 0 NORMAL global wod wod_outcast_7.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast7 0 0
|
||||
wod_gatekeeper_saik 90 0 0 0 0 NORMAL global wod dressed_dathomir_nightsister_guardian.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_guide 0 0
|
||||
wod_spellweaver_leandra 90 0 0 0 0 NORMAL global wod dressed_herald_dathomir_nsister_cave_leandra.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_leandra 0 0
|
||||
wod_satra_herbalist 90 0 0 0 0 NORMAL global wod dressed_dathomir_nightsister_herbalist.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_witch_herbs 0 0
|
||||
wod_ns_vendor 90 0 0 0 0 NORMAL global wod npc_dressed_wod_ns_vendor.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 string:item.vendor.vendor_table=wod_ns_vendor,int:ai.noClap=1 npc.vendor.vendor,conversation.wod_ns_vendor 0 0
|
||||
wod_culinarian_kais 90 0 0 0 0 NORMAL global wod dressed_dathomir_nightsister_obfuscatrix.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_witch_food 0 0
|
||||
wod_rancor_fath 90 0 0 0 0 NORMAL global wod dressed_dathomir_nightsister_rancor_tamer.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_rancor_mistress 0 0
|
||||
wod_tamer_diax 90 0 0 0 0 NORMAL global wod dressed_dathomir_nightsister_spellweaver.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_rancor_tamer_diax 0 0
|
||||
wod_sage_num 90 0 0 0 0 NORMAL global wod dressed_dathomir_nightsister_sage.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_sage 0 0
|
||||
wod_ghost_witch 90 0 0 0 0 NORMAL global wod dressed_wod_ghost_clan_mother.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ghost_witch 0 0
|
||||
wod_sm_food_vhaunda 90 0 0 0 0 NORMAL global wod dressed_vhaunda.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_witch_food 0 0
|
||||
wod_sm_azzenaj 90 0 0 0 0 NORMAL global wod dressed_herald_dathomir_nsister_cave_azzenaj.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_azzenaj 0 0
|
||||
wod_sm_herbalist_telo 90 0 0 0 0 NORMAL global wod dressed_dathomir_sing_mt_clan_herbalist.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_witch_herbs 0 0
|
||||
wod_sm_vurlene 90 0 0 0 0 NORMAL global wod dressed_vurlene.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_guide 0 0
|
||||
wod_sm_rancor_handler_izaryx 90 0 0 0 0 NORMAL global wod dressed_izaryx.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_rancor_handler_izaryx 0 0
|
||||
wod_sm_rancor_tamer_zideera 90 0 0 0 0 NORMAL global wod wod_sm_rancor_handler.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_rancor_tamer_zideera 0 0
|
||||
wod_sm_sage_ha'zel 90 0 0 0 0 NORMAL global wod dressed_dathomir_sing_mt_clan_sage.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_sage 0 0
|
||||
wod_sm_klee 90 0 0 0 0 NORMAL global wod dressed_aujante_klee.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_klee 0 0
|
||||
wod_sm_vendor 90 0 0 0 0 NORMAL global wod dressed_wod_sm_vendor.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 string:item.vendor.vendor_table=wod_sm_vendor,int:ai.noClap=1 npc.vendor.vendor,conversation.wod_sm_vendor 0 0
|
||||
wod_omogg_rep 90 0 0 0 0 NORMAL dathomir wod dressed_wod_omogg_rep.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_omogg_rep 0 0
|
||||
wod_rubina 90 0 0 0 0 NORMAL dathomir wod dressed_wod_rubina.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_rubina 0 0
|
||||
wod_outcast_1 90 0 0 0 0 NORMAL dathomir wod wod_outcast_1.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast1 0 0
|
||||
wod_outcast_2 90 0 0 0 0 NORMAL dathomir wod wod_outcast_2.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast2 0 0
|
||||
wod_outcast_3 90 0 0 0 0 NORMAL dathomir wod wod_outcast_3.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast3 0 0
|
||||
wod_outcast_4 90 0 0 0 0 NORMAL dathomir wod wod_outcast_4.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast4 0 0
|
||||
wod_outcast_5 90 0 0 0 0 NORMAL dathomir wod wod_outcast_5.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast5 0 0
|
||||
wod_outcast_6 90 0 0 0 0 NORMAL dathomir wod wod_outcast_6.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast6 0 0
|
||||
wod_outcast_7 90 0 0 0 0 NORMAL dathomir wod wod_outcast_7.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_outcast7 0 0
|
||||
wod_gatekeeper_saik 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_nightsister_guardian.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_guide 0 0
|
||||
wod_spellweaver_leandra 90 0 0 0 0 NORMAL dathomir wod dressed_herald_dathomir_nsister_cave_leandra.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_leandra 0 0
|
||||
wod_satra_herbalist 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_nightsister_herbalist.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_witch_herbs 0 0
|
||||
wod_ns_vendor 90 0 0 0 0 NORMAL dathomir wod npc_dressed_wod_ns_vendor.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 string:item.vendor.vendor_table=wod_ns_vendor,int:ai.noClap=1 npc.vendor.vendor,conversation.wod_ns_vendor 0 0
|
||||
wod_culinarian_kais 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_nightsister_obfuscatrix.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_witch_food 0 0
|
||||
wod_rancor_fath 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_nightsister_rancor_tamer.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_rancor_mistress 0 0
|
||||
wod_tamer_diax 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_nightsister_spellweaver.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_rancor_tamer_diax 0 0
|
||||
wod_sage_num 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_nightsister_sage.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ns_sage 0 0
|
||||
wod_ghost_witch 90 0 0 0 0 NORMAL dathomir wod dressed_wod_ghost_clan_mother.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_ghost_witch 0 0
|
||||
wod_sm_food_vhaunda 90 0 0 0 0 NORMAL dathomir wod dressed_vhaunda.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_witch_food 0 0
|
||||
wod_sm_azzenaj 90 0 0 0 0 NORMAL dathomir wod dressed_herald_dathomir_nsister_cave_azzenaj.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_azzenaj 0 0
|
||||
wod_sm_herbalist_telo 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_sing_mt_clan_herbalist.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_witch_herbs 0 0
|
||||
wod_sm_vurlene 90 0 0 0 0 NORMAL dathomir wod dressed_vurlene.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_guide 0 0
|
||||
wod_sm_rancor_handler_izaryx 90 0 0 0 0 NORMAL dathomir wod dressed_izaryx.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_rancor_handler_izaryx 0 0
|
||||
wod_sm_rancor_tamer_zideera 90 0 0 0 0 NORMAL dathomir wod wod_sm_rancor_handler.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_rancor_tamer_zideera 0 0
|
||||
wod_sm_sage_ha'zel 90 0 0 0 0 NORMAL dathomir wod dressed_dathomir_sing_mt_clan_sage.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_sm_sage 0 0
|
||||
wod_sm_klee 90 0 0 0 0 NORMAL dathomir wod dressed_aujante_klee.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_klee 0 0
|
||||
wod_sm_vendor 90 0 0 0 0 NORMAL dathomir wod dressed_wod_sm_vendor.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 string:item.vendor.vendor_table=wod_sm_vendor,int:ai.noClap=1 npc.vendor.vendor,conversation.wod_sm_vendor 0 0
|
||||
spider_nightsister_obfuscatrix 88 5 5 0 -2 ELITE dathomir spider_nightsister spider_nightsister dressed_dathomir_spider_nightsister_spellweaver.iff 0 35 85 100 50 100 100 50 100 2 1 80 npc/elite_npc:elite_force_light_npc_71_80 elite_npc_8 4 col_jedi_holocron,col_dejarik_holomonster,col_dejarik_table,col_shattered_shard_03 18 dath_spider npc root_defense=100,snare_defense=100 force_sword force_sword_ranged jedi_no_saber_6 jedi_no_saber_6 9 3 instant
|
||||
wod_rescue_initiate 90 0 0 0 0 NORMAL global wod dressed_wod_gray_outcast_01.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_rescue_initiate 0 0
|
||||
wod_spiderclan_matron 90 0 0 0 0 NORMAL global spider_nightsister spider_nightsister dressed_dathomir_spider_nightsister_matron.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_queen_mother 0 0
|
||||
wod_first_sister_aggro 91 0 0 0 0 ELITE dathomir wod wod_first_sister.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_first_sister 0 0
|
||||
wod_second_sister_aggro 91 0 0 0 0 ELITE dathomir wod wod_second_sister.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_second_sister 0 0
|
||||
wod_third_sister_aggro 91 0 0 0 0 ELITE dathomir wod wod_third_sister.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_third_sister 0 0
|
||||
giant_whuffa_worm 91 0 0 0 0 ELITE dathomir wod whuffa_worm.iff 3 3 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 0 0
|
||||
wod_rescue_initiate 90 0 0 0 0 NORMAL dathomir wod dressed_wod_gray_outcast_01.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_rescue_initiate 0 0
|
||||
wod_spiderclan_matron 90 0 0 0 0 NORMAL dathomir spider_nightsister spider_nightsister dressed_dathomir_spider_nightsister_matron.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_queen_mother 0 0
|
||||
wod_first_sister_aggro 91 0 0 0 0 ELITE dathomir wod wod_first_sister.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/elite_npc:elite_npc_81_90 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_first_sister 0 0
|
||||
wod_second_sister_aggro 91 0 0 0 0 ELITE dathomir wod wod_second_sister.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/elite_npc:elite_npc_81_90 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_second_sister 0 0
|
||||
wod_third_sister_aggro 91 0 0 0 0 ELITE dathomir wod wod_third_sister.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/elite_npc:elite_npc_81_90 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_third_sister 0 0
|
||||
giant_whuffa_worm 91 0 0 0 0 ELITE dathomir wod whuffa_worm.iff 3 3 0 0 0 0 0 0 0 0 0 2 creature/elite_creature:elite_creature_81_90 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 0 0
|
||||
wod_reanimated_slave 90 0 0 0 0 NORMAL dathomir wod wod_reanimated_slave_all 0 0 100 0 100 100 100 100 100 2 1 80 npc/elite_npc:elite_force_dark_npc_81_90 elite_npc_9 col_nightsister_valuables,col_sith_holocron,col_dejarik_holomonster,col_dejarik_table,col_shattered_shard_02 18 nightsister npc root_defense=100,snare_defense=100 force_sword force_sword_ranged jedi_no_saber_6 jedi_no_saber_6 8 8 1 instant
|
||||
wod_reanimated_witch 90 0 0 0 0 NORMAL dathomir wod wod_reanimated_witch_all 0 0 100 0 100 100 100 100 100 2 1 80 npc/elite_npc:elite_force_dark_npc_81_90 elite_npc_9 col_nightsister_valuables,col_sith_holocron,col_dejarik_holomonster,col_dejarik_table,col_shattered_shard_02 18 nightsister npc root_defense=100,snare_defense=100 force_sword force_sword_ranged jedi_no_saber_6 jedi_no_saber_6 8 8 1 instant
|
||||
wod_kyrisa 90 0 0 0 0 NORMAL global wod kyrisa.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_kyrisa 0 0
|
||||
wod_mutant_rancor_boss 95 4 0 0 0 BOSS dathomir wod beast_master/bm_mutated_rancor.iff 1.5 1.5 16 50 65 0 100 100 100 0 0 2 0 defaultProfile 3 90 creature/worldboss:generic_boss 50 wod_mutant_rancor_boss carnivore 100 100 100 100 expertise_glancing_blow_reduction=100,expertise_glancing_blow_ranged=100 int:bm_doNotShowExamineInfo=1 theme_park.wod.wod_mutant_rancor_combat wod_mutant_rancor_boss wod_mutant_rancor_boss 18 9 instant
|
||||
wod_kyrisa 90 0 0 0 0 NORMAL dathomir wod kyrisa.iff 1 1 0 0 0 0 0 0 0 0 0 2 npc/npc_81_90 generic_npc_9 housing_improvement_01,housing_improvement_02,housing_improvement_03,housing_improvement_04,housing_improvement_05,col_story_count_dooku_set_3,col_aurebesh_tiles npc 1 conversation.wod_kyrisa 0 0
|
||||
wod_mutant_rancor_boss 95 4 0 0 0 BOSS dathomir rancor wod_mutant_rancor_boss.iff 1.4 1.4 16 50 65 0 100 100 100 0 0 2 0 25000 50000 2 100 theme_park/wod:mutant_rancor_boss carnivore 100 100 100 100 expertise_glancing_blow_reduction=100,expertise_glancing_blow_ranged=100 int:bm_doNotShowExamineInfo=1 wod_mutant_rancor_boss wod_mutant_rancor_boss 18 9 instant
|
||||
|
||||
@@ -1,42 +1,45 @@
|
||||
spawns room loc_x loc_y loc_z yaw script respawn_time spawn_objvar mood animation_mood special_room special_room_script room_objvar room_objvar_name room_objvar_value name
|
||||
s s f f f f s i s s s s s s s s s
|
||||
bull_rancor r2 -8.601428 -30.804699 -30.050392 168.0609 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r3 -8.773282 -40.377964 -74.00169 -2.7895324 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r3 10.08469 -40.407578 -77.78322 -46.77785 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r4 30.987892 -45.1194 -52.411663 -124.901 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r4 44.557434 -46.09163 -96.00456 -52.613297 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r4 31.869045 -45.31506 -99.373474 64.39554 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r5 -7.775675 -45.58035 -146.06969 27.483908 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r5 -10.2257185 -44.64295 -135.90567 123.38395 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
bull_rancor r5 65.13616 -46.42392 -125.28311 -135.56181 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 53.660378 -56.415306 -178.17778 -31.897173 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r5 62.111526 -57.66139 -171.04495 -68.80876 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r5 45.043747 -56.41123 -162.11993 152.33679 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r5 29.787474 -60.09413 -182.19386 23.757977 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r7 -3.5947478 -64.07635 -235.09232 -13.363343 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r7 -23.20766 -63.702675 -255.92416 12.677673 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r7 -12.271714 -65.06 -204.91145 -0.4544657 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r8 -56.259617 -69.90387 -195.56255 32.800625 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -57.19804 -68.82134 -166.29263 141.7156 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
bull_rancor r8 -94.99297 -73.69129 -170.22879 95.26433 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -109.13508 -69.475555 -120.326744 165.84955 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
bull_rancor r8 -98.12561 -70.41599 -118.50827 177.53352 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -88.87012 -70.0929 -120.475296 -157.7134 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r9 -58.175285 -70.141174 -83.921486 -151.09483 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r9 -43.538574 -69.98428 -85.21597 -143.86855 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r9 -65.71178 -68.32511 -106.71527 -48.704987 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r9 -53.527008 -68.605965 -96.753746 -92.26262 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r9 -14.307875 -68.92318 -96.35253 -94.83764 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r9 -43.056736 -69.45824 -110.93021 -72.1382 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r10 -19.982327 -79.477455 -143.03452 -56.011623 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r10 -27.313997 -79.95101 -148.0918 -38.419476 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
ancient_bull_rancor r10 -28.62353 -79.03438 -135.11885 161.72774 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -98.52564 -69.492615 -96.1891 167.71294 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
mutant_rancor r8 -117.66265 -68.93914 -169.87744 97.14466 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
bull_rancor r8 -107.45582 -69.02593 -204.6095 89.402794 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
ancient_bull_rancor r5 24.986141 -51.253506 -141.47128 -21.8647 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 37.71992 -49.632626 -134.91286 -54.08176 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
bull_rancor r5 22.482597 -45.857426 -125.806305 48.529182 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
ancient_bull_rancor r4 40.524883 -45.925945 -64.20013 -46.749447 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
wod_kyrisa r11 -88.33893 -101.26351 -108.22034 167.01736 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=1
|
||||
object/tangible/quest/wod/wod_rancor_cage.iff r11 -95.22308 -100.6459 -92.409775 169.82025 quest.task.ground.wave_event_controller_npc 900 int:event_wave_controller=1
|
||||
bull_rancor r3 -8.773282 -40.377964 -74.00169 -2.7895324 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r3 10.08469 -40.407578 -77.78322 -46.77785 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r4 30.987892 -45.1194 -52.411663 -124.901 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r4 44.557434 -46.09163 -96.00456 -52.613297 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
rancor_monstrous_brute r4 31.869045 -45.31506 -99.373474 64.39554 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 -7.775675 -45.58035 -146.06969 27.483908 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 -10.2257185 -44.64295 -135.90567 123.38395 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r5 65.13616 -46.42392 -125.28311 -135.56181 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 53.660378 -56.415306 -178.17778 -31.897173 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 62.111526 -57.66139 -171.04495 -68.80876 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 45.043747 -56.41123 -162.11993 152.33679 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
rancor_monstrous_brute r5 29.787474 -60.09413 -182.19386 23.757977 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r7 -3.5947478 -64.07635 -235.09232 -13.363343 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r7 -23.20766 -63.702675 -255.92416 12.677673 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r7 -12.271714 -65.06 -204.91145 -0.4544657 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r8 -56.259617 -69.90387 -195.56255 32.800625 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -57.19804 -68.82134 -166.29263 141.7156 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r8 -94.99297 -73.69129 -170.22879 95.26433 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -109.13508 -69.475555 -120.326744 165.84955 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r8 -98.12561 -70.41599 -118.50827 177.53352 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r9 -58.175285 -70.141174 -83.921486 -151.09483 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r9 -65.71178 -68.32511 -106.71527 -48.704987 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
rancor_monstrous_brute r9 -53.527008 -68.605965 -96.753746 -92.26262 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r9 -43.056736 -69.45824 -110.93021 -72.1382 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r10 -19.982327 -79.477455 -143.03452 -56.011623 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r10 -27.313997 -79.95101 -148.0918 -38.419476 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
ancient_bull_rancor r10 -28.62353 -79.03438 -135.11885 161.72774 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -98.52564 -69.492615 -96.1891 167.71294 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r8 -117.66265 -68.93914 -169.87744 97.14466 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r8 -107.45582 -69.02593 -204.6095 89.402794 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
ancient_bull_rancor r5 24.986141 -51.253506 -141.47128 -21.8647 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
mutant_rancor r5 37.71992 -49.632626 -134.91286 -54.08176 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
bull_rancor r5 22.482597 -45.857426 -125.806305 48.529182 theme_park.dungeon.generic_death 600 int:ai.defaultCalmBehavior=2
|
||||
ancient_bull_rancor r4 40.524883 -45.925945 -64.20013 -46.749447 theme_park.dungeon.generic_death 900 int:ai.defaultCalmBehavior=2
|
||||
wod_kyrisa r11 -102.3 -99.2 -113.1 129 theme_park.dungeon.generic_death 1 string:wod.kyrisa=1
|
||||
object/tangible/quest/wod/wod_rancor_cage.iff r11 -95.22308 -100.6459 -92.409775 169.82025 1
|
||||
object/tangible/ground_spawning/patrol_waypoint.iff r11 -96.1 -100.9 -98.2 0 0
|
||||
object/tangible/ground_spawning/patrol_waypoint.iff r11 -85.7 -100.2 -96.9 0 0
|
||||
object/tangible/ground_spawning/patrol_waypoint.iff r11 -104.9 -98.7 -119.8 0 0 string:wod.effect_middle_left=1
|
||||
object/tangible/ground_spawning/patrol_waypoint.iff r11 -77.3 -99.3 -112.6 0 0 string:wod.effect_middle_right=1
|
||||
object/tangible/ground_spawning/patrol_waypoint.iff r11 -90 -103.2 -126.9 0 0 string:wod.effect_center=1
|
||||
object/tangible/ground_spawning/patrol_waypoint.iff r8 -91.1 -99.9 -153.4 0 0 string:wod.effect_far=1
|
||||
object/tangible/ground_spawning/patrol_waypoint.iff r11 -90.8537 -100.0102 -91.8525 -156.1289 theme_park.wod.corrupted_rancor_cage_controller 0
|
||||
|
||||
@@ -8,18 +8,15 @@ import java.util.Hashtable;
|
||||
import java.util.Vector;
|
||||
import script.base_script;
|
||||
|
||||
import script.library.ai_lib;
|
||||
import script.library.chat;
|
||||
import script.library.conversation;
|
||||
import script.library.groundquests;
|
||||
import script.library.trial;
|
||||
import script.library.utils;
|
||||
import script.library.*;
|
||||
|
||||
public class wod_kyrisa extends script.base_script
|
||||
{
|
||||
public wod_kyrisa()
|
||||
{
|
||||
}
|
||||
public static final string_id BOSS_BEGIN = new string_id("theme_park/outbreak/outbreak", "boss_begin");
|
||||
public static final string_id BOSS_LEAVING = new string_id("theme_park/outbreak/outbreak", "boss_leaving");
|
||||
public static String c_stringFile = "conversation/wod_kyrisa";
|
||||
public boolean wod_kyrisa_condition__defaultCondition(obj_id player, obj_id npc) throws InterruptedException
|
||||
{
|
||||
@@ -35,21 +32,45 @@ public class wod_kyrisa extends script.base_script
|
||||
}
|
||||
public boolean wod_kyrisa_condition_bossCurrentlyBusy(obj_id player, obj_id npc) throws InterruptedException
|
||||
{
|
||||
obj_id[] objects = trial.getObjectsInDungeonWithObjVar(npc, "event_wave_controller");
|
||||
if (objects.length < 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
int wave = utils.getIntScriptVar(objects[0], "waveEventCurrentWave");
|
||||
return wave > 0;
|
||||
return utils.getBooleanScriptVar(npc, "wod.busyNow") || !utils.getBooleanScriptVar(utils.getObjIdScriptVar(npc, "wod.cage_controller"), "wod.ready");
|
||||
}
|
||||
public boolean wod_kyrisa_condition_playerHasNoGroup(obj_id player, obj_id npc) throws InterruptedException
|
||||
{
|
||||
obj_id groupid = getGroupObject(player);
|
||||
if (isValidId(groupid))
|
||||
if(isGod(player) || isIdValid(player))
|
||||
{
|
||||
sendSystemMessageTestingOnly(player, "God Mode: You are bypassing the group requirement because you are in God Mode.");
|
||||
return false;
|
||||
}
|
||||
final obj_id groupId = getGroupObject(player);
|
||||
if (isValidId(groupId))
|
||||
{
|
||||
// The player must be grouped, there must be at least 2 players in the group,
|
||||
// the 2 minimum players must be within 30m, and all players within 30m must be active
|
||||
final obj_id[] members = getGroupMemberIds(groupId);
|
||||
int playerCount = 0;
|
||||
for (obj_id member : members)
|
||||
{
|
||||
if(isPlayer(member) && getDistance(player, npc) < 30f)
|
||||
{
|
||||
if(!isPlayerActive(member))
|
||||
{
|
||||
sendSystemMessageTestingOnly(player, "All members of your group present to participate must be active and at the keyboard.");
|
||||
return true;
|
||||
}
|
||||
playerCount++;
|
||||
}
|
||||
}
|
||||
if(playerCount < 2)
|
||||
{
|
||||
sendSystemMessageTestingOnly(player, "You must have at least 2 players in your group who are in the vicinity to participate.");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
sendSystemMessageTestingOnly(player, "You must have a group of at least 2 players to participate.");
|
||||
return true;
|
||||
}
|
||||
public boolean wod_kyrisa_condition_hasQuestAndGroup(obj_id player, obj_id npc) throws InterruptedException
|
||||
@@ -71,36 +92,46 @@ public class wod_kyrisa extends script.base_script
|
||||
}
|
||||
public void wod_kyrisa_action_sendReturnedSignalKyrisaChallenged(obj_id player, obj_id npc) throws InterruptedException
|
||||
{
|
||||
obj_id[] objects = trial.getObjectsInDungeonWithObjVar(npc, "event_wave_controller");
|
||||
if (objects.length < 1)
|
||||
dictionary d = new dictionary();
|
||||
if(isIdValid(player) || (isGod(player) && !isIdValid(getGroupObject(player))))
|
||||
{
|
||||
return;
|
||||
}
|
||||
faceTo(npc, player);
|
||||
groundquests.sendSignal(player, "challengedKyrisa");
|
||||
obj_id myGroup = getGroupObject(player);
|
||||
if (isValidId(myGroup))
|
||||
{
|
||||
obj_id[] members = getGroupMemberIds(myGroup);
|
||||
for (int i = 0; i < members.length; i++)
|
||||
d.put("groupId", obj_id.NULL_ID);
|
||||
d.put("groupMembers", new obj_id[]{player});
|
||||
utils.setScriptVar(npc, "wod.groupInProgress", obj_id.NULL_ID);
|
||||
utils.setScriptVar(npc, "wod.groupInProgressMembers", new obj_id[]{player});
|
||||
if (groundquests.isTaskActive(player, "wod_kyrisa_boss_fight", "challengeKyrisa") || groundquests.isTaskActive(player, "wod_kyrisa_boss_fight_ns", "challengeKyrisa"))
|
||||
{
|
||||
if (!isIdValid(members[i]) || !exists(members[i]))
|
||||
groundquests.sendSignal(player, "challengedKyrisa");
|
||||
}
|
||||
sendSystemMessage(player, BOSS_BEGIN);
|
||||
}
|
||||
else
|
||||
{
|
||||
final obj_id groupId = getGroupObject(player);
|
||||
final obj_id[] groupMembers = getGroupMemberIds(groupId);
|
||||
d.put("groupId", groupId);
|
||||
d.put("groupMembers", groupMembers);
|
||||
utils.setScriptVar(npc, "wod.groupInProgress", groupId);
|
||||
utils.setScriptVar(npc, "wod.groupInProgressMembers", groupMembers);
|
||||
for(obj_id member : groupMembers)
|
||||
{
|
||||
if(getDistance(npc, member) < 30f)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (getDistance(members[i], npc) > 200)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (groundquests.isTaskActive(members[i], "wod_kyrisa_boss_fight", "challengeKyrisa") || groundquests.isTaskActive(members[i], "wod_kyrisa_boss_fight_ns", "challengeKyrisa"))
|
||||
{
|
||||
groundquests.sendSignal(members[i], "challengedKyrisa");
|
||||
if (groundquests.isTaskActive(member, "wod_kyrisa_boss_fight", "challengeKyrisa") || groundquests.isTaskActive(member, "wod_kyrisa_boss_fight_ns", "challengeKyrisa"))
|
||||
{
|
||||
groundquests.sendSignal(member, "challengedKyrisa");
|
||||
}
|
||||
}
|
||||
sendSystemMessage(member, BOSS_BEGIN);
|
||||
}
|
||||
}
|
||||
dictionary dict = new dictionary();
|
||||
dict.put("player", player);
|
||||
messageTo(objects[0], "waveEventControllerNPCStart", dict, 0, false);
|
||||
final obj_id rancor = utils.getObjIdScriptVar(npc, "wod.corrupted_rancor_mutation");
|
||||
faceTo(npc, rancor);
|
||||
utils.setScriptVar(npc, "wod.busyNow", true);
|
||||
doAnimationAction(npc, anims.PLAYER_FORCE_LIGHTNING);
|
||||
doCombatResults("force_weaken_1_particle_level_1_medium", combat.makeDummyAttackerResults(npc, getDefaultWeapon(npc)), combat.makeDummyDefenderResults(rancor));
|
||||
messageTo(rancor, "startBossAttack", d, 1f, false);
|
||||
messageTo(utils.getObjIdScriptVar(npc, "wod.cage_controller"), "destroyCage", null, 2f, false);
|
||||
}
|
||||
public int wod_kyrisa_handleBranch1(obj_id player, obj_id npc, string_id response) throws InterruptedException
|
||||
{
|
||||
@@ -305,11 +336,13 @@ public class wod_kyrisa extends script.base_script
|
||||
detachScript(self, "conversation.wod_kyrisa");
|
||||
}
|
||||
setCondition(self, CONDITION_CONVERSABLE);
|
||||
setCondition(self, CONDITION_INTERESTING);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int OnAttach(obj_id self) throws InterruptedException
|
||||
{
|
||||
setCondition(self, CONDITION_CONVERSABLE);
|
||||
setCondition(self, CONDITION_INTERESTING);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int OnObjectMenuRequest(obj_id self, obj_id player, menu_info menuInfo) throws InterruptedException
|
||||
@@ -442,4 +475,60 @@ public class wod_kyrisa extends script.base_script
|
||||
utils.removeScriptVar(player, "conversation.wod_kyrisa.branchId");
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnHearSpeech(obj_id self, obj_id objSpeaker, String strText) throws InterruptedException
|
||||
{
|
||||
if(isGod(objSpeaker)) {
|
||||
if (strText.equalsIgnoreCase("start"))
|
||||
{
|
||||
wod_kyrisa_action_sendReturnedSignalKyrisaChallenged(objSpeaker, self);
|
||||
}
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int endFightNoDefeat(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
dictionary d = new dictionary();
|
||||
d.put("wasDefeat", false);
|
||||
messageTo(utils.getObjIdScriptVar(self, "wod.cage_controller"), "resetCage", d, 0f, false);
|
||||
string_id[] taunts = new string_id[] {
|
||||
new string_id("npc_reaction/fancy", "gloat_9"),
|
||||
new string_id("npc_reaction/fancy", "gloat_10"),
|
||||
new string_id("npc_reaction/fancy", "gloat_14"),
|
||||
new string_id("npc_reaction/fancy", "gloat_15")
|
||||
};
|
||||
prose_package pp = new prose_package();
|
||||
pp.stringId = taunts[rand(0, taunts.length-1)];
|
||||
final obj_id[] members = utils.getObjIdArrayScriptVar(self, "wod.groupInProgressMembers");
|
||||
commPlayers(self, members, pp);
|
||||
for(obj_id player : members)
|
||||
{
|
||||
sendSystemMessage(player, BOSS_LEAVING);
|
||||
if(groundquests.isTaskActive(player, "wod_kyrisa_boss_fight", "defeatRancor"))
|
||||
{
|
||||
groundquests.sendSignal(player, "playerFailedBoss");
|
||||
}
|
||||
if(groundquests.isTaskActive(player, "wod_kyrisa_boss_fight_ns", "defeatRancor"))
|
||||
{
|
||||
groundquests.sendSignal(player, "playerFailedBoss");
|
||||
}
|
||||
}
|
||||
utils.removeScriptVar(self, "wod.groupInProgress");
|
||||
utils.removeScriptVar(self, "wod.groupInProgressMembers");
|
||||
utils.setScriptVar(self, "wod.busyNow", false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int endFightWithDefeat(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
dictionary d = new dictionary();
|
||||
d.put("wasDefeat", true);
|
||||
utils.removeScriptVar(self, "wod.groupInProgress");
|
||||
utils.removeScriptVar(self, "wod.groupInProgressMembers");
|
||||
utils.setScriptVar(self, "wod.busyNow", false);
|
||||
messageTo(utils.getObjIdScriptVar(self, "wod.cage_controller"), "resetCage", d, 0f, false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3909,4 +3909,23 @@ public class combat extends script.base_script
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public static attacker_results makeDummyAttackerResults(obj_id objAttacker, obj_id weapon) throws InterruptedException
|
||||
{
|
||||
attacker_results cbtAttackerResults = new attacker_results();
|
||||
cbtAttackerResults.id = objAttacker;
|
||||
cbtAttackerResults.weapon = weapon;
|
||||
cbtAttackerResults.endPosture = getPosture(objAttacker);
|
||||
return cbtAttackerResults;
|
||||
}
|
||||
public static defender_results[] makeDummyDefenderResults(obj_id objDefender) throws InterruptedException
|
||||
{
|
||||
defender_results[] cbtDefenderResults = new defender_results[1];
|
||||
cbtDefenderResults[0] = new defender_results();
|
||||
cbtDefenderResults[0].id = objDefender;
|
||||
cbtDefenderResults[0].endPosture = 0;
|
||||
cbtDefenderResults[0].result = COMBAT_RESULT_HIT;
|
||||
cbtDefenderResults[0].damageAmount = 0;
|
||||
cbtDefenderResults[0].hitLocation = 0;
|
||||
return cbtDefenderResults;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,4 +421,29 @@ public class generic_spawner extends script.base_script
|
||||
}
|
||||
return level;
|
||||
}
|
||||
|
||||
public int OnHearSpeech(obj_id self, obj_id objSpeaker, String strText) throws InterruptedException
|
||||
{
|
||||
if(isGod(objSpeaker))
|
||||
{
|
||||
if(strText.equalsIgnoreCase("clean"))
|
||||
{
|
||||
messageTo(self, "dungeonCleanup", null, 0f, false);
|
||||
sendSystemMessageTestingOnly(objSpeaker, "God Mode: Starting cleanup of dungeon "+self+"...");
|
||||
}
|
||||
if(strText.equalsIgnoreCase("spawn"))
|
||||
{
|
||||
if (!hasObjVar(self, "space_dungeon.name") && !hasScript(self, "systems.instance.instance_manager"))
|
||||
{
|
||||
messageTo(self, "beginSpawn", null, 0f, false);
|
||||
sendSystemMessageTestingOnly(objSpeaker, "God Mode: Starting spawn of dungeon "+self+"...");
|
||||
}
|
||||
else
|
||||
{
|
||||
sendSystemMessageTestingOnly(objSpeaker, "Error: You can't use that here.");
|
||||
}
|
||||
}
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
}
|
||||
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
package script.theme_park.wod;
|
||||
|
||||
import script.dictionary;
|
||||
import script.library.create;
|
||||
import script.library.pet_lib;
|
||||
import script.library.utils;
|
||||
import script.location;
|
||||
import script.obj_id;
|
||||
|
||||
public class corrupted_rancor_cage_controller extends script.base_script {
|
||||
|
||||
public corrupted_rancor_cage_controller()
|
||||
{
|
||||
}
|
||||
|
||||
public int OnAttach(obj_id self) throws InterruptedException
|
||||
{
|
||||
createTriggerVolume("cageInterior", 7f, true);
|
||||
messageTo(self, "resetCage", null, 3f, false);
|
||||
utils.setScriptVar(self, "wod.cageEffectPoints",
|
||||
getAllObjectsWithTemplate(getLocation(self), 8f, "object/tangible/ground_spawning/patrol_waypoint.iff"));
|
||||
obj_id[] creatures = getAllObjectsWithObjVar(getLocation(self), 30f, "wod.kyrisa");
|
||||
if(creatures != null && creatures.length > 0)
|
||||
{
|
||||
utils.setScriptVar(self, "wod.kyrisa", creatures[0]);
|
||||
utils.setScriptVar(creatures[0], "wod.cage_controller", self);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int resetCage(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
final obj_id[] contents = getTriggerVolumeContents(self, "cageInterior");
|
||||
final location loc = getLocation(self);
|
||||
final obj_id cell = getContainedBy(self);
|
||||
final obj_id wall = createObject("object/static/item/item_stone_cage_wall.iff",
|
||||
new location(-90.9413f, -100.8f, -96.9441f, loc.area, cell));
|
||||
setYaw(wall, -7f);
|
||||
utils.setScriptVar(self, "wod.wall", wall);
|
||||
for(obj_id o : contents)
|
||||
{
|
||||
if(isPlayer(o) || pet_lib.isPet(o) || isDead(o))
|
||||
{
|
||||
setLocation(o, new location(-90f, -103.2f, -126.9f, loc.area, cell));
|
||||
}
|
||||
}
|
||||
if(params.getBoolean("wasDefeat"))
|
||||
{
|
||||
utils.setScriptVar(self, "wod.ready", false);
|
||||
messageTo(self, "doSpawnEvent", null, 900f, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
messageTo(self, "doSpawnEvent", null, 0f, false);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int destroyCage(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
utils.setScriptVar(self, "wod.ready", false);
|
||||
final obj_id[] players = getPlayerCreaturesInRange(self, 40f);
|
||||
for(obj_id e : utils.getObjIdArrayScriptVar(self, "wod.cageEffectPoints"))
|
||||
{
|
||||
playClientEffectLoc(players, "clienteffect/lair_damage_heavy_shake.cef", getLocation(e), 0f);
|
||||
}
|
||||
for(obj_id e : getAllObjectsWithTemplate(getLocation(self), 40f, "object/tangible/ground_spawning/patrol_waypoint.iff"))
|
||||
{
|
||||
playClientEffectLoc(players, "appearance/pt_miasma_of_fog_greenish.prt", getLocation(e), 0f);
|
||||
}
|
||||
destroyObject(utils.getObjIdScriptVar(self, "wod.wall"));
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int doSpawnEvent(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
final obj_id creature = create.createCreature("wod_mutant_rancor_boss",
|
||||
new location(-90.8537f, -100.0102f, -91.8525f, getLocation(self).area, getContainedBy(self)), true);
|
||||
attachScript(creature, "theme_park.wod.corrupted_rancor_mutation_npc");
|
||||
utils.setScriptVar(self, "wod.ready", true);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnHearSpeech(obj_id self, obj_id objSpeaker, String strText) throws InterruptedException
|
||||
{
|
||||
if(isGod(objSpeaker))
|
||||
{
|
||||
if(strText.equalsIgnoreCase("resetCage"))
|
||||
{
|
||||
messageTo(self, "resetCage", null, 0f, false);
|
||||
sendSystemMessageTestingOnly(objSpeaker, "Resetting cage...");
|
||||
}
|
||||
if(strText.equalsIgnoreCase("destroyCage"))
|
||||
{
|
||||
messageTo(self, "destroyCage", null, 0f, false);
|
||||
sendSystemMessageTestingOnly(objSpeaker, "Destroying cage...");
|
||||
}
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
}
|
||||
+235
@@ -0,0 +1,235 @@
|
||||
package script.theme_park.wod;
|
||||
|
||||
import script.dictionary;
|
||||
import script.library.*;
|
||||
import script.obj_id;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
public class corrupted_rancor_mutation_npc extends script.base_script
|
||||
{
|
||||
public corrupted_rancor_mutation_npc()
|
||||
{
|
||||
}
|
||||
|
||||
public static final String BUFF_RANCOR_ARMOR = "wod_rancor_mutation";
|
||||
public static final String BUFF_RANCOR_DAMAGE = "wod_rancor_super_strength";
|
||||
public static final String BUFF_RANCOR_BYPASS_ARMOR = "wod_rancor_razor_claws";
|
||||
public static final String DEBUFF_FINAL_ACID = "wod_decompose";
|
||||
public static final String[] RANDOM_DEBUFFS = {
|
||||
"obfuscation",
|
||||
"confusion",
|
||||
"wod_agony",
|
||||
"wavering",
|
||||
"corrosion"
|
||||
};
|
||||
public static final String NS_BICEP_SCHEMATIC = "item_wod_bossloot_ns_bracer";
|
||||
public static final String SMC_BICEP_SCHEMATIC = "item_wod_bossloot_smc_bicep_";
|
||||
public static final String SMC_BRACER_SCHEMATIC = "item_wod_bossloot_smc_bracer_";
|
||||
public static final int REPEAT_TIME = 45;
|
||||
public static final int OFFSET_TIME = 15;
|
||||
public static int buffStartTime = 0;
|
||||
|
||||
public int OnAttach(obj_id self) throws InterruptedException
|
||||
{
|
||||
setInvulnerable(self, true);
|
||||
setYaw(self, -156.1289f);
|
||||
ai_lib.setDefaultCalmBehavior(self, ai_lib.BEHAVIOR_SENTINEL);
|
||||
recurringMessageTo(self, "runGlowAppearanceLoop", null, 10f);
|
||||
handleBuffValidation(self);
|
||||
handleControllerSetup(self);
|
||||
utils.setScriptVar(self, "home", getTopMostContainer(self));
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnEnteredCombat(obj_id self) throws InterruptedException
|
||||
{
|
||||
handleBuffValidation(self);
|
||||
recurringMessageTo(self, "runRandomPlayerDebuffLoop", null, rand(35f, 55f));
|
||||
recurringMessageTo(self, "handleLocationValidation", null, 5f);
|
||||
recurringMessageTo(self, "handleRandomCombatTarget", null, rand(25f, 35f));
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnExitedCombat(obj_id self) throws InterruptedException
|
||||
{
|
||||
if(!isDead(self))
|
||||
{
|
||||
final obj_id kyrisa = utils.getObjIdScriptVar(self, "wod.kyrisa");
|
||||
messageTo(kyrisa, "endFightNoDefeat", null, 5f, false);
|
||||
setInvulnerable(self, true);
|
||||
cancelRecurringMessageTo(self, "runRandomPlayerDebuffLoop");
|
||||
cancelRecurringMessageTo(self, "handleLocationValidation");
|
||||
cancelRecurringMessageTo(self, "handleRandomCombatTarget");
|
||||
playClientEffectLoc(self, "appearance/pt_fog_barrier.prt", getLocation(self), 0f);
|
||||
playClientEffectLoc(self, "appearance/pt_acidfield_explode.prt", getLocation(self), 0.0f);
|
||||
setCreatureCoverVisibility(self, false);
|
||||
destroyObject(self);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnDeath(obj_id self, obj_id killer, obj_id corpseId) throws InterruptedException
|
||||
{
|
||||
for (obj_id attacker : utils.getObjIdArrayScriptVar(self, "groupMembers"))
|
||||
{
|
||||
if(getDistance(self, attacker) < 40f)
|
||||
{
|
||||
if(!luck.isLucky(attacker))
|
||||
{
|
||||
playClientEffectLoc(attacker, "appearance/pt_acidfield_explode.prt", getLocation(attacker), 0.0f);
|
||||
buff.applyBuff(attacker, DEBUFF_FINAL_ACID);
|
||||
}
|
||||
if(groundquests.isTaskActive(attacker, "wod_kyrisa_boss_fight", "defeatRancor"))
|
||||
{
|
||||
groundquests.completeTask(attacker, "wod_kyrisa_boss_fight", "defeatRancor");
|
||||
}
|
||||
else if(groundquests.isTaskActive(attacker, "wod_kyrisa_boss_fight_ns", "defeatRancor"))
|
||||
{
|
||||
groundquests.completeTask(attacker, "wod_kyrisa_boss_fight_ns", "defeatRancor");
|
||||
}
|
||||
if(badge.hasBadge(attacker, "bdge_wod_rancor_boss"))
|
||||
{
|
||||
badge.grantBadge(attacker, "bdge_wod_rancor_boss");
|
||||
}
|
||||
}
|
||||
}
|
||||
messageTo(utils.getObjIdScriptVar(self, "wod.kyrisa"), "endFightWithDefeat", null, 0f, false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnCreatureDamaged(obj_id self, obj_id attacker, obj_id weapon, int[] damage) throws InterruptedException
|
||||
{
|
||||
final obj_id[] groupMembers = utils.getObjIdArrayScriptVar(self, "groupMembers");
|
||||
if(!Arrays.asList(groupMembers).contains(attacker))
|
||||
{
|
||||
sendSystemMessageTestingOnly(self, "You are not a group participant in this attack so your combat damage does not harm the creature.");
|
||||
addToHealth(self, IntStream.of(damage).sum());
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnDestroy(obj_id self) throws InterruptedException
|
||||
{
|
||||
cancelRecurringMessageTo(self, "runGlowAppearanceLoop");
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int startBossAttack(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
doAnimationAction(self, "threaten");
|
||||
setInvulnerable(self, false);
|
||||
final obj_id[] group = params.getObjIdArray("groupMembers");
|
||||
utils.setScriptVar(self, "groupMembers", group);
|
||||
if(group != null && group.length > 0)
|
||||
{
|
||||
for (obj_id player : group) {
|
||||
setHate(self, player, 10000f);
|
||||
startCombat(self, player);
|
||||
}
|
||||
}
|
||||
messageTo(self, "endCombatTimerExpired", null, 600f, false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int endCombatTimerExpired(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
if(exists(self) && !isDead(self))
|
||||
{
|
||||
stopCombat(self);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public static void handleBuffValidation(obj_id self) throws InterruptedException
|
||||
{
|
||||
buff.applyBuffWithStackCount(self, BUFF_RANCOR_ARMOR, 10);
|
||||
buff.applyBuffWithStackCount(self, BUFF_RANCOR_DAMAGE, 1);
|
||||
buff.applyBuffWithStackCount(self, BUFF_RANCOR_BYPASS_ARMOR, 1);
|
||||
}
|
||||
|
||||
public static void handleControllerSetup(obj_id self) throws InterruptedException
|
||||
{
|
||||
// find Kyrisa (there will only ever be 1, so we can take a shortcut here)
|
||||
obj_id[] creatures = getAllObjectsWithObjVar(getLocation(self), 30f, "wod.kyrisa");
|
||||
if(creatures != null && creatures.length > 0)
|
||||
{
|
||||
utils.setScriptVar(self, "wod.kyrisa", creatures[0]);
|
||||
utils.setScriptVar(creatures[0], "wod.corrupted_rancor_mutation", self);
|
||||
}
|
||||
// find Effect controllers
|
||||
utils.setScriptVar(self, "wod.effect_randoms",
|
||||
getAllObjectsWithTemplate(getLocation(self), 40f, "object/tangible/ground_spawning/patrol_waypoint.iff"));
|
||||
}
|
||||
|
||||
public int runGlowAppearanceLoop(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
playClientEffectObj(self, "appearance/pt_light_indoor_glow_blue.prt", self, "muzzle");
|
||||
playClientEffectObj(self, "appearance/pt_light_indoor_glow_blue.prt", self, "l_arm");
|
||||
playClientEffectObj(self, "appearance/pt_light_indoor_glow_blue.prt", self, "r_arm");
|
||||
playClientEffectObj(self, "appearance/pt_light_indoor_glow_blue.prt", self, "l_thigh");
|
||||
playClientEffectObj(self, "appearance/pt_light_indoor_glow_blue.prt", self, "r_thigh");
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int handleLocationValidation(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
final obj_id home = utils.getObjIdScriptVar(self, "home");
|
||||
final obj_id container = getContainedBy(self);
|
||||
if(container != getCellId(home, "r11") && container != getCellId(home, "r8"))
|
||||
{
|
||||
stopCombat(self);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int runRandomPlayerDebuffLoop(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
final obj_id[] players = getPlayerCreaturesInRange(self, 45f);
|
||||
final List<obj_id> potentialTargets = new ArrayList<>();
|
||||
for (obj_id player : players)
|
||||
{
|
||||
if(getHate(self, player) >= 1)
|
||||
{
|
||||
if(!luck.isLucky(player))
|
||||
{
|
||||
potentialTargets.add(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(potentialTargets.size() > 0)
|
||||
{
|
||||
final obj_id target = potentialTargets.get(rand(0, potentialTargets.size()-1));
|
||||
utils.setScriptVar(self, "wod_mutant_rancor.lastRandomDebuffPlayer", target);
|
||||
playClientEffectLoc(target, "appearance/pt_acidfield_explode.prt", getLocation(target), 0.0f);
|
||||
playClientEffectLoc(target, "appearance/pt_acidfield_medium.prt", getLocation(target), 0.0f);
|
||||
buff.applyBuff(target, RANDOM_DEBUFFS[rand(0, RANDOM_DEBUFFS.length-1)]);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int handleRandomCombatTarget(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
final obj_id[] group = params.getObjIdArray("groupMembers");
|
||||
final List<obj_id> potentialTargets = new ArrayList<>();
|
||||
if(group != null && group.length > 1)
|
||||
{
|
||||
for(obj_id player : group)
|
||||
{
|
||||
if(utils.getDistance2D(self, player) < 30)
|
||||
{
|
||||
potentialTargets.add(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(potentialTargets.size() > 0)
|
||||
{
|
||||
startCombat(self, potentialTargets.get(rand(0, potentialTargets.size()-1)));
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package script.theme_park.wod;
|
||||
|
||||
import script.dictionary;
|
||||
import script.library.buff;
|
||||
import script.obj_id;
|
||||
|
||||
public class mutant_rancor_npc extends script.base_script {
|
||||
|
||||
public mutant_rancor_npc()
|
||||
{
|
||||
}
|
||||
|
||||
public static final String[] BUFFS = {
|
||||
"wod_rancor_mutation",
|
||||
"wod_rancor_super_strength",
|
||||
"wod_rancor_razor_claws"
|
||||
};
|
||||
|
||||
public int OnAttach(obj_id self) throws InterruptedException
|
||||
{
|
||||
messageTo(self, "doBuffs", null, 3f, false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int OnExitedCombat(obj_id self) throws InterruptedException
|
||||
{
|
||||
if(!isDead(self))
|
||||
{
|
||||
buff.removeAllBuffs(self);
|
||||
messageTo(self, "doBuffs", null, 3f, false);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
|
||||
public int doBuffs(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
buff.applyBuffWithStackCount(self, BUFFS[0], rand(1,3));
|
||||
buff.applyBuffWithStackCount(self,
|
||||
BUFFS[rand(1, BUFFS.length-1)],
|
||||
rand(1,2)
|
||||
);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
}
|
||||
@@ -1,229 +0,0 @@
|
||||
package script.theme_park.wod;
|
||||
|
||||
import script.*;
|
||||
import script.base_class.*;
|
||||
import script.combat_engine.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Vector;
|
||||
import script.base_script;
|
||||
|
||||
import script.library.ai_lib;
|
||||
import script.library.beast_lib;
|
||||
import script.library.buff;
|
||||
import script.library.chat;
|
||||
import script.library.combat;
|
||||
import script.library.create;
|
||||
import script.library.group;
|
||||
import script.library.prose;
|
||||
import script.library.static_item;
|
||||
import script.library.trial;
|
||||
import script.library.utils;
|
||||
|
||||
public class wod_mutant_rancor_combat extends script.base_script
|
||||
{
|
||||
public wod_mutant_rancor_combat()
|
||||
{
|
||||
}
|
||||
public static final String NS_BICEP_SCHEMATIC = "item_wod_bossloot_ns_bracer";
|
||||
public static final String SMC_BICEP_SCHEMATIC = "item_wod_bossloot_smc_bicep_";
|
||||
public static final String SMC_BRACER_SCHEMATIC = "item_wod_bossloot_smc_bracer_";
|
||||
public static final int MAX_DISTANCE = 104;
|
||||
public static final int REPEAT_TIME = 45;
|
||||
public static final int OFFSET_TIME = 15;
|
||||
public static final int HP_WOD_RANCOR = 618125;
|
||||
public static int buffStartTime = 0;
|
||||
public int OnAttach(obj_id self) throws InterruptedException
|
||||
{
|
||||
trial.setHp(self, HP_WOD_RANCOR);
|
||||
applySkillStatisticModifier(self, "expertise_glancing_blow_reduction", 100);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int OnEnteredCombat(obj_id self) throws InterruptedException
|
||||
{
|
||||
buff.applyBuff(self, "open_balance_buff", -1.0f);
|
||||
obj_id[] players = getPlayerCreaturesInRange(self, 250.0f);
|
||||
if (players != null && players.length > 0)
|
||||
{
|
||||
for (int i = 0; i < players.length; i++)
|
||||
{
|
||||
obj_id player = players[i];
|
||||
if (isIdValid(player) && exists(player) && !isIncapacitated(player) && !isDead(player))
|
||||
{
|
||||
addHate(self, player, 1000.0f);
|
||||
startCombat(self, player);
|
||||
}
|
||||
}
|
||||
}
|
||||
messageTo(self, "checkCombatStatus", null, REPEAT_TIME + ((rand(0, OFFSET_TIME) + OFFSET_TIME) - OFFSET_TIME), false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int OnCreatureDamaged(obj_id self, obj_id attacker, obj_id wpn, int[] damage) throws InterruptedException
|
||||
{
|
||||
if (hasObjVar(self, "buffStartTime"))
|
||||
{
|
||||
buffStartTime = getIntObjVar(self, "buffStartTime");
|
||||
}
|
||||
int buffTime = getGameTime() - buffStartTime;
|
||||
int randomTime = REPEAT_TIME + ((rand(0, OFFSET_TIME) + OFFSET_TIME) - OFFSET_TIME);
|
||||
float healthPercent = (float)getAttrib(self, HEALTH) / (float)getMaxAttrib(self, HEALTH);
|
||||
if (healthPercent <= 0.67f && healthPercent > 0.20f)
|
||||
{
|
||||
int randBuff = rand(1, 4);
|
||||
if (!hasObjVar(self, "scaleOne"))
|
||||
{
|
||||
float mutationScaleOne = (float)(getScale(self) * 1.4);
|
||||
setScale(self, mutationScaleOne);
|
||||
setYaw(self, rand(0.0f, 360.0f));
|
||||
setObjVar(self, "scaleOne", true);
|
||||
}
|
||||
if (randBuff == 1 && buffTime > randomTime)
|
||||
{
|
||||
buff.applyBuff(self, "kun_twin_ranged_shield", 45.0f);
|
||||
setObjVar(self, "buffStartTime", getGameTime());
|
||||
buff.removeBuff(self, "hoth_atat_shield");
|
||||
buff.removeBuff(self, "sher_kar_rage");
|
||||
buff.removeBuff(self, "kun_twin_bonus");
|
||||
}
|
||||
if (randBuff == 2 && buffTime > randomTime)
|
||||
{
|
||||
buff.applyBuff(self, "hoth_atat_shield", 45.0f);
|
||||
setObjVar(self, "buffStartTime", getGameTime());
|
||||
buff.removeBuff(self, "kun_twin_ranged_shield");
|
||||
buff.removeBuff(self, "sher_kar_rage");
|
||||
buff.removeBuff(self, "kun_twin_bonus");
|
||||
}
|
||||
if (randBuff == 3 && buffTime > randomTime)
|
||||
{
|
||||
buff.applyBuff(self, "sher_kar_rage", 45.0f);
|
||||
setObjVar(self, "buffStartTime", getGameTime());
|
||||
buff.removeBuff(self, "kun_twin_ranged_shield");
|
||||
buff.removeBuff(self, "hoth_atat_shield");
|
||||
buff.removeBuff(self, "kun_twin_bonus");
|
||||
}
|
||||
if (randBuff == 4 && buffTime > randomTime)
|
||||
{
|
||||
buff.applyBuff(self, "kun_twin_bonus", 45.0f);
|
||||
setObjVar(self, "buffStartTime", getGameTime());
|
||||
buff.removeBuff(self, "kun_twin_ranged_shield");
|
||||
buff.removeBuff(self, "hoth_atat_shield");
|
||||
buff.removeBuff(self, "sher_kar_rage");
|
||||
}
|
||||
}
|
||||
if (healthPercent <= 0.20f)
|
||||
{
|
||||
if (buffTime > randomTime)
|
||||
{
|
||||
buff.applyBuff(self, "open_balance_buff", 30.0f);
|
||||
setObjVar(self, "buffStartTime", getGameTime());
|
||||
}
|
||||
if (!hasObjVar(self, "scaleTwo"))
|
||||
{
|
||||
float mutationScaleTwo = (float)(getScale(self) * 1.9);
|
||||
setScale(self, mutationScaleTwo);
|
||||
setYaw(self, rand(0.0f, 360.0f));
|
||||
setObjVar(self, "scaleTwo", true);
|
||||
}
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public int checkCombatStatus(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
if (!isValidId(self) || !exists(self))
|
||||
{
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
if (ai_lib.isDead(self))
|
||||
{
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
if (ai_lib.isInCombat(self))
|
||||
{
|
||||
CustomerServiceLog("wod_themepark", "wod_mutant_rancor_combat.checkCombatStatus(): Boss Mob: " + self + " is already in combat.");
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
obj_id parent = getObjIdObjVar(self, "parent");
|
||||
if (isIdValid(parent))
|
||||
{
|
||||
if (getRandomCombatTarget(self, parent))
|
||||
{
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
dictionary webster = trial.getSessionDict(parent);
|
||||
messageTo(parent, "defaultEventReset", webster, 2, false);
|
||||
}
|
||||
messageTo(self, "checkCombatStatus", null, REPEAT_TIME + (rand(0, OFFSET_TIME + OFFSET_TIME) - OFFSET_TIME), false);
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
public boolean getRandomCombatTarget(obj_id self, obj_id parent) throws InterruptedException
|
||||
{
|
||||
if (!isIdValid(self) || !exists(self))
|
||||
{
|
||||
CustomerServiceLog("wod_themepark", "wod_mutant_rancor_combat.getRandomCombatTarget() FAILED to find self.");
|
||||
return false;
|
||||
}
|
||||
obj_id[] targets = trial.getValidTargetsInRadiusIgnoreLOS(self, MAX_DISTANCE);
|
||||
if (targets == null || targets.length == 0)
|
||||
{
|
||||
CustomerServiceLog("wod_themepark", "wod_mutant_rancor_combat.getRandomCombatTarget() no targets for boss (" + self + ") is: " + MAX_DISTANCE);
|
||||
dictionary webster = trial.getSessionDict(parent);
|
||||
messageTo(parent, "defaultEventReset", webster, 2, false);
|
||||
return false;
|
||||
}
|
||||
obj_id playerEnemy = utils.getObjIdScriptVar(self, "waveEventPlayer");
|
||||
if (!isIdValid(playerEnemy) || !exists(playerEnemy))
|
||||
{
|
||||
CustomerServiceLog("wod_themepark", "wod_mutant_rancor_combat.getRandomCombatTarget() Mob found player but player was not part of owners group.");
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < targets.length; i++)
|
||||
{
|
||||
if (!isIdValid(targets[i]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!group.inSameGroup(targets[i], playerEnemy))
|
||||
{
|
||||
CustomerServiceLog("wod_themepark", "boss_fight_functionality.getRandomCombatTarget(): Player " + targets[i] + " was found as an invalid target.");
|
||||
continue;
|
||||
}
|
||||
startCombat(self, targets[i]);
|
||||
CustomerServiceLog("wod_themepark", "boss_fight_functionality.getRandomCombatTarget(): Player " + targets[i] + " was found as a valid target. Boss Mob: " + self + " attacking player.");
|
||||
return true;
|
||||
}
|
||||
CustomerServiceLog("wod_themepark", "boss_fight_functionality.OnIncapacitateTarget(): Boss Mob: " + self + " failed to find a player to attack from player: " + playerEnemy + " group.");
|
||||
dictionary webster = trial.getSessionDict(parent);
|
||||
messageTo(parent, "defaultEventReset", webster, 2, false);
|
||||
return false;
|
||||
}
|
||||
public int aiCorpsePrepared(obj_id self, dictionary params) throws InterruptedException
|
||||
{
|
||||
obj_id inv = utils.getInventoryContainer(self);
|
||||
int lootChance = rand(1, 100);
|
||||
if (lootChance <= 5)
|
||||
{
|
||||
static_item.createNewItemFunction(NS_BICEP_SCHEMATIC, inv);
|
||||
}
|
||||
if (lootChance > 5 && lootChance <= 20)
|
||||
{
|
||||
int leftOrRight = rand(0, 1);
|
||||
String toAppend = "l";
|
||||
if (leftOrRight == 1)
|
||||
{
|
||||
toAppend = "r";
|
||||
}
|
||||
static_item.createNewItemFunction(SMC_BICEP_SCHEMATIC + toAppend, inv);
|
||||
}
|
||||
if (lootChance > 20 && lootChance <= 35)
|
||||
{
|
||||
int leftOrRight = rand(0, 1);
|
||||
String toAppend = "l";
|
||||
if (leftOrRight == 1)
|
||||
{
|
||||
toAppend = "r";
|
||||
}
|
||||
static_item.createNewItemFunction(SMC_BRACER_SCHEMATIC + toAppend, inv);
|
||||
}
|
||||
return SCRIPT_CONTINUE;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user