mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-01-17 00:06:00 -05:00
Implemented loaders for roles, rewards, and skill templates - including an automatic profession icon update
This commit is contained in:
94
serverdata/player/planet_map_cat.sdb
Normal file
94
serverdata/player/planet_map_cat.sdb
Normal file
@@ -0,0 +1,94 @@
|
||||
name index iscategory issubcategory can_be_active faction faction_visible_only
|
||||
STRING INTEGER BOOLEAN BOOLEAN BOOLEAN STRING BOOLEAN
|
||||
unknown 1 true false false false
|
||||
bank 2 true false false false
|
||||
cantina 3 true false true false
|
||||
capitol 4 true false false false
|
||||
cloningfacility 5 true false false false
|
||||
garage 6 true false false false
|
||||
guild 7 true false false false
|
||||
guild_combat 8 false true false false
|
||||
guild_commerce 9 false true false false
|
||||
guild_theater 10 false true true false
|
||||
guild_university 11 false true false false
|
||||
hotel 12 true false false false
|
||||
medicalcenter 13 true false true false
|
||||
shuttleport 14 true false false false
|
||||
starport 15 true false false false
|
||||
themepark 16 true false false false
|
||||
city 17 true false false false
|
||||
waypoint 18 true false false false
|
||||
trainer 19 true false false false
|
||||
trainer_brawler 20 false true false false
|
||||
trainer_artisan 21 false true false false
|
||||
trainer_scout 22 false true false false
|
||||
trainer_marksman 23 false true false false
|
||||
trainer_entertainer 24 false true false false
|
||||
trainer_medic 25 false true false false
|
||||
junkshop 26 true false false false
|
||||
tavern 27 true false true false
|
||||
barracks 28 true false true false
|
||||
vendor 29 true false false false
|
||||
vendor_armor 30 false true false false
|
||||
vendor_clothing 31 false true false false
|
||||
vendor_components 32 false true false false
|
||||
vendor_droids 33 false true false false
|
||||
vendor_equipment 34 false true false false
|
||||
vendor_food 35 false true false false
|
||||
vendor_housing 36 false true false false
|
||||
vendor_resources 37 false true false false
|
||||
vendor_tools 38 false true false false
|
||||
vendor_weapons 39 false true false false
|
||||
vendor_junk 40 false true false false
|
||||
terminal 41 true false false false
|
||||
terminal_bank 42 false true false false
|
||||
terminal_bazaar 43 false true false false
|
||||
terminal_mission 44 false true false false
|
||||
rebel 45 true false false rebel true
|
||||
imperial 46 true false false imperial true
|
||||
rebel_hq 47 false true true rebel true
|
||||
imperial_hq 48 false true true imperial true
|
||||
camp 49 false true true false
|
||||
cityhall 50 false false true false
|
||||
theater 51 false false true false
|
||||
vendor_pets 52 false true false false
|
||||
vendor_medical 53 false true false false
|
||||
poi 54 true false false false
|
||||
garage 55 true false false false
|
||||
museum 56 true false false false
|
||||
salon 57 true false false false
|
||||
space 58 true false false false
|
||||
space_recruiter 59 false true false false
|
||||
space_chassis_broker 60 false true false false
|
||||
space_chassis 61 true false false false
|
||||
trainer_starfighter_engineer 62 false true false false
|
||||
trainer_shipwright 63 false true false false
|
||||
trainer_pilot_privateer 64 false true false false
|
||||
trainer_pilot_rebel 65 false true false false
|
||||
trainer_pilot_imperial 66 false true false false
|
||||
vendor_ships 67 false true false false
|
||||
sf_rebel_forward_base 68 false true true rebel true
|
||||
sf_imperial_forward_base 69 false true true imperial true
|
||||
sf_rebel_minor_base 70 false true true rebel true
|
||||
sf_imperial_minor_base 71 false true true imperial true
|
||||
sf_rebel_major_base 72 false true true rebel true
|
||||
sf_imperial_major_base 73 false true true imperial true
|
||||
sf_rebel_hq 47 false true true rebel true
|
||||
sf_imperial_hq 48 false true true imperial true
|
||||
terminal_gcw_static_base 74 false true true false
|
||||
terminal_mission_entertainer 75 false true false false
|
||||
terminal_mission_artisan 76 false true false false
|
||||
terminal_mission_scout 77 false true false false
|
||||
terminal_mission_bounty 78 false true false false
|
||||
terminal_mission_rebel 79 false true false rebel true
|
||||
terminal_mission_imperial 80 false true false imperial true
|
||||
city_junk_dealer 81 false true false false
|
||||
gcw_region 82 true false false false
|
||||
gcw_factional_presence 83 true false false false
|
||||
gcw_factional_presence_rebel_only 84 false true false false
|
||||
gcw_factional_presence_imperial_only 85 false true false false
|
||||
gcw_factional_presence_rebel_and_imperial 86 false true false false
|
||||
player_placed_factional_base 87 true false false false
|
||||
player_placed_factional_base_rebel 88 false true true false
|
||||
player_placed_factional_base_imperial 89 false true true false
|
||||
vendor_chronicles 90 false true false false
|
||||
24
serverdata/player/role.sdb
Normal file
24
serverdata/player/role.sdb
Normal file
@@ -0,0 +1,24 @@
|
||||
index role_icon qualifying_skill
|
||||
INTEGER STRING STRING
|
||||
0 artisan class_trader
|
||||
5 entertainer class_entertainer_phase1_novice
|
||||
10 medic class_medic_phase1_novice
|
||||
15 officer class_officer_phase1_novice
|
||||
20 bounty_hunter class_bountyhunter_phase1_novice
|
||||
25 smuggler class_smuggler_phase1_novice
|
||||
30 commando class_commando_phase1_novice
|
||||
35 utility class_spy_phase1_novice
|
||||
40 jedisaber class_forcesensitive_phase1_novice
|
||||
45 advancedmedic class_medic_phase4_master
|
||||
50 advancedbountyhunter class_bountyhunter_phase4_master
|
||||
55 advancedcommando class_commando_phase4_master
|
||||
60 advancedjedisaber class_forcesensitive_phase4_master
|
||||
65 advancedartisan class_structures_phase4_master
|
||||
65 advancedartisan class_munitions_phase4_master
|
||||
65 advancedartisan class_domestics_phase4_master
|
||||
65 advancedartisan class_engineering_phase4_master
|
||||
70 advancedentertainer class_entertainer_phase4_master
|
||||
75 advancedsmuggler class_smuggler_phase4_master
|
||||
80 advancedofficer class_officer_phase4_master
|
||||
85 advancedutilities class_spy_phase4_master
|
||||
115 pet pet_special
|
||||
306
serverdata/roadmap/item_rewards.sdb
Normal file
306
serverdata/roadmap/item_rewards.sdb
Normal file
@@ -0,0 +1,306 @@
|
||||
roadmap_template_name roadmap_skill_name appearance_name string_id item_default item_wookiee item_ithorian
|
||||
STRING STRING STRING STRING STRING STRING STRING
|
||||
bounty_hunter_1a class_bountyhunter_phase1_novice
|
||||
bounty_hunter_1a class_bountyhunter_phase1_02
|
||||
bounty_hunter_1a class_bountyhunter_phase1_03
|
||||
bounty_hunter_1a class_bountyhunter_phase1_04 appearance/backpack_s05_m.sat @ui_roadmap:bounty_hunter_backpack item_bounty_hunter_backpack_01_02
|
||||
bounty_hunter_1a class_bountyhunter_phase1_05 appearance/eqp_notebook_s01.apt @obj_n:profession_bounty_hunter_10_n object/tangible/quest/quest_start/profession_bounty_hunter_10.iff
|
||||
bounty_hunter_1a class_bountyhunter_phase1_master
|
||||
bounty_hunter_1a class_bountyhunter_phase2_novice appearance/armor_composite_s01_chest_plate_m.sat @ui_roadmap:bounty_hunter_armor armor_bounty_hunter_roadmap_chest_02_01,armor_bounty_hunter_roadmap_leggings_02_01,armor_bounty_hunter_roadmap_helmet_02_01,armor_bounty_hunter_roadmap_bicep_l_02_01,armor_bounty_hunter_roadmap_bicep_r_02_01,armor_bounty_hunter_roadmap_bracer_l_02_01,armor_bounty_hunter_roadmap_bracer_r_02_01,armor_bounty_hunter_roadmap_gloves_02_01,armor_bounty_hunter_roadmap_boots_02_01 armor_wookiee_roadmap_chest_02_03,armor_wookiee_roadmap_leggings_02_03,armor_wookiee_roadmap_bicep_l_02_03,armor_wookiee_roadmap_bicep_r_02_03,armor_wookiee_roadmap_bracer_l_02_03,armor_wookiee_roadmap_bracer_r_02_03 armor_ithorian_roadmap_chest_02_03,armor_ithorian_roadmap_leggings_02_03,armor_ithorian_roadmap_helmet_02_03,armor_ithorian_roadmap_bicep_l_02_03,armor_ithorian_roadmap_bicep_r_02_03,armor_ithorian_roadmap_bracer_l_02_03,armor_ithorian_roadmap_bracer_r_02_03,armor_ithorian_roadmap_gloves_02_03,armor_ithorian_roadmap_boots_02_03
|
||||
bounty_hunter_1a class_bountyhunter_phase2_02 appearance/eqp_notebook_s01.apt @obj_n:profession_bounty_hunter_20_n object/tangible/quest/quest_start/profession_bounty_hunter_20.iff
|
||||
bounty_hunter_1a class_bountyhunter_phase2_03 appearance/wp_carbine_ee3_combined.apt @ui_roadmap:bounty_hunter_weapon_30 weapon_carbine_bh_roadmap_01_02
|
||||
bounty_hunter_1a class_bountyhunter_phase2_04
|
||||
bounty_hunter_1a class_bountyhunter_phase2_05 appearance/ring_s02.apt @ui_roadmap:bounty_hunter_ring item_bounty_hunter_ring_01_02
|
||||
bounty_hunter_1a class_bountyhunter_phase2_master appearance/eqp_notebook_s01.apt @obj_n:profession_bounty_hunter_30_n object/tangible/quest/quest_start/profession_bounty_hunter_30.iff
|
||||
bounty_hunter_1a class_bountyhunter_phase3_novice
|
||||
bounty_hunter_1a class_bountyhunter_phase3_02 appearance/wp_rifle_lightning_cannon.apt @ui_roadmap:bounty_hunter_weapon_50 weapon_rifle_bh_roadmap_01_02
|
||||
bounty_hunter_1a class_bountyhunter_phase3_03
|
||||
bounty_hunter_1a class_bountyhunter_phase3_04
|
||||
bounty_hunter_1a class_bountyhunter_phase3_05
|
||||
bounty_hunter_1a class_bountyhunter_phase3_master appearance/necklace_s02_f.sat @ui_roadmap:bounty_hunter_necklace item_bounty_hunter_pendant_01_02
|
||||
bounty_hunter_1a class_bountyhunter_phase4_novice
|
||||
bounty_hunter_1a class_bountyhunter_phase4_02
|
||||
bounty_hunter_1a class_bountyhunter_phase4_03 appearance/eqp_survey_survey_pad_advanced_s1.apt @ui_roadmap:bounty_hunter_usable item_bounty_hunter_clicky_01_02
|
||||
bounty_hunter_1a class_bountyhunter_phase4_04
|
||||
bounty_hunter_1a class_bountyhunter_phase4_05
|
||||
bounty_hunter_1a class_bountyhunter_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:bounty_hunter_belt item_roadmap_belt_bounty_hunter_01_02
|
||||
commando_1a class_commando_phase1_novice
|
||||
commando_1a class_commando_phase1_02
|
||||
commando_1a class_commando_phase1_03
|
||||
commando_1a class_commando_phase1_04 appearance/backpack_s04_m.sat @ui_roadmap:commando_backpack item_commando_backpack_01_02
|
||||
commando_1a class_commando_phase1_05 appearance/eqp_notebook_s01.apt @obj_n:profession_commando_10_n object/tangible/quest/quest_start/profession_commando_10.iff
|
||||
commando_1a class_commando_phase1_master
|
||||
commando_1a class_commando_phase2_novice appearance/armor_composite_s01_chest_plate_m.sat @ui_roadmap:commando_armor armor_commando_roadmap_chest_02_01,armor_commando_roadmap_leggings_02_01,armor_commando_roadmap_helmet_02_01,armor_commando_roadmap_bicep_l_02_01,armor_commando_roadmap_bicep_r_02_01,armor_commando_roadmap_bracer_l_02_01,armor_commando_roadmap_bracer_r_02_01,armor_commando_roadmap_gloves_02_01,armor_commando_roadmap_boots_02_01 armor_wookiee_roadmap_chest_02_03,armor_wookiee_roadmap_leggings_02_03,armor_wookiee_roadmap_bicep_l_02_03,armor_wookiee_roadmap_bicep_r_02_03,armor_wookiee_roadmap_bracer_l_02_03,armor_wookiee_roadmap_bracer_r_02_03 armor_ithorian_roadmap_chest_02_03,armor_ithorian_roadmap_leggings_02_03,armor_ithorian_roadmap_helmet_02_03,armor_ithorian_roadmap_bicep_l_02_03,armor_ithorian_roadmap_bicep_r_02_03,armor_ithorian_roadmap_bracer_l_02_03,armor_ithorian_roadmap_bracer_r_02_03,armor_ithorian_roadmap_gloves_02_03,armor_ithorian_roadmap_boots_02_03
|
||||
commando_1a class_commando_phase2_02 appearance/eqp_notebook_s01.apt @obj_n:profession_commando_20_n object/tangible/quest/quest_start/profession_commando_20.iff
|
||||
commando_1a class_commando_phase2_03 appearance/wp_rifle_dlt20.apt @ui_roadmap:commando_weapon_30 weapon_lightningbeam_commando_roadmap_01_02
|
||||
commando_1a class_commando_phase2_04
|
||||
commando_1a class_commando_phase2_05 appearance/ring_s03.apt @ui_roadmap:commando_ring item_commando_ring_01_02
|
||||
commando_1a class_commando_phase2_master appearance/eqp_notebook_s01.apt @obj_n:profession_commando_30_n object/tangible/quest/quest_start/profession_commando_30.iff
|
||||
commando_1a class_commando_phase3_novice
|
||||
commando_1a class_commando_phase3_02 appearance/wp_carbine_e11.apt @ui_roadmap:commando_weapon_50 weapon_acidbeam_commando_roadmap_01_02
|
||||
commando_1a class_commando_phase3_03
|
||||
commando_1a class_commando_phase3_04
|
||||
commando_1a class_commando_phase3_05
|
||||
commando_1a class_commando_phase3_master appearance/necklace_s07_f.sat @ui_roadmap:commando_necklace item_commando_pendant_01_02
|
||||
commando_1a class_commando_phase4_novice
|
||||
commando_1a class_commando_phase4_02
|
||||
commando_1a class_commando_phase4_03 appearance/eqp_comp_weapon_high_power_module.apt @ui_roadmap:commando_usable item_commando_clicky_01_02
|
||||
commando_1a class_commando_phase4_04
|
||||
commando_1a class_commando_phase4_05
|
||||
commando_1a class_commando_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:commando_belt item_roadmap_belt_commando_01_02
|
||||
smuggler_1a class_smuggler_phase1_novice
|
||||
smuggler_1a class_smuggler_phase1_02
|
||||
smuggler_1a class_smuggler_phase1_03
|
||||
smuggler_1a class_smuggler_phase1_04 appearance/backpack_s05_m.sat @ui_roadmap:smuggler_backpack item_smuggler_backpack_01_02
|
||||
smuggler_1a class_smuggler_phase1_05 appearance/eqp_notebook_s01.apt @obj_n:profession_smuggler_10_n object/tangible/quest/quest_start/profession_smuggler_10.iff
|
||||
smuggler_1a class_smuggler_phase1_master
|
||||
smuggler_1a class_smuggler_phase2_novice appearance/armor_tantel_skreej_chest_plate_m.sat @ui_roadmap:smuggler_armor armor_smuggler_roadmap_chest_02_01,armor_smuggler_roadmap_leggings_02_01,armor_smuggler_roadmap_helmet_02_01,armor_smuggler_roadmap_bicep_l_02_01,armor_smuggler_roadmap_bicep_r_02_01,armor_smuggler_roadmap_bracer_l_02_01,armor_smuggler_roadmap_bracer_r_02_01,armor_smuggler_roadmap_gloves_02_01,armor_smuggler_roadmap_boots_02_01 armor_wookiee_roadmap_chest_02_01,armor_wookiee_roadmap_leggings_02_01,armor_wookiee_roadmap_bicep_l_02_01,armor_wookiee_roadmap_bicep_r_02_01,armor_wookiee_roadmap_bracer_l_02_01,armor_wookiee_roadmap_bracer_r_02_01 armor_ithorian_roadmap_chest_02_01,armor_ithorian_roadmap_leggings_02_01,armor_ithorian_roadmap_helmet_02_01,armor_ithorian_roadmap_bicep_l_02_01,armor_ithorian_roadmap_bicep_r_02_01,armor_ithorian_roadmap_bracer_l_02_01,armor_ithorian_roadmap_bracer_r_02_01,armor_ithorian_roadmap_gloves_02_01,armor_ithorian_roadmap_boots_02_01
|
||||
smuggler_1a class_smuggler_phase2_02 appearance/eqp_notebook_s01.apt @obj_n:profession_smuggler_20_n object/tangible/quest/quest_start/profession_smuggler_20.iff
|
||||
smuggler_1a class_smuggler_phase2_03 appearance/wp_pistol_scout_combined.apt @ui_roadmap:smuggler_weapon_30 weapon_knuckler_smuggler_roadmap_01_02
|
||||
smuggler_1a class_smuggler_phase2_04
|
||||
smuggler_1a class_smuggler_phase2_05 appearance/ring_s03.apt @ui_roadmap:smuggler_ring item_smuggler_ring_01_02
|
||||
smuggler_1a class_smuggler_phase2_master appearance/eqp_notebook_s01.apt @obj_n:profession_smuggler_30_n object/tangible/quest/quest_start/profession_smuggler_30.iff
|
||||
smuggler_1a class_smuggler_phase3_novice
|
||||
smuggler_1a class_smuggler_phase3_02 appearance/wp_pistol_striker.apt @ui_roadmap:smuggler_weapon_50 weapon_pistol_smuggler_roadmap_02_02
|
||||
smuggler_1a class_smuggler_phase3_03
|
||||
smuggler_1a class_smuggler_phase3_04
|
||||
smuggler_1a class_smuggler_phase3_05
|
||||
smuggler_1a class_smuggler_phase3_master appearance/necklace_s11_f.sat @ui_roadmap:smuggler_necklace item_smuggler_pendant_01_02
|
||||
smuggler_1a class_smuggler_phase4_novice
|
||||
smuggler_1a class_smuggler_phase4_02
|
||||
smuggler_1a class_smuggler_phase4_03 appearance/eqp_data_disk.apt @ui_roadmap:smuggler_usable item_smuggler_clicky_01_02
|
||||
smuggler_1a class_smuggler_phase4_04
|
||||
smuggler_1a class_smuggler_phase4_05
|
||||
smuggler_1a class_smuggler_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:smuggler_belt item_roadmap_belt_smuggler_01_02
|
||||
force_sensitive_1a class_forcesensitive_phase1_novice
|
||||
force_sensitive_1a class_forcesensitive_phase1_02
|
||||
force_sensitive_1a class_forcesensitive_phase1_03
|
||||
force_sensitive_1a class_forcesensitive_phase1_04 appearance/ring_s02.apt @ui_roadmap:force_sensitive_ring_2 item_force_sensitive_ring_02_01
|
||||
force_sensitive_1a class_forcesensitive_phase1_05 appearance/eqp_force_crystal.apt @obj_n:profession_force_sensitive_10_n object/tangible/quest/quest_start/profession_force_sensitive_10.iff
|
||||
force_sensitive_1a class_forcesensitive_phase1_master
|
||||
force_sensitive_1a class_forcesensitive_phase2_novice appearance/robe_jedi_padawan_f.sat @ui_roadmap:force_sensitive_armor item_npe_fs_robe_02_02
|
||||
force_sensitive_1a class_forcesensitive_phase2_02 appearance/thm_prp_holocron_splinters.apt @obj_n:profession_force_sensitive_20_n object/tangible/quest/quest_start/profession_force_sensitive_20.iff
|
||||
force_sensitive_1a class_forcesensitive_phase2_03 appearance/wp_mle_sword_lightsaber_blade_anakin.lsb @ui_roadmap:force_sensitive_weapon_30 weapon_roadmap_lightsaber_02_02
|
||||
force_sensitive_1a class_forcesensitive_phase2_04
|
||||
force_sensitive_1a class_forcesensitive_phase2_05 appearance/ring_s01.apt @ui_roadmap:force_sensitive_ring item_force_sensitive_ring_01_02
|
||||
force_sensitive_1a class_forcesensitive_phase2_master appearance/atf_sith_s01.apt @obj_n:profession_force_sensitive_30_n object/tangible/quest/quest_start/profession_force_sensitive_30.iff
|
||||
force_sensitive_1a class_forcesensitive_phase3_novice
|
||||
force_sensitive_1a class_forcesensitive_phase3_02 appearance/dragon_pearl.apt @ui_roadmap:force_sensitive_weapon_50 item_krayt_pearl_04_01
|
||||
force_sensitive_1a class_forcesensitive_phase3_03
|
||||
force_sensitive_1a class_forcesensitive_phase3_04
|
||||
force_sensitive_1a class_forcesensitive_phase3_05
|
||||
force_sensitive_1a class_forcesensitive_phase3_master appearance/necklace_s12_f.sat @ui_roadmap:force_sensitive_necklace item_force_sensitive_pendant_01_02
|
||||
force_sensitive_1a class_forcesensitive_phase4_novice
|
||||
force_sensitive_1a class_forcesensitive_phase4_02
|
||||
force_sensitive_1a class_forcesensitive_phase4_03 appearance/force_amplification_crystal.apt @ui_roadmap:force_sensitive_usable item_force_sensitive_clicky_01_02
|
||||
force_sensitive_1a class_forcesensitive_phase4_04
|
||||
force_sensitive_1a class_forcesensitive_phase4_05
|
||||
force_sensitive_1a class_forcesensitive_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:force_sensitive_belt item_roadmap_belt_force_sensitive_01_02
|
||||
officer_1a class_officer_phase1_novice
|
||||
officer_1a class_officer_phase1_02
|
||||
officer_1a class_officer_phase1_03
|
||||
officer_1a class_officer_phase1_04 appearance/backpack_s03_m.sat @ui_roadmap:officer_backpack item_officer_backpack_01_02
|
||||
officer_1a class_officer_phase1_05 appearance/eqp_notebook_s01.apt @obj_n:profession_officer_10_n object/tangible/quest/quest_start/profession_officer_10.iff
|
||||
officer_1a class_officer_phase1_master
|
||||
officer_1a class_officer_phase2_novice appearance/armor_composite_s01_chest_plate_m.sat @ui_roadmap:officer_armor armor_officer_roadmap_chest_02_01,armor_officer_roadmap_leggings_02_01,armor_officer_roadmap_helmet_02_01,armor_officer_roadmap_bicep_l_02_01,armor_officer_roadmap_bicep_r_02_01,armor_officer_roadmap_bracer_l_02_01,armor_officer_roadmap_bracer_r_02_01,armor_officer_roadmap_gloves_02_01,armor_officer_roadmap_boots_02_01 armor_wookiee_roadmap_chest_02_02,armor_wookiee_roadmap_leggings_02_02,armor_wookiee_roadmap_bicep_l_02_02,armor_wookiee_roadmap_bicep_r_02_02,armor_wookiee_roadmap_bracer_l_02_02,armor_wookiee_roadmap_bracer_r_02_02 armor_ithorian_roadmap_chest_02_02,armor_ithorian_roadmap_leggings_02_02,armor_ithorian_roadmap_helmet_02_02,armor_ithorian_roadmap_bicep_l_02_02,armor_ithorian_roadmap_bicep_r_02_02,armor_ithorian_roadmap_bracer_l_02_02,armor_ithorian_roadmap_bracer_r_02_02,armor_ithorian_roadmap_gloves_02_02,armor_ithorian_roadmap_boots_02_02
|
||||
officer_1a class_officer_phase2_02 appearance/eqp_notebook_s01.apt @obj_n:profession_officer_20_n object/tangible/quest/quest_start/profession_officer_20.iff
|
||||
officer_1a class_officer_phase2_03 appearance/wp_pistol_dl44_metal_combined.apt @ui_roadmap:officer_weapon_30 weapon_pistol_officer_roadmap_02_02
|
||||
officer_1a class_officer_phase2_04
|
||||
officer_1a class_officer_phase2_05 appearance/ring_s04.apt @ui_roadmap:officer_ring item_officer_ring_01_02
|
||||
officer_1a class_officer_phase2_master appearance/eqp_notebook_s01.apt @obj_n:profession_officer_30_n object/tangible/quest/quest_start/profession_officer_30.iff
|
||||
officer_1a class_officer_phase3_novice
|
||||
officer_1a class_officer_phase3_02 appearance/wp_pistol_dl44_metal_combined.apt @ui_roadmap:officer_weapon_50 weapon_pistol_officer_roadmap_01_02
|
||||
officer_1a class_officer_phase3_03
|
||||
officer_1a class_officer_phase3_04
|
||||
officer_1a class_officer_phase3_05
|
||||
officer_1a class_officer_phase3_master appearance/necklace_s08_f.sat @ui_roadmap:officer_necklace item_officer_pendant_01_02
|
||||
officer_1a class_officer_phase4_novice
|
||||
officer_1a class_officer_phase4_02
|
||||
officer_1a class_officer_phase4_03 appearance/eqp_tool_sensor_frequency_jammer.apt @ui_roadmap:officer_usable item_officer_clicky_01_02
|
||||
officer_1a class_officer_phase4_04
|
||||
officer_1a class_officer_phase4_05
|
||||
officer_1a class_officer_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:officer_belt item_roadmap_belt_officer_01_02
|
||||
medic_1a science_doctor_prereq_novice
|
||||
medic_1a class_medic_phase1_novice
|
||||
medic_1a class_medic_phase1_02
|
||||
medic_1a class_medic_phase1_03
|
||||
medic_1a class_medic_phase1_04 appearance/backpack_s03_m.sat @ui_roadmap:medic_backpack item_medic_backpack_01_02
|
||||
medic_1a class_medic_phase1_05 appearance/eqp_notebook_s01.apt @obj_n:profession_medic_10_n object/tangible/quest/quest_start/profession_medic_10.iff
|
||||
medic_1a class_medic_phase1_master
|
||||
medic_1a class_medic_phase2_novice appearance/armor_tantel_skreej_chest_plate_m.sat @ui_roadmap:medic_armor armor_medic_roadmap_chest_02_01,armor_medic_roadmap_leggings_02_01,armor_medic_roadmap_helmet_02_01,armor_medic_roadmap_bicep_l_02_01,armor_medic_roadmap_bicep_r_02_01,armor_medic_roadmap_bracer_l_02_01,armor_medic_roadmap_bracer_r_02_01,armor_medic_roadmap_gloves_02_01,armor_medic_roadmap_boots_02_01 armor_wookiee_roadmap_chest_02_01,armor_wookiee_roadmap_leggings_02_01,armor_wookiee_roadmap_bicep_l_02_01,armor_wookiee_roadmap_bicep_r_02_01,armor_wookiee_roadmap_bracer_l_02_01,armor_wookiee_roadmap_bracer_r_02_01 armor_ithorian_roadmap_chest_02_01,armor_ithorian_roadmap_leggings_02_01,armor_ithorian_roadmap_helmet_02_01,armor_ithorian_roadmap_bicep_l_02_01,armor_ithorian_roadmap_bicep_r_02_01,armor_ithorian_roadmap_bracer_l_02_01,armor_ithorian_roadmap_bracer_r_02_01,armor_ithorian_roadmap_gloves_02_01,armor_ithorian_roadmap_boots_02_01
|
||||
medic_1a class_medic_phase2_02 appearance/eqp_notebook_s01.apt @obj_n:profession_medic_20_n object/tangible/quest/quest_start/profession_medic_20.iff
|
||||
medic_1a class_medic_phase2_03 appearance/wp_pistol_scout_combined.apt @ui_roadmap:medic_weapon_30 weapon_pistol_medic_roadmap_01_02
|
||||
medic_1a class_medic_phase2_04
|
||||
medic_1a class_medic_phase2_05 appearance/ring_s01.apt @ui_roadmap:medic_ring item_medic_ring_01_02
|
||||
medic_1a class_medic_phase2_master appearance/eqp_notebook_s01.apt @obj_n:profession_medic_30_n object/tangible/quest/quest_start/profession_medic_30.iff
|
||||
medic_1a class_medic_phase3_novice
|
||||
medic_1a class_medic_phase3_02 appearance/wp_carbine_laser_combined.apt @ui_roadmap:medic_weapon_50 weapon_carbine_medic_roadmap_01_02
|
||||
medic_1a class_medic_phase3_03
|
||||
medic_1a class_medic_phase3_04
|
||||
medic_1a class_medic_phase3_05
|
||||
medic_1a class_medic_phase3_master appearance/necklace_s09_f.sat @ui_roadmap:medic_necklace item_medic_pendant_01_02
|
||||
medic_1a class_medic_phase4_novice
|
||||
medic_1a class_medic_phase4_02
|
||||
medic_1a class_medic_phase4_03 appearance/eqp_comp_chemical_dispersion.apt @ui_roadmap:medic_usable item_medic_clicky_01_02
|
||||
medic_1a class_medic_phase4_04
|
||||
medic_1a class_medic_phase4_05
|
||||
medic_1a class_medic_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:medic_belt item_roadmap_belt_medic_01_02
|
||||
spy_1a class_spy_phase1_novice
|
||||
spy_1a class_spy_phase1_02
|
||||
spy_1a class_spy_phase1_03
|
||||
spy_1a class_spy_phase1_04 appearance/backpack_s06_m.sat @ui_roadmap:spy_backpack item_spy_backpack_01_02
|
||||
spy_1a class_spy_phase1_05 appearance/eqp_notebook_s01.apt @obj_n:profession_spy_10_n object/tangible/quest/quest_start/profession_spy_10.iff
|
||||
spy_1a class_spy_phase1_master
|
||||
spy_1a class_spy_phase2_novice appearance/armor_padded_s01_chest_plate_m.sat @ui_roadmap:spy_armor armor_spy_roadmap_chest_02_01,armor_spy_roadmap_leggings_02_01,armor_spy_roadmap_helmet_02_01,armor_spy_roadmap_bicep_l_02_01,armor_spy_roadmap_bicep_r_02_01,armor_spy_roadmap_bracer_l_02_01,armor_spy_roadmap_bracer_r_02_01,armor_spy_roadmap_gloves_02_01,armor_spy_roadmap_boots_02_01 armor_wookiee_roadmap_chest_02_02,armor_wookiee_roadmap_leggings_02_02,armor_wookiee_roadmap_bicep_l_02_02,armor_wookiee_roadmap_bicep_r_02_02,armor_wookiee_roadmap_bracer_l_02_02,armor_wookiee_roadmap_bracer_r_02_02 armor_ithorian_roadmap_chest_02_02,armor_ithorian_roadmap_leggings_02_02,armor_ithorian_roadmap_helmet_02_02,armor_ithorian_roadmap_bicep_l_02_02,armor_ithorian_roadmap_bicep_r_02_02,armor_ithorian_roadmap_bracer_l_02_02,armor_ithorian_roadmap_bracer_r_02_02,armor_ithorian_roadmap_gloves_02_02,armor_ithorian_roadmap_boots_02_02
|
||||
spy_1a class_spy_phase2_02 appearance/eqp_notebook_s01.apt @obj_n:profession_spy_20_n object/tangible/quest/quest_start/profession_spy_20.iff
|
||||
spy_1a class_spy_phase2_03 appearance/wp_pistol_striker.apt @ui_roadmap:spy_weapon_30 weapon_pistol_spy_roadmap_01_02
|
||||
spy_1a class_spy_phase2_04
|
||||
spy_1a class_spy_phase2_05 appearance/ring_s02.apt @ui_roadmap:spy_ring item_spy_ring_01_02
|
||||
spy_1a class_spy_phase2_master appearance/eqp_notebook_s01.apt @obj_n:profession_spy_30_n object/tangible/quest/quest_start/profession_spy_30.iff
|
||||
spy_1a class_spy_phase3_novice
|
||||
spy_1a class_spy_phase3_02 appearance/wp_carbine_e11.apt @ui_roadmap:spy_weapon_50 weapon_carbine_spy_roadmap_01_02
|
||||
spy_1a class_spy_phase3_03
|
||||
spy_1a class_spy_phase3_04
|
||||
spy_1a class_spy_phase3_05
|
||||
spy_1a class_spy_phase3_master appearance/necklace_s01_f.sat @ui_roadmap:spy_necklace item_spy_pendant_01_02
|
||||
spy_1a class_spy_phase4_novice
|
||||
spy_1a class_spy_phase4_02
|
||||
spy_1a class_spy_phase4_03 appearance/eqp_data_disk.apt @ui_roadmap:spy_usable item_spy_clicky_01_02
|
||||
spy_1a class_spy_phase4_04
|
||||
spy_1a class_spy_phase4_05
|
||||
spy_1a class_spy_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:spy_belt item_roadmap_belt_spy_01_02
|
||||
entertainer_1a class_entertainer_phase1
|
||||
entertainer_1a class_entertainer_phase1_novice
|
||||
entertainer_1a class_entertainer_phase1_02
|
||||
entertainer_1a class_entertainer_phase1_03
|
||||
entertainer_1a class_entertainer_phase1_04 appearance/backpack_s01_m.sat @ui_roadmap:entertainer_backpack item_entertainer_backpack_01_02
|
||||
entertainer_1a class_entertainer_phase1_05 appearance/eqp_notebook_s01.apt @obj_n:profession_entertainer_10_n object/tangible/quest/quest_start/profession_entertainer_10.iff,weapon_knuckler_ent_roadmap_02_01
|
||||
entertainer_1a class_entertainer_phase1_master
|
||||
entertainer_1a class_entertainer_phase2_novice appearance/robe_s05_h0_f.sat @ui_roadmap:entertainer_captivator item_entertainer_roadmap_cloak_02_01,item_entertainer_roadmap_boots_02_01,item_entertainer_roadmap_gloves_02_01,item_entertainer_roadmap_pants_02_01,weapon_knuckler_ent_roadmap_02_02 item_entertainer_roadmap_robe_02_01,item_entertainer_roadmap_gloves_02_02,weapon_knuckler_ent_roadmap_02_02 item_entertainer_roadmap_jumpsuit_02_01,item_entertainer_roadmap_hat_02_01,weapon_knuckler_ent_roadmap_02_02
|
||||
entertainer_1a class_entertainer_phase2_02 appearance/eqp_notebook_s01.apt @obj_n:profession_entertainer_20_n object/tangible/quest/quest_start/profession_entertainer_20.iff
|
||||
entertainer_1a class_entertainer_phase2_03 appearance/wp_sp_vibroknuckler.apt @ui_roadmap:entertainer_weapon_30 weapon_knuckler_ent_roadmap_02_04
|
||||
entertainer_1a class_entertainer_phase2_04
|
||||
entertainer_1a class_entertainer_phase2_05 appearance/ring_s04.apt @ui_roadmap:entertainer_ring item_entertainer_ring_01_02,weapon_knuckler_ent_roadmap_02_03
|
||||
entertainer_1a class_entertainer_phase2_master appearance/eqp_notebook_s01.apt @obj_n:profession_entertainer_30_n object/tangible/quest/quest_start/profession_entertainer_30.iff
|
||||
entertainer_1a class_entertainer_phase3_novice
|
||||
entertainer_1a class_entertainer_phase3_02 appearance/wp_pistol_striker.apt @ui_roadmap:entertainer_weapon_50 weapon_pistol_entertainer_roadmap_01_02
|
||||
entertainer_1a class_entertainer_phase3_03
|
||||
entertainer_1a class_entertainer_phase3_04
|
||||
entertainer_1a class_entertainer_phase3_05
|
||||
entertainer_1a class_entertainer_phase3_master appearance/necklace_s12_f.sat @ui_roadmap:entertainer_necklace item_entertainer_pendant_01_02
|
||||
entertainer_1a class_entertainer_phase4_novice
|
||||
entertainer_1a class_entertainer_phase4_02
|
||||
entertainer_1a class_entertainer_phase4_03 appearance/eqp_speaker.apt @ui_roadmap:entertainer_usable item_entertainer_clicky_01_02
|
||||
entertainer_1a class_entertainer_phase4_04
|
||||
entertainer_1a class_entertainer_phase4_05
|
||||
entertainer_1a class_entertainer_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:entertainer_belt item_roadmap_belt_entertainer_01_02
|
||||
trader_0a class_domestics_phase1_novice @ui_roadmap:tuned_crafting_tool item_npe_gen_craft_tool_trader_03_01
|
||||
trader_0a class_domestics_phase1_02
|
||||
trader_0a class_domestics_phase1_03
|
||||
trader_0a class_domestics_phase1_04 appearance/backpack_s04_m.sat @ui_roadmap:trader_backpack item_trader_backpack_01_02
|
||||
trader_0a class_domestics_phase1_05
|
||||
trader_0a class_domestics_phase1_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_10_n object/tangible/quest/quest_start/profession_trader_10.iff
|
||||
trader_0a class_domestics_phase2_novice
|
||||
trader_0a class_domestics_phase2_02
|
||||
trader_0a class_domestics_phase2_03 appearance/bodysuit_s13_f.sat @ui_roadmap:trader_armor item_trader_roadmap_jumpsuit_02_01,item_trader_roadmap_boots_02_01,item_trader_roadmap_gloves_02_01 item_trader_roadmap_shoulder_pad_02_01,item_trader_roadmap_gloves_02_02 item_trader_roadmap_jumpsuit_02_02,item_trader_roadmap_hat_02_01
|
||||
trader_0a class_domestics_phase2_04
|
||||
trader_0a class_domestics_phase2_05
|
||||
trader_0a class_domestics_phase2_master appearance/wp_mle_knife_dagger.apt @ui_roadmap:trader_weapon_30 weapon_knife_trader_roadmap_01_02
|
||||
trader_0a class_domestics_phase3_novice appearance/eqp_notebook_s01.apt @obj_n:profession_trader_20_n object/tangible/quest/quest_start/profession_trader_20.iff
|
||||
trader_0a class_domestics_phase3_02
|
||||
trader_0a class_domestics_phase3_03 appearance/ring_s02.apt @ui_roadmap:trader_ring item_trader_ring_01_02
|
||||
trader_0a class_domestics_phase3_04
|
||||
trader_0a class_domestics_phase3_05 appearance/wp_pistol_scout_combined.apt @ui_roadmap:trader_weapon_50 weapon_pistol_trader_roadmap_01_02
|
||||
trader_0a class_domestics_phase3_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_30_n object/tangible/quest/quest_start/profession_trader_30.iff
|
||||
trader_0a class_domestics_phase4_novice
|
||||
trader_0a class_domestics_phase4_02 appearance/necklace_s07_f.sat @ui_roadmap:trader_necklace item_trader_pendant_01_02
|
||||
trader_0a class_domestics_phase4_03
|
||||
trader_0a class_domestics_phase4_04 appearance/eqp_tool_computer_toolkit.apt @ui_roadmap:trader_usable item_trader_clicky_01_02
|
||||
trader_0a class_domestics_phase4_05
|
||||
trader_0a class_domestics_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:trader_belt item_roadmap_belt_trader_01_02
|
||||
trader_0b class_structures_phase1_novice @ui_roadmap:tuned_crafting_tool item_npe_gen_craft_tool_trader_03_01
|
||||
trader_0b class_structures_phase1_02
|
||||
trader_0b class_structures_phase1_03
|
||||
trader_0b class_structures_phase1_04 appearance/backpack_s04_m.sat @ui_roadmap:trader_backpack item_trader_backpack_01_02
|
||||
trader_0b class_structures_phase1_05
|
||||
trader_0b class_structures_phase1_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_10_n object/tangible/quest/quest_start/profession_trader_10.iff
|
||||
trader_0b class_structures_phase2_novice
|
||||
trader_0b class_structures_phase2_02
|
||||
trader_0b class_structures_phase2_03 appearance/bodysuit_s13_f.sat @ui_roadmap:trader_armor item_trader_roadmap_jumpsuit_02_01,item_trader_roadmap_boots_02_01,item_trader_roadmap_gloves_02_01 item_trader_roadmap_shoulder_pad_02_01,item_trader_roadmap_gloves_02_02 item_trader_roadmap_jumpsuit_02_02,item_trader_roadmap_hat_02_01
|
||||
trader_0b class_structures_phase2_04
|
||||
trader_0b class_structures_phase2_05
|
||||
trader_0b class_structures_phase2_master appearance/wp_mle_knife_dagger.apt @ui_roadmap:trader_weapon_30 weapon_knife_trader_roadmap_01_02
|
||||
trader_0b class_structures_phase3_novice appearance/eqp_notebook_s01.apt @obj_n:profession_trader_20_n object/tangible/quest/quest_start/profession_trader_20.iff
|
||||
trader_0b class_structures_phase3_02
|
||||
trader_0b class_structures_phase3_03 appearance/ring_s02.apt @ui_roadmap:trader_ring item_trader_ring_01_02
|
||||
trader_0b class_structures_phase3_04
|
||||
trader_0b class_structures_phase3_05 appearance/wp_pistol_scout_combined.apt @ui_roadmap:trader_weapon_50 weapon_pistol_trader_roadmap_01_02
|
||||
trader_0b class_structures_phase3_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_30_n object/tangible/quest/quest_start/profession_trader_30.iff
|
||||
trader_0b class_structures_phase4_novice
|
||||
trader_0b class_structures_phase4_02 appearance/necklace_s07_f.sat @ui_roadmap:trader_necklace item_trader_pendant_01_02
|
||||
trader_0b class_structures_phase4_03
|
||||
trader_0b class_structures_phase4_04 appearance/eqp_tool_computer_toolkit.apt @ui_roadmap:trader_usable item_trader_clicky_01_02
|
||||
trader_0b class_structures_phase4_05
|
||||
trader_0b class_structures_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:trader_belt item_roadmap_belt_trader_01_02
|
||||
trader_0c class_munitions_phase1_novice @ui_roadmap:tuned_crafting_tool item_npe_gen_craft_tool_trader_03_01
|
||||
trader_0c class_munitions_phase1_02
|
||||
trader_0c class_munitions_phase1_03
|
||||
trader_0c class_munitions_phase1_04 appearance/backpack_s04_m.sat @ui_roadmap:trader_backpack item_trader_backpack_01_02
|
||||
trader_0c class_munitions_phase1_05
|
||||
trader_0c class_munitions_phase1_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_10_n object/tangible/quest/quest_start/profession_trader_10.iff
|
||||
trader_0c class_munitions_phase2_novice
|
||||
trader_0c class_munitions_phase2_02
|
||||
trader_0c class_munitions_phase2_03 appearance/bodysuit_s13_f.sat @ui_roadmap:trader_armor item_trader_roadmap_jumpsuit_02_01,item_trader_roadmap_boots_02_01,item_trader_roadmap_gloves_02_01 item_trader_roadmap_shoulder_pad_02_01,item_trader_roadmap_gloves_02_02 item_trader_roadmap_jumpsuit_02_02,item_trader_roadmap_hat_02_01
|
||||
trader_0c class_munitions_phase2_04
|
||||
trader_0c class_munitions_phase2_05
|
||||
trader_0c class_munitions_phase2_master appearance/wp_mle_knife_dagger.apt @ui_roadmap:trader_weapon_30 weapon_knife_trader_roadmap_01_02
|
||||
trader_0c class_munitions_phase3_novice appearance/eqp_notebook_s01.apt @obj_n:profession_trader_20_n object/tangible/quest/quest_start/profession_trader_20.iff
|
||||
trader_0c class_munitions_phase3_02
|
||||
trader_0c class_munitions_phase3_03 appearance/ring_s02.apt @ui_roadmap:trader_ring item_trader_ring_01_02
|
||||
trader_0c class_munitions_phase3_04
|
||||
trader_0c class_munitions_phase3_05 appearance/wp_pistol_scout_combined.apt @ui_roadmap:trader_weapon_50 weapon_pistol_trader_roadmap_01_02
|
||||
trader_0c class_munitions_phase3_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_30_n object/tangible/quest/quest_start/profession_trader_30.iff
|
||||
trader_0c class_munitions_phase4_novice
|
||||
trader_0c class_munitions_phase4_02 appearance/necklace_s07_f.sat @ui_roadmap:trader_necklace item_trader_pendant_01_02
|
||||
trader_0c class_munitions_phase4_03
|
||||
trader_0c class_munitions_phase4_04 appearance/eqp_tool_computer_toolkit.apt @ui_roadmap:trader_usable item_trader_clicky_01_02
|
||||
trader_0c class_munitions_phase4_05
|
||||
trader_0c class_munitions_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:trader_belt item_roadmap_belt_trader_01_02
|
||||
trader_0d class_engineering_phase1_novice @ui_roadmap:tuned_crafting_tool item_npe_gen_craft_tool_trader_03_01
|
||||
trader_0d class_engineering_phase1_02
|
||||
trader_0d class_engineering_phase1_03
|
||||
trader_0d class_engineering_phase1_04 appearance/backpack_s04_m.sat @ui_roadmap:trader_backpack item_trader_backpack_01_02
|
||||
trader_0d class_engineering_phase1_05
|
||||
trader_0d class_engineering_phase1_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_10_n object/tangible/quest/quest_start/profession_trader_10.iff
|
||||
trader_0d class_engineering_phase2_novice
|
||||
trader_0d class_engineering_phase2_02
|
||||
trader_0d class_engineering_phase2_03 appearance/bodysuit_s13_f.sat @ui_roadmap:trader_armor item_trader_roadmap_jumpsuit_02_01,item_trader_roadmap_boots_02_01,item_trader_roadmap_gloves_02_01 item_trader_roadmap_shoulder_pad_02_01,item_trader_roadmap_gloves_02_02 item_trader_roadmap_jumpsuit_02_02,item_trader_roadmap_hat_02_01
|
||||
trader_0d class_engineering_phase2_04
|
||||
trader_0d class_engineering_phase2_05
|
||||
trader_0d class_engineering_phase2_master appearance/wp_mle_knife_dagger.apt @ui_roadmap:trader_weapon_30 weapon_knife_trader_roadmap_01_02
|
||||
trader_0d class_engineering_phase3_novice appearance/eqp_notebook_s01.apt @obj_n:profession_trader_20_n object/tangible/quest/quest_start/profession_trader_20.iff
|
||||
trader_0d class_engineering_phase3_02
|
||||
trader_0d class_engineering_phase3_03 appearance/ring_s02.apt @ui_roadmap:trader_ring item_trader_ring_01_02
|
||||
trader_0d class_engineering_phase3_04
|
||||
trader_0d class_engineering_phase3_05 appearance/wp_pistol_scout_combined.apt @ui_roadmap:trader_weapon_50 weapon_pistol_trader_roadmap_01_02
|
||||
trader_0d class_engineering_phase3_master appearance/eqp_notebook_s01.apt @obj_n:profession_trader_30_n object/tangible/quest/quest_start/profession_trader_30.iff
|
||||
trader_0d class_engineering_phase4_novice
|
||||
trader_0d class_engineering_phase4_02 appearance/necklace_s07_f.sat @ui_roadmap:trader_necklace item_trader_pendant_01_02
|
||||
trader_0d class_engineering_phase4_03
|
||||
trader_0d class_engineering_phase4_04 appearance/eqp_tool_computer_toolkit.apt @ui_roadmap:trader_usable item_trader_clicky_01_02
|
||||
trader_0d class_engineering_phase4_05
|
||||
trader_0d class_engineering_phase4_master appearance/armor_zam_wesell_belt_f.sat @ui_roadmap:trader_belt item_roadmap_belt_trader_01_02
|
||||
chronicles class_chronicles_novice appearance/eqp_booster_pack.apt @static_item_n:item_pgc_starter_kit item_pgc_starter_kit
|
||||
chronicles class_chronicles_2 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_4 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_5 appearance/pcg_robe_statue.apt @static_item_n:item_pgc_chronicle_master_statuette item_pgc_chronicle_master_statuette
|
||||
chronicles class_chronicles_6 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_8 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_10 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_11 appearance/thm_sign_pgc_hanging.apt @static_item_n:item_special_sign_pgc_consumable item_special_sign_pgc_consumable
|
||||
chronicles class_chronicles_12 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_13 appearance/thm_sign_pgc_standing.apt @static_item_n:item_special_sign_pgc_consumable_02 item_special_sign_pgc_consumable_02
|
||||
chronicles class_chronicles_14 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_15 appearance/ply_pgc_merchant_tent_s01_r0.apt @static_item_n:item_pgc_chronicler_tent_deed item_pgc_chronicler_tent_deed
|
||||
chronicles class_chronicles_16 appearance/eqp_booster_pack.apt @static_item_n:item_pgc_booster_pack item_pgc_booster_pack
|
||||
chronicles class_chronicles_master appearance/pgc_robe_s01_m.sat @static_item_n:item_pgc_chronicle_master_robe item_pgc_booster_pack,item_pgc_chronicle_master_robe
|
||||
38
serverdata/skill/skill_template.sdb
Normal file
38
serverdata/skill/skill_template.sdb
Normal file
@@ -0,0 +1,38 @@
|
||||
template_name starting_template_name str_class_name user_interface_priority template level_based expertise_trees respec_allowed
|
||||
STRING STRING STRING INTEGER STRING BOOLEAN STRING INTEGER
|
||||
smuggler_1a smuggler smuggler 3 class_smuggler_phase1_novice,class_smuggler_phase1_02,class_smuggler_phase1_03,class_smuggler_phase1_04,class_smuggler_phase1_05,class_smuggler_phase1_master,class_smuggler_phase2_novice,class_smuggler_phase2_02,class_smuggler_phase2_03,class_smuggler_phase2_04,class_smuggler_phase2_05,class_smuggler_phase2_master,class_smuggler_phase3_novice,class_smuggler_phase3_02,class_smuggler_phase3_03,class_smuggler_phase3_04,class_smuggler_phase3_05,class_smuggler_phase3_master,class_smuggler_phase4_novice,class_smuggler_phase4_02,class_smuggler_phase4_03,class_smuggler_phase4_04,class_smuggler_phase4_05,class_smuggler_phase4_master true 7,8,30 1
|
||||
smuggler_2a smuggler 0 combat_smuggler_prereq_novice,combat_smuggler_prereq_01,combat_smuggler_prereq_02,combat_smuggler_prereq_03,combat_smuggler_prereq_04,combat_smuggler_prereq_master,combat_smuggler_novice,combat_unarmed_prereq_novice,combat_unarmed_prereq_01,combat_unarmed_prereq_02,combat_unarmed_prereq_03,combat_unarmed_prereq_04,combat_unarmed_prereq_master,combat_unarmed_novice,science_doctor_prereq_novice,combat_smuggler_underworld_01,combat_smuggler_slicing_01,combat_smuggler_combat_01,combat_smuggler_spice_01,science_doctor_prereq_01,combat_unarmed_accuracy_01,combat_unarmed_speed_01,combat_unarmed_ability_01,combat_unarmed_support_01,science_doctor_prereq_02,combat_smuggler_underworld_02,combat_smuggler_slicing_02,science_doctor_prereq_03,combat_smuggler_combat_02,combat_smuggler_spice_02,science_doctor_prereq_04,combat_unarmed_accuracy_02,combat_unarmed_speed_02,science_doctor_prereq_master,combat_unarmed_ability_02,combat_unarmed_support_02,science_doctor_novice,combat_smuggler_underworld_03,combat_smuggler_slicing_03,combat_smuggler_combat_03,combat_smuggler_spice_03,science_doctor_wound_speed_01,combat_unarmed_accuracy_03,combat_unarmed_speed_03,combat_unarmed_ability_03,combat_unarmed_support_03,science_doctor_wound_speed_02,combat_smuggler_underworld_04,combat_smuggler_slicing_04,combat_smuggler_combat_04,combat_smuggler_spice_04,science_doctor_wound_speed_03,combat_unarmed_accuracy_04,combat_unarmed_speed_04,combat_unarmed_ability_04,combat_unarmed_support_04,science_doctor_wound_speed_04,combat_unarmed_master,combat_smuggler_master true 7,8,30 0
|
||||
smuggler_2b smuggler 0 combat_smuggler_prereq_novice,combat_smuggler_prereq_01,combat_smuggler_prereq_02,combat_smuggler_prereq_03,combat_smuggler_prereq_04,combat_smuggler_prereq_master,combat_smuggler_novice,combat_pistol_prereq_novice,combat_pistol_prereq_01,combat_pistol_prereq_02,combat_pistol_prereq_03,combat_pistol_prereq_04,combat_pistol_prereq_master,combat_pistol_novice,science_doctor_prereq_novice,combat_smuggler_underworld_01,combat_smuggler_slicing_01,combat_smuggler_combat_01,combat_smuggler_spice_01,science_doctor_prereq_01,combat_pistol_accuracy_01,combat_pistol_speed_01,combat_pistol_ability_01,combat_pistol_support_01,science_doctor_prereq_02,combat_smuggler_underworld_02,combat_smuggler_slicing_02,science_doctor_prereq_03,combat_smuggler_combat_02,combat_smuggler_spice_02,science_doctor_prereq_04,combat_pistol_accuracy_02,combat_pistol_speed_02,science_doctor_prereq_master,combat_pistol_ability_02,combat_pistol_support_02,science_doctor_novice,combat_smuggler_underworld_03,combat_smuggler_slicing_03,combat_smuggler_combat_03,combat_smuggler_spice_03,science_doctor_wound_speed_01,combat_pistol_accuracy_03,combat_pistol_speed_03,combat_pistol_ability_03,combat_pistol_support_03,science_doctor_wound_speed_02,combat_smuggler_underworld_04,combat_smuggler_slicing_04,combat_smuggler_combat_04,combat_smuggler_spice_04,science_doctor_wound_speed_03,combat_pistol_accuracy_04,combat_pistol_speed_04,combat_pistol_ability_04,combat_pistol_support_04,science_doctor_wound_speed_04,combat_pistol_master,combat_smuggler_master true 7,8,30 0
|
||||
bounty_hunter_1a bounty_hunter bounty_hunter 2 class_bountyhunter_phase1_novice,class_bountyhunter_phase1_02,class_bountyhunter_phase1_03,class_bountyhunter_phase1_04,class_bountyhunter_phase1_05,class_bountyhunter_phase1_master,class_bountyhunter_phase2_novice,class_bountyhunter_phase2_02,class_bountyhunter_phase2_03,class_bountyhunter_phase2_04,class_bountyhunter_phase2_05,class_bountyhunter_phase2_master,class_bountyhunter_phase3_novice,class_bountyhunter_phase3_02,class_bountyhunter_phase3_03,class_bountyhunter_phase3_04,class_bountyhunter_phase3_05,class_bountyhunter_phase3_master,class_bountyhunter_phase4_novice,class_bountyhunter_phase4_02,class_bountyhunter_phase4_03,class_bountyhunter_phase4_04,class_bountyhunter_phase4_05,class_bountyhunter_phase4_master true 1,2,30 1
|
||||
bounty_hunter_2a bounty_hunter 0 combat_bountyhunter_prereq_novice,combat_bountyhunter_prereq_01,combat_bountyhunter_prereq_02,combat_bountyhunter_prereq_03,combat_bountyhunter_prereq_04,combat_bountyhunter_prereq_master,combat_bountyhunter_novice,combat_rifleman_prereq_novice,combat_rifleman_prereq_01,combat_rifleman_prereq_02,combat_rifleman_prereq_03,combat_rifleman_prereq_04,combat_rifleman_prereq_master,combat_rifleman_novice,science_doctor_prereq_novice,combat_bountyhunter_investigation_01,combat_bountyhunter_droidcontrol_01,combat_bountyhunter_droidresponse_01,combat_bountyhunter_support_01,science_doctor_prereq_01,combat_rifleman_accuracy_01,combat_rifleman_speed_01,combat_rifleman_ability_01,combat_rifleman_support_01,science_doctor_prereq_02,combat_bountyhunter_investigation_02,combat_bountyhunter_droidcontrol_02,science_doctor_prereq_03,combat_bountyhunter_droidresponse_02,combat_bountyhunter_support_02,science_doctor_prereq_04,combat_rifleman_accuracy_02,combat_rifleman_speed_02,science_doctor_prereq_master,combat_rifleman_ability_02,combat_rifleman_support_02,science_doctor_novice,combat_bountyhunter_investigation_03,combat_bountyhunter_droidcontrol_03,combat_bountyhunter_droidresponse_03,combat_bountyhunter_support_03,science_doctor_wound_speed_01,combat_rifleman_accuracy_03,combat_rifleman_speed_03,combat_rifleman_ability_03,combat_rifleman_support_03,science_doctor_wound_speed_02,combat_bountyhunter_investigation_04,combat_bountyhunter_droidcontrol_04,combat_bountyhunter_droidresponse_04,combat_bountyhunter_support_04,science_doctor_wound_speed_03,combat_rifleman_accuracy_04,combat_rifleman_speed_04,combat_rifleman_ability_04,combat_rifleman_support_04,science_doctor_wound_speed_04,combat_rifleman_master,combat_bountyhunter_master true 1,2,30 0
|
||||
bounty_hunter_2b bounty_hunter 0 combat_bountyhunter_prereq_novice,combat_bountyhunter_prereq_01,combat_bountyhunter_prereq_02,combat_bountyhunter_prereq_03,combat_bountyhunter_prereq_04,combat_bountyhunter_prereq_master,combat_bountyhunter_novice,combat_carbine_prereq_novice,combat_carbine_prereq_01,combat_carbine_prereq_02,combat_carbine_prereq_03,combat_carbine_prereq_04,combat_carbine_prereq_master,combat_carbine_novice,science_doctor_prereq_novice,combat_bountyhunter_investigation_01,combat_bountyhunter_droidcontrol_01,combat_bountyhunter_droidresponse_01,combat_bountyhunter_support_01,science_doctor_prereq_01,combat_carbine_accuracy_01,combat_carbine_speed_01,combat_carbine_ability_01,combat_carbine_support_01,science_doctor_prereq_02,combat_bountyhunter_investigation_02,combat_bountyhunter_droidcontrol_02,science_doctor_prereq_03,combat_bountyhunter_droidresponse_02,combat_bountyhunter_support_02,science_doctor_prereq_04,combat_carbine_accuracy_02,combat_carbine_speed_02,science_doctor_prereq_master,combat_carbine_ability_02,combat_carbine_support_02,science_doctor_novice,combat_bountyhunter_investigation_03,combat_bountyhunter_droidcontrol_03,combat_bountyhunter_droidresponse_03,combat_bountyhunter_support_03,science_doctor_wound_speed_01,combat_carbine_accuracy_03,combat_carbine_speed_03,combat_carbine_ability_03,combat_carbine_support_03,science_doctor_wound_speed_02,combat_bountyhunter_investigation_04,combat_bountyhunter_droidcontrol_04,combat_bountyhunter_droidresponse_04,combat_bountyhunter_support_04,science_doctor_wound_speed_03,combat_carbine_accuracy_04,combat_carbine_speed_04,combat_carbine_ability_04,combat_carbine_support_04,science_doctor_wound_speed_04,combat_carbine_master,combat_bountyhunter_master true 1,2,30 0
|
||||
officer_1a officer officer 4 class_officer_phase1_novice,class_officer_phase1_02,class_officer_phase1_03,class_officer_phase1_04,class_officer_phase1_05,class_officer_phase1_master,class_officer_phase2_novice,class_officer_phase2_02,class_officer_phase2_03,class_officer_phase2_04,class_officer_phase2_05,class_officer_phase2_master,class_officer_phase3_novice,class_officer_phase3_02,class_officer_phase3_03,class_officer_phase3_04,class_officer_phase3_05,class_officer_phase3_master,class_officer_phase4_novice,class_officer_phase4_02,class_officer_phase4_03,class_officer_phase4_04,class_officer_phase4_05,class_officer_phase4_master true 10,11,30 1
|
||||
officer_2a officer 0 outdoors_squadleader_prereq_novice,outdoors_squadleader_prereq_01,outdoors_squadleader_prereq_02,outdoors_squadleader_prereq_03,outdoors_squadleader_prereq_04,outdoors_squadleader_prereq_master,outdoors_squadleader_novice,combat_pistol_prereq_novice,combat_pistol_prereq_01,combat_pistol_prereq_02,combat_pistol_prereq_03,combat_pistol_prereq_04,combat_pistol_prereq_master,combat_pistol_novice,science_doctor_prereq_novice,outdoors_squadleader_movement_01,outdoors_squadleader_offense_01,outdoors_squadleader_defense_01,outdoors_squadleader_support_01,science_doctor_prereq_01,combat_pistol_accuracy_01,combat_pistol_speed_01,combat_pistol_ability_01,combat_pistol_support_01,science_doctor_prereq_02,outdoors_squadleader_movement_02,outdoors_squadleader_offense_02,science_doctor_prereq_03,outdoors_squadleader_defense_02,outdoors_squadleader_support_02,science_doctor_prereq_04,combat_pistol_accuracy_02,combat_pistol_speed_02,science_doctor_prereq_master,combat_pistol_ability_02,combat_pistol_support_02,science_doctor_novice,outdoors_squadleader_movement_03,outdoors_squadleader_offense_03,outdoors_squadleader_defense_03,outdoors_squadleader_support_03,science_doctor_wound_speed_01,combat_pistol_accuracy_03,combat_pistol_speed_03,combat_pistol_ability_03,combat_pistol_support_03,science_doctor_wound_speed_02,outdoors_squadleader_movement_04,outdoors_squadleader_offense_04,outdoors_squadleader_defense_04,outdoors_squadleader_support_04,science_doctor_wound_speed_03,combat_pistol_accuracy_04,combat_pistol_speed_04,combat_pistol_ability_04,combat_pistol_support_04,science_doctor_wound_speed_04,combat_pistol_master,outdoors_squadleader_master true 10,11,30 0
|
||||
officer_2b officer 0 outdoors_squadleader_prereq_novice,outdoors_squadleader_prereq_01,outdoors_squadleader_prereq_02,outdoors_squadleader_prereq_03,outdoors_squadleader_prereq_04,outdoors_squadleader_prereq_master,outdoors_squadleader_novice,combat_1hsword_prereq_novice,combat_1hsword_prereq_01,combat_1hsword_prereq_02,combat_1hsword_prereq_03,combat_1hsword_prereq_04,combat_1hsword_prereq_master,combat_1hsword_novice,science_doctor_prereq_novice,outdoors_squadleader_movement_01,outdoors_squadleader_offense_01,outdoors_squadleader_defense_01,outdoors_squadleader_support_01,science_doctor_prereq_01,combat_1hsword_accuracy_01,combat_1hsword_speed_01,combat_1hsword_ability_01,combat_1hsword_support_01,science_doctor_prereq_02,outdoors_squadleader_movement_02,outdoors_squadleader_offense_02,science_doctor_prereq_03,outdoors_squadleader_defense_02,outdoors_squadleader_support_02,science_doctor_prereq_04,combat_1hsword_accuracy_02,combat_1hsword_speed_02,science_doctor_prereq_master,combat_1hsword_ability_02,combat_1hsword_support_02,science_doctor_novice,outdoors_squadleader_movement_03,outdoors_squadleader_offense_03,outdoors_squadleader_defense_03,outdoors_squadleader_support_03,science_doctor_wound_speed_01,combat_1hsword_accuracy_03,combat_1hsword_speed_03,combat_1hsword_ability_03,combat_1hsword_support_03,science_doctor_wound_speed_02,outdoors_squadleader_movement_04,outdoors_squadleader_offense_04,outdoors_squadleader_defense_04,outdoors_squadleader_support_04,science_doctor_wound_speed_03,combat_1hsword_accuracy_04,combat_1hsword_speed_04,combat_1hsword_ability_04,combat_1hsword_support_04,science_doctor_wound_speed_04,combat_1hsword_master,outdoors_squadleader_master true 10,11,30 0
|
||||
commando_1a commando commando 5 class_commando_phase1_novice,class_commando_phase1_02,class_commando_phase1_03,class_commando_phase1_04,class_commando_phase1_05,class_commando_phase1_master,class_commando_phase2_novice,class_commando_phase2_02,class_commando_phase2_03,class_commando_phase2_04,class_commando_phase2_05,class_commando_phase2_master,class_commando_phase3_novice,class_commando_phase3_02,class_commando_phase3_03,class_commando_phase3_04,class_commando_phase3_05,class_commando_phase3_master,class_commando_phase4_novice,class_commando_phase4_02,class_commando_phase4_03,class_commando_phase4_04,class_commando_phase4_05,class_commando_phase4_master true 13,14,30 1
|
||||
commando_2a commando 0 combat_commando_prereq_novice,combat_commando_prereq_01,combat_commando_prereq_02,combat_commando_prereq_03,combat_commando_prereq_04,combat_commando_prereq_master,combat_commando_novice,combat_rifleman_prereq_novice,combat_rifleman_prereq_01,combat_rifleman_prereq_02,combat_rifleman_prereq_03,combat_rifleman_prereq_04,combat_rifleman_prereq_master,combat_rifleman_novice,science_doctor_prereq_novice,combat_commando_heavyweapon_accuracy_01,combat_commando_heavyweapon_speed_01,combat_commando_thrownweapon_01,combat_commando_support_01,science_doctor_prereq_01,combat_rifleman_accuracy_01,combat_rifleman_speed_01,combat_rifleman_ability_01,combat_rifleman_support_01,science_doctor_prereq_02,combat_commando_heavyweapon_accuracy_02,combat_commando_heavyweapon_speed_02,science_doctor_prereq_03,combat_commando_thrownweapon_02,combat_commando_support_02,science_doctor_prereq_04,combat_rifleman_accuracy_02,combat_rifleman_speed_02,science_doctor_prereq_master,combat_rifleman_ability_02,combat_rifleman_support_02,science_doctor_novice,combat_commando_heavyweapon_accuracy_03,combat_commando_heavyweapon_speed_03,combat_commando_thrownweapon_03,combat_commando_support_03,science_doctor_wound_speed_01,combat_rifleman_accuracy_03,combat_rifleman_speed_03,combat_rifleman_ability_03,combat_rifleman_support_03,science_doctor_wound_speed_02,combat_commando_heavyweapon_accuracy_04,combat_commando_heavyweapon_speed_04,combat_commando_thrownweapon_04,combat_commando_support_04,science_doctor_wound_speed_03,combat_rifleman_accuracy_04,combat_rifleman_speed_04,combat_rifleman_ability_04,combat_rifleman_support_04,science_doctor_wound_speed_04,combat_rifleman_master,combat_commando_master true 13,14,30 0
|
||||
commando_2b commando 0 combat_commando_prereq_novice,combat_commando_prereq_01,combat_commando_prereq_02,combat_commando_prereq_03,combat_commando_prereq_04,combat_commando_prereq_master,combat_commando_novice,combat_2hsword_prereq_novice,combat_2hsword_prereq_01,combat_2hsword_prereq_02,combat_2hsword_prereq_03,combat_2hsword_prereq_04,combat_2hsword_prereq_master,combat_2hsword_novice,science_doctor_prereq_novice,combat_commando_heavyweapon_accuracy_01,combat_commando_heavyweapon_speed_01,combat_commando_thrownweapon_01,combat_commando_support_01,science_doctor_prereq_01,combat_2hsword_accuracy_01,combat_2hsword_speed_01,combat_2hsword_ability_01,combat_2hsword_support_01,science_doctor_prereq_02,combat_commando_heavyweapon_accuracy_02,combat_commando_heavyweapon_speed_02,science_doctor_prereq_03,combat_commando_thrownweapon_02,combat_commando_support_02,science_doctor_prereq_04,combat_2hsword_accuracy_02,combat_2hsword_speed_02,science_doctor_prereq_master,combat_2hsword_ability_02,combat_2hsword_support_02,science_doctor_novice,combat_commando_heavyweapon_accuracy_03,combat_commando_heavyweapon_speed_03,combat_commando_thrownweapon_03,combat_commando_support_03,science_doctor_wound_speed_01,combat_2hsword_accuracy_03,combat_2hsword_speed_03,combat_2hsword_ability_03,combat_2hsword_support_03,science_doctor_wound_speed_02,combat_commando_heavyweapon_accuracy_04,combat_commando_heavyweapon_speed_04,combat_commando_thrownweapon_04,combat_commando_support_04,science_doctor_wound_speed_03,combat_2hsword_accuracy_04,combat_2hsword_speed_04,combat_2hsword_ability_04,combat_2hsword_support_04,science_doctor_wound_speed_04,combat_2hsword_master,combat_commando_master true 13,14,30 0
|
||||
force_sensitive_1a force_sensitive force_sensitive 1 class_forcesensitive_phase1_novice,class_forcesensitive_phase1_02,class_forcesensitive_phase1_03,class_forcesensitive_phase1_04,class_forcesensitive_phase1_05,class_forcesensitive_phase1_master,class_forcesensitive_phase2_novice,class_forcesensitive_phase2_02,class_forcesensitive_phase2_03,class_forcesensitive_phase2_04,class_forcesensitive_phase2_05,class_forcesensitive_phase2_master,class_forcesensitive_phase3_novice,class_forcesensitive_phase3_02,class_forcesensitive_phase3_03,class_forcesensitive_phase3_04,class_forcesensitive_phase3_05,class_forcesensitive_phase3_master,class_forcesensitive_phase4_novice,class_forcesensitive_phase4_02,class_forcesensitive_phase4_03,class_forcesensitive_phase4_04,class_forcesensitive_phase4_05,class_forcesensitive_phase4_master true 4,5,30 1
|
||||
force_sensitive_2a force_sensitive 0 combat_unarmed_prereq_novice,combat_unarmed_prereq_01,combat_unarmed_prereq_02,combat_unarmed_prereq_03,combat_unarmed_prereq_04,combat_unarmed_prereq_master,combat_unarmed_novice,combat_2hsword_prereq_novice,combat_2hsword_prereq_01,combat_2hsword_prereq_02,combat_2hsword_prereq_03,combat_2hsword_prereq_04,combat_2hsword_prereq_master,combat_2hsword_novice,science_doctor_prereq_novice,combat_unarmed_accuracy_01,combat_unarmed_speed_01,combat_unarmed_ability_01,combat_unarmed_support_01,science_doctor_prereq_01,combat_2hsword_accuracy_01,combat_2hsword_speed_01,combat_2hsword_ability_01,combat_2hsword_support_01,science_doctor_prereq_02,combat_unarmed_accuracy_02,combat_unarmed_speed_02,science_doctor_prereq_03,combat_unarmed_ability_02,combat_unarmed_support_02,science_doctor_prereq_04,combat_2hsword_accuracy_02,combat_2hsword_speed_02,science_doctor_prereq_master,combat_2hsword_ability_02,combat_2hsword_support_02,science_doctor_novice,combat_unarmed_accuracy_03,combat_unarmed_speed_03,combat_unarmed_ability_03,combat_unarmed_support_03,science_doctor_wound_speed_01,combat_2hsword_accuracy_03,combat_2hsword_speed_03,combat_2hsword_ability_03,combat_2hsword_support_03,science_doctor_wound_speed_02,combat_unarmed_accuracy_04,combat_unarmed_speed_04,combat_unarmed_ability_04,combat_unarmed_support_04,science_doctor_wound_speed_03,combat_2hsword_accuracy_04,combat_2hsword_speed_04,combat_2hsword_ability_04,combat_2hsword_support_04,science_doctor_wound_speed_04,combat_2hsword_master,combat_unarmed_master true 4,5,30 0
|
||||
force_sensitive_2b force_sensitive 0 combat_unarmed_prereq_novice,combat_unarmed_prereq_01,combat_unarmed_prereq_02,combat_unarmed_prereq_03,combat_unarmed_prereq_04,combat_unarmed_prereq_master,combat_unarmed_novice,combat_polearm_prereq_novice,combat_polearm_prereq_01,combat_polearm_prereq_02,combat_polearm_prereq_03,combat_polearm_prereq_04,combat_polearm_prereq_master,combat_polearm_novice,science_doctor_prereq_novice,combat_unarmed_accuracy_01,combat_unarmed_speed_01,combat_unarmed_ability_01,combat_unarmed_support_01,science_doctor_prereq_01,combat_polearm_accuracy_01,combat_polearm_speed_01,combat_polearm_ability_01,combat_polearm_support_01,science_doctor_prereq_02,combat_unarmed_accuracy_02,combat_unarmed_speed_02,science_doctor_prereq_03,combat_unarmed_ability_02,combat_unarmed_support_02,science_doctor_prereq_04,combat_polearm_accuracy_02,combat_polearm_speed_02,science_doctor_prereq_master,combat_polearm_ability_02,combat_polearm_support_02,science_doctor_novice,combat_unarmed_accuracy_03,combat_unarmed_speed_03,combat_unarmed_ability_03,combat_unarmed_support_03,science_doctor_wound_speed_01,combat_polearm_accuracy_03,combat_polearm_speed_03,combat_polearm_ability_03,combat_polearm_support_03,science_doctor_wound_speed_02,combat_unarmed_accuracy_04,combat_unarmed_speed_04,combat_unarmed_ability_04,combat_unarmed_support_04,science_doctor_wound_speed_03,combat_polearm_accuracy_04,combat_polearm_speed_04,combat_polearm_ability_04,combat_polearm_support_04,science_doctor_wound_speed_04,combat_polearm_master,combat_unarmed_master true 4,5,30 0
|
||||
medic_1a medic medic 8 class_medic_phase1_novice,class_medic_phase1_02,class_medic_phase1_03,class_medic_phase1_04,class_medic_phase1_05,class_medic_phase1_master,class_medic_phase2_novice,class_medic_phase2_02,class_medic_phase2_03,class_medic_phase2_04,class_medic_phase2_05,class_medic_phase2_master,class_medic_phase3_novice,class_medic_phase3_02,class_medic_phase3_03,class_medic_phase3_04,class_medic_phase3_05,class_medic_phase3_master,class_medic_phase4_novice,class_medic_phase4_02,class_medic_phase4_03,class_medic_phase4_04,class_medic_phase4_05,class_medic_phase4_master true 16,17,30 1
|
||||
medic_2a medic 0 science_doctor_prereq_novice,science_doctor_prereq_01,science_doctor_prereq_02,science_doctor_prereq_03,science_doctor_prereq_04,science_doctor_prereq_master,science_doctor_novice,science_combatmedic_prereq_novice,science_combatmedic_prereq_01,science_combatmedic_prereq_02,science_combatmedic_prereq_03,science_combatmedic_prereq_04,science_combatmedic_prereq_master,science_combatmedic_novice,combat_pistol_prereq_novice,science_doctor_wound_speed_01,science_doctor_wound_01,science_doctor_ability_01,science_doctor_support_01,combat_pistol_prereq_01,science_combatmedic_healing_range_01,science_combatmedic_healing_range_speed_01,science_combatmedic_medicine_01,science_combatmedic_support_01,combat_pistol_prereq_02,science_doctor_wound_speed_02,science_doctor_wound_02,combat_pistol_prereq_03,science_doctor_ability_02,science_doctor_support_02,combat_pistol_prereq_04,science_combatmedic_healing_range_02,science_combatmedic_healing_range_speed_02,combat_pistol_prereq_master,science_combatmedic_medicine_02,science_combatmedic_support_02,combat_pistol_novice,science_doctor_wound_speed_03,science_doctor_wound_03,science_doctor_ability_03,science_doctor_support_03,combat_pistol_support_01,science_combatmedic_healing_range_03,science_combatmedic_healing_range_speed_03,science_combatmedic_medicine_03,science_combatmedic_support_03,combat_pistol_support_02,science_doctor_wound_speed_04,science_doctor_wound_04,science_doctor_ability_04,science_doctor_support_04,combat_pistol_support_03,science_combatmedic_healing_range_04,science_combatmedic_healing_range_speed_04,science_combatmedic_medicine_04,science_combatmedic_support_04,combat_pistol_support_04,science_combatmedic_master,science_doctor_master true 16,17,30 0
|
||||
medic_2b medic 0 science_doctor_prereq_novice,science_doctor_prereq_01,science_doctor_prereq_02,science_doctor_prereq_03,science_doctor_prereq_04,science_doctor_prereq_master,science_doctor_novice,combat_pistol_prereq_novice,combat_pistol_prereq_01,combat_pistol_prereq_02,combat_pistol_prereq_03,combat_pistol_prereq_04,combat_pistol_prereq_master,combat_pistol_novice,science_combatmedic_prereq_novice,science_doctor_wound_speed_01,science_doctor_wound_01,science_doctor_ability_01,science_doctor_support_01,science_combatmedic_prereq_01,combat_pistol_accuracy_01,combat_pistol_speed_01,combat_pistol_ability_01,combat_pistol_support_01,science_combatmedic_prereq_02,science_doctor_wound_speed_02,science_doctor_wound_02,science_combatmedic_prereq_03,science_doctor_ability_02,science_doctor_support_02,science_combatmedic_prereq_04,combat_pistol_accuracy_02,combat_pistol_speed_02,science_combatmedic_prereq_master,combat_pistol_ability_02,combat_pistol_support_02,science_combatmedic_novice,science_doctor_wound_speed_03,science_doctor_wound_03,science_doctor_ability_03,science_doctor_support_03,science_combatmedic_healing_range_01,combat_pistol_accuracy_03,combat_pistol_speed_03,combat_pistol_ability_03,combat_pistol_support_03,science_combatmedic_healing_range_02,science_doctor_wound_speed_04,science_doctor_wound_04,science_doctor_ability_04,science_doctor_support_04,science_combatmedic_healing_range_03,combat_pistol_accuracy_04,combat_pistol_speed_04,combat_pistol_ability_04,combat_pistol_support_04,science_combatmedic_healing_range_04,combat_pistol_master,science_doctor_master true 16,17,30 0
|
||||
spy_1a spy spy 6 class_spy_phase1_novice,class_spy_phase1_02,class_spy_phase1_03,class_spy_phase1_04,class_spy_phase1_05,class_spy_phase1_master,class_spy_phase2_novice,class_spy_phase2_02,class_spy_phase2_03,class_spy_phase2_04,class_spy_phase2_05,class_spy_phase2_master,class_spy_phase3_novice,class_spy_phase3_02,class_spy_phase3_03,class_spy_phase3_04,class_spy_phase3_05,class_spy_phase3_master,class_spy_phase4_novice,class_spy_phase4_02,class_spy_phase4_03,class_spy_phase4_04,class_spy_phase4_05,class_spy_phase4_master true 19,20,30 1
|
||||
spy_2a spy 0 outdoors_ranger_prereq_novice,outdoors_ranger_prereq_01,outdoors_ranger_prereq_02,outdoors_ranger_prereq_03,outdoors_ranger_prereq_04,outdoors_ranger_prereq_master,outdoors_ranger_novice,combat_carbine_prereq_novice,combat_carbine_prereq_01,combat_carbine_prereq_02,combat_carbine_prereq_03,combat_carbine_prereq_04,combat_carbine_prereq_master,combat_carbine_novice,science_doctor_prereq_novice,outdoors_ranger_movement_01,outdoors_ranger_tracking_01,outdoors_ranger_harvest_01,outdoors_ranger_support_01,science_doctor_prereq_01,combat_carbine_accuracy_01,combat_carbine_speed_01,combat_carbine_ability_01,combat_carbine_support_01,science_doctor_prereq_02,outdoors_ranger_movement_02,outdoors_ranger_tracking_02,science_doctor_prereq_03,outdoors_ranger_harvest_02,outdoors_ranger_support_02,science_doctor_prereq_04,combat_carbine_accuracy_02,combat_carbine_speed_02,science_doctor_prereq_master,combat_carbine_ability_02,combat_carbine_support_02,science_doctor_novice,outdoors_ranger_movement_03,outdoors_ranger_tracking_03,outdoors_ranger_harvest_03,outdoors_ranger_support_03,science_doctor_wound_speed_01,combat_carbine_accuracy_03,combat_carbine_speed_03,combat_carbine_ability_03,combat_carbine_support_03,science_doctor_wound_speed_02,combat_carbine_accuracy_04,combat_carbine_speed_04,combat_carbine_ability_04,combat_carbine_support_04,science_doctor_wound_speed_03,outdoors_ranger_movement_04,outdoors_ranger_tracking_04,outdoors_ranger_harvest_04,outdoors_ranger_support_04,science_doctor_wound_speed_04,outdoors_ranger_master,combat_carbine_master true 19,20,30 0
|
||||
spy_2b spy 0 outdoors_ranger_prereq_novice,outdoors_ranger_prereq_01,outdoors_ranger_prereq_02,outdoors_ranger_prereq_03,outdoors_ranger_prereq_04,outdoors_ranger_prereq_master,outdoors_ranger_novice,combat_bountyhunter_prereq_novice,combat_bountyhunter_prereq_01,combat_bountyhunter_prereq_02,combat_bountyhunter_prereq_03,combat_bountyhunter_prereq_04,combat_bountyhunter_prereq_master,combat_bountyhunter_novice,science_doctor_prereq_novice,outdoors_ranger_movement_01,outdoors_ranger_tracking_01,outdoors_ranger_harvest_01,outdoors_ranger_support_01,science_doctor_prereq_01,combat_bountyhunter_investigation_01,combat_bountyhunter_droidcontrol_01,combat_bountyhunter_droidresponse_01,combat_bountyhunter_support_01,science_doctor_prereq_02,outdoors_ranger_movement_02,outdoors_ranger_tracking_02,science_doctor_prereq_03,outdoors_ranger_harvest_02,outdoors_ranger_support_02,science_doctor_prereq_04,combat_bountyhunter_investigation_02,combat_bountyhunter_droidcontrol_02,science_doctor_prereq_master,combat_bountyhunter_droidresponse_02,combat_bountyhunter_support_02,science_doctor_novice,outdoors_ranger_movement_03,outdoors_ranger_tracking_03,outdoors_ranger_harvest_03,outdoors_ranger_support_03,science_doctor_wound_speed_01,combat_bountyhunter_investigation_03,combat_bountyhunter_droidcontrol_03,combat_bountyhunter_droidresponse_03,combat_bountyhunter_support_03,science_doctor_wound_speed_02,combat_bountyhunter_investigation_04,combat_bountyhunter_droidcontrol_04,combat_bountyhunter_droidresponse_04,combat_bountyhunter_support_04,science_doctor_wound_speed_03,outdoors_ranger_movement_04,outdoors_ranger_tracking_04,outdoors_ranger_harvest_04,outdoors_ranger_support_04,science_doctor_wound_speed_04,outdoors_ranger_master,combat_bountyhunter_master true 19,20,30 0
|
||||
entertainer_1a entertainer entertainer 9 class_entertainer_phase1_novice,class_entertainer_phase1_02,class_entertainer_phase1_03,class_entertainer_phase1_04,class_entertainer_phase1_05,class_entertainer_phase1_master,class_entertainer_phase2_novice,class_entertainer_phase2_02,class_entertainer_phase2_03,class_entertainer_phase2_04,class_entertainer_phase2_05,class_entertainer_phase2_master,class_entertainer_phase3_novice,class_entertainer_phase3_02,class_entertainer_phase3_03,class_entertainer_phase3_04,class_entertainer_phase3_05,class_entertainer_phase3_master,class_entertainer_phase4_novice,class_entertainer_phase4_02,class_entertainer_phase4_03,class_entertainer_phase4_04,class_entertainer_phase4_05,class_entertainer_phase4_master true 22,23,30 1
|
||||
entertainer_2a entertainer 0 social_entertainer_novice,social_entertainer_dance_01,social_entertainer_music_01,social_entertainer_healing_01,social_entertainer_hairstyle_01,social_entertainer_dance_02,social_entertainer_music_02,social_entertainer_healing_02,social_entertainer_hairstyle_02,social_entertainer_dance_03,social_entertainer_music_03,social_entertainer_healing_03,social_entertainer_hairstyle_03,social_entertainer_dance_04,social_entertainer_music_04,social_entertainer_healing_04,social_entertainer_hairstyle_04,social_entertainer_master,social_dancer_novice,social_musician_novice,social_imagedesigner_novice,social_dancer_ability_01,social_dancer_wound_01,social_dancer_knowledge_01,social_dancer_shock_01,social_musician_ability_01,social_musician_wound_01,social_musician_knowledge_01,social_musician_shock_01,social_imagedesigner_hairstyle_01,social_imagedesigner_exotic_01,social_imagedesigner_bodyform_01,social_imagedesigner_markings_01,social_dancer_ability_02,social_dancer_wound_02,social_dancer_knowledge_02,social_dancer_shock_02,social_musician_ability_02,social_musician_wound_02,social_musician_knowledge_02,social_musician_shock_02,social_imagedesigner_hairstyle_02,social_imagedesigner_exotic_02,social_imagedesigner_bodyform_02,social_imagedesigner_markings_02,social_dancer_ability_03,social_dancer_wound_03,social_dancer_knowledge_03,social_dancer_shock_03,social_musician_ability_03,social_musician_wound_03,social_musician_knowledge_03,social_musician_shock_03,social_imagedesigner_hairstyle_03,social_imagedesigner_exotic_03,social_imagedesigner_bodyform_03,social_imagedesigner_markings_03,social_dancer_ability_04,social_dancer_wound_04,social_dancer_knowledge_04,social_dancer_shock_04,social_musician_ability_04,social_musician_wound_04,social_musician_knowledge_04,social_musician_shock_04,social_imagedesigner_hairstyle_04,social_imagedesigner_exotic_04,social_imagedesigner_bodyform_04,social_imagedesigner_markings_04,social_imagedesigner_master,social_musician_master,social_dancer_master false 0
|
||||
trader_0a trader trader 7 class_domestics_phase1_novice,class_domestics_phase1_02,class_domestics_phase1_03,class_domestics_phase1_04,class_domestics_phase1_05,class_domestics_phase1_master,class_domestics_phase2_novice,class_domestics_phase2_02,class_domestics_phase2_03,class_domestics_phase2_04,class_domestics_phase2_05,class_domestics_phase2_master,class_domestics_phase3_novice,class_domestics_phase3_02,class_domestics_phase3_03,class_domestics_phase3_04,class_domestics_phase3_05,class_domestics_phase3_master,class_domestics_phase4_novice,class_domestics_phase4_02,class_domestics_phase4_03,class_domestics_phase4_04,class_domestics_phase4_05,class_domestics_phase4_master true 25,29,30 1
|
||||
trader_0b trader 0 class_structures_phase1_novice,class_structures_phase1_02,class_structures_phase1_03,class_structures_phase1_04,class_structures_phase1_05,class_structures_phase1_master,class_structures_phase2_novice,class_structures_phase2_02,class_structures_phase2_03,class_structures_phase2_04,class_structures_phase2_05,class_structures_phase2_master,class_structures_phase3_novice,class_structures_phase3_02,class_structures_phase3_03,class_structures_phase3_04,class_structures_phase3_05,class_structures_phase3_master,class_structures_phase4_novice,class_structures_phase4_02,class_structures_phase4_03,class_structures_phase4_04,class_structures_phase4_05,class_structures_phase4_master true 26,29,30 1
|
||||
trader_0c trader 0 class_munitions_phase1_novice,class_munitions_phase1_02,class_munitions_phase1_03,class_munitions_phase1_04,class_munitions_phase1_05,class_munitions_phase1_master,class_munitions_phase2_novice,class_munitions_phase2_02,class_munitions_phase2_03,class_munitions_phase2_04,class_munitions_phase2_05,class_munitions_phase2_master,class_munitions_phase3_novice,class_munitions_phase3_02,class_munitions_phase3_03,class_munitions_phase3_04,class_munitions_phase3_05,class_munitions_phase3_master,class_munitions_phase4_novice,class_munitions_phase4_02,class_munitions_phase4_03,class_munitions_phase4_04,class_munitions_phase4_05,class_munitions_phase4_master true 27,29,30 1
|
||||
trader_0d trader 0 class_engineering_phase1_novice,class_engineering_phase1_02,class_engineering_phase1_03,class_engineering_phase1_04,class_engineering_phase1_05,class_engineering_phase1_master,class_engineering_phase2_novice,class_engineering_phase2_02,class_engineering_phase2_03,class_engineering_phase2_04,class_engineering_phase2_05,class_engineering_phase2_master,class_engineering_phase3_novice,class_engineering_phase3_02,class_engineering_phase3_03,class_engineering_phase3_04,class_engineering_phase3_05,class_engineering_phase3_master,class_engineering_phase4_novice,class_engineering_phase4_02,class_engineering_phase4_03,class_engineering_phase4_04,class_engineering_phase4_05,class_engineering_phase4_master true 28,29,30 1
|
||||
trader_1a trader 0 crafting_artisan_novice,crafting_artisan_survey_01,crafting_artisan_business_01,crafting_artisan_survey_02,crafting_artisan_business_02,crafting_artisan_survey_03,crafting_artisan_business_03,crafting_artisan_survey_04,crafting_artisan_business_04,crafting_merchant_novice,crafting_artisan_domestic_01,crafting_artisan_domestic_02,crafting_artisan_domestic_03,crafting_artisan_domestic_04,crafting_chef_novice,crafting_tailor_novice,crafting_chef_dish_01,crafting_chef_dessert_01,crafting_chef_drink_01,crafting_chef_techniques_01,crafting_tailor_casual_01,crafting_tailor_field_01,crafting_tailor_formal_01,crafting_tailor_production_01,crafting_merchant_advertising_01,crafting_merchant_sales_01,crafting_merchant_hiring_01,crafting_merchant_management_01,crafting_chef_dish_02,crafting_chef_dessert_02,crafting_chef_drink_02,crafting_chef_techniques_02,crafting_tailor_casual_02,crafting_tailor_field_02,crafting_tailor_formal_02,crafting_tailor_production_02,crafting_merchant_advertising_02,crafting_merchant_sales_02,crafting_merchant_hiring_02,crafting_merchant_management_02,crafting_chef_dish_03,crafting_chef_dessert_03,crafting_chef_drink_03,crafting_chef_techniques_03,crafting_tailor_casual_03,crafting_tailor_field_03,crafting_tailor_formal_03,crafting_tailor_production_03,crafting_merchant_advertising_03,crafting_merchant_sales_03,crafting_merchant_hiring_03,crafting_merchant_management_03,crafting_chef_dish_04,crafting_chef_dessert_04,crafting_chef_drink_04,crafting_chef_techniques_04,crafting_tailor_casual_04,crafting_tailor_field_04,crafting_tailor_formal_04,crafting_tailor_production_04,crafting_merchant_advertising_04,crafting_merchant_sales_04,crafting_merchant_hiring_04,crafting_merchant_management_04,crafting_chef_master,crafting_tailor_master,crafting_merchant_master false 0
|
||||
trader_1b trader 0 crafting_artisan_novice,crafting_artisan_survey_01,crafting_artisan_business_01,crafting_artisan_survey_02,crafting_artisan_business_02,crafting_artisan_survey_03,crafting_artisan_business_03,crafting_artisan_survey_04,crafting_artisan_business_04,crafting_merchant_novice,crafting_artisan_engineering_01,crafting_artisan_engineering_02,crafting_artisan_engineering_03,crafting_artisan_engineering_04,crafting_architect_novice,crafting_shipwright_novice,crafting_architect_production_01,crafting_architect_techniques_01,crafting_architect_harvesting_01,crafting_architect_blueprints_01,crafting_shipwright_engineering_01,crafting_shipwright_propulsion_01,crafting_shipwright_systems_01,crafting_shipwright_defense_01,crafting_merchant_advertising_01,crafting_merchant_sales_01,crafting_merchant_hiring_01,crafting_merchant_management_01,crafting_architect_production_02,crafting_architect_techniques_02,crafting_architect_harvesting_02,crafting_architect_blueprints_02,crafting_shipwright_engineering_02,crafting_shipwright_propulsion_02,crafting_shipwright_systems_02,crafting_shipwright_defense_02,crafting_merchant_advertising_02,crafting_merchant_sales_02,crafting_merchant_hiring_02,crafting_merchant_management_02,crafting_architect_production_03,crafting_architect_techniques_03,crafting_architect_harvesting_03,crafting_architect_blueprints_03,crafting_shipwright_engineering_03,crafting_shipwright_propulsion_03,crafting_shipwright_systems_03,crafting_shipwright_defense_03,crafting_merchant_advertising_03,crafting_merchant_sales_03,crafting_merchant_hiring_03,crafting_merchant_management_03,crafting_architect_production_04,crafting_architect_techniques_04,crafting_architect_harvesting_04,crafting_architect_blueprints_04,crafting_shipwright_engineering_04,crafting_shipwright_propulsion_04,crafting_shipwright_systems_04,crafting_shipwright_defense_04,crafting_merchant_advertising_04,crafting_merchant_sales_04,crafting_merchant_hiring_04,crafting_merchant_management_04,crafting_architect_master,crafting_shipwright_master,crafting_merchant_master false 0
|
||||
trader_1c trader 0 crafting_artisan_novice,crafting_artisan_survey_01,crafting_artisan_business_01,crafting_artisan_survey_02,crafting_artisan_business_02,crafting_artisan_survey_03,crafting_artisan_business_03,crafting_artisan_survey_04,crafting_artisan_business_04,crafting_merchant_novice,crafting_artisan_engineering_01,crafting_artisan_engineering_02,crafting_artisan_engineering_03,crafting_artisan_engineering_04,crafting_weaponsmith_novice,crafting_armorsmith_novice,crafting_weaponsmith_melee_01,crafting_weaponsmith_firearms_01,crafting_weaponsmith_munitions_01,crafting_weaponsmith_techniques_01,crafting_armorsmith_personal_01,crafting_armorsmith_heavy_01,crafting_armorsmith_deflectors_01,crafting_armorsmith_complexity_01,crafting_merchant_advertising_01,crafting_merchant_sales_01,crafting_merchant_hiring_01,crafting_merchant_management_01,crafting_weaponsmith_melee_02,crafting_weaponsmith_firearms_02,crafting_weaponsmith_munitions_02,crafting_weaponsmith_techniques_02,crafting_armorsmith_personal_02,crafting_armorsmith_heavy_02,crafting_armorsmith_deflectors_02,crafting_armorsmith_complexity_02,crafting_merchant_advertising_02,crafting_merchant_sales_02,crafting_merchant_hiring_02,crafting_merchant_management_02,crafting_weaponsmith_melee_03,crafting_weaponsmith_firearms_03,crafting_weaponsmith_munitions_03,crafting_weaponsmith_techniques_03,crafting_armorsmith_personal_03,crafting_armorsmith_heavy_03,crafting_armorsmith_deflectors_03,crafting_armorsmith_complexity_03,crafting_merchant_advertising_03,crafting_merchant_sales_03,crafting_merchant_hiring_03,crafting_merchant_management_03,crafting_weaponsmith_melee_04,crafting_weaponsmith_firearms_04,crafting_weaponsmith_munitions_04,crafting_weaponsmith_techniques_04,crafting_armorsmith_personal_04,crafting_armorsmith_heavy_04,crafting_armorsmith_deflectors_04,crafting_armorsmith_complexity_04,crafting_merchant_advertising_04,crafting_merchant_sales_04,crafting_merchant_hiring_04,crafting_merchant_management_04,crafting_weaponsmith_master,crafting_armorsmith_master,crafting_merchant_master false 0
|
||||
trader_1d trader 0 crafting_artisan_novice,crafting_artisan_survey_01,crafting_artisan_business_01,crafting_artisan_survey_02,crafting_artisan_business_02,crafting_artisan_survey_03,crafting_artisan_business_03,crafting_artisan_survey_04,crafting_artisan_business_04,crafting_merchant_novice,crafting_artisan_engineering_01,crafting_artisan_domestic_01,crafting_artisan_engineering_02,crafting_artisan_domestic_02,crafting_artisan_engineering_03,crafting_artisan_domestic_03,crafting_artisan_engineering_04,crafting_artisan_domestic_04,crafting_artisan_master,crafting_weaponsmith_novice,crafting_droidengineer_novice,crafting_droidengineer_production_01,crafting_droidengineer_techniques_01,crafting_droidengineer_refinement_01,crafting_droidengineer_blueprints_01,crafting_weaponsmith_melee_01,crafting_weaponsmith_firearms_01,crafting_weaponsmith_techniques_01,crafting_merchant_advertising_01,crafting_merchant_sales_01,crafting_merchant_hiring_01,crafting_merchant_management_01,crafting_droidengineer_production_02,crafting_droidengineer_techniques_02,crafting_droidengineer_refinement_02,crafting_droidengineer_blueprints_02,crafting_weaponsmith_melee_02,crafting_weaponsmith_firearms_02,crafting_weaponsmith_techniques_02,crafting_merchant_advertising_02,crafting_merchant_sales_02,crafting_merchant_hiring_02,crafting_merchant_management_02,crafting_droidengineer_production_03,crafting_droidengineer_techniques_03,crafting_droidengineer_refinement_03,crafting_droidengineer_blueprints_03,crafting_weaponsmith_melee_03,crafting_weaponsmith_firearms_03,crafting_weaponsmith_techniques_03,crafting_merchant_advertising_03,crafting_merchant_sales_03,crafting_merchant_hiring_03,crafting_merchant_management_03,crafting_droidengineer_production_04,crafting_droidengineer_techniques_04,crafting_droidengineer_refinement_04,crafting_droidengineer_blueprints_04,crafting_weaponsmith_melee_04,crafting_weaponsmith_firearms_04,crafting_weaponsmith_techniques_04,crafting_merchant_advertising_04,crafting_merchant_sales_04,crafting_merchant_hiring_04,crafting_merchant_management_04,crafting_droidengineer_master,crafting_merchant_master false 0
|
||||
space_pilot_rebel 0 pilot_rebel_navy_novice,pilot_rebel_navy_starships_01,pilot_rebel_navy_weapons_01,pilot_rebel_navy_procedures_01,pilot_rebel_navy_droid_01,pilot_rebel_navy_starships_02,pilot_rebel_navy_weapons_02,pilot_rebel_navy_procedures_02,pilot_rebel_navy_droid_02,pilot_rebel_navy_starships_03,pilot_rebel_navy_weapons_03,pilot_rebel_navy_procedures_03,pilot_rebel_navy_droid_03,pilot_rebel_navy_starships_04,pilot_rebel_navy_weapons_04,pilot_rebel_navy_procedures_04,pilot_rebel_navy_droid_04,pilot_rebel_navy_master false 0
|
||||
space_pilot_imperial 0 pilot_imperial_navy_novice,pilot_imperial_navy_starships_01,pilot_imperial_navy_weapons_01,pilot_imperial_navy_procedures_01,pilot_imperial_navy_droid_01,pilot_imperial_navy_starships_02,pilot_imperial_navy_weapons_02,pilot_imperial_navy_procedures_02,pilot_imperial_navy_droid_02,pilot_imperial_navy_starships_03,pilot_imperial_navy_weapons_03,pilot_imperial_navy_procedures_03,pilot_imperial_navy_droid_03,pilot_imperial_navy_starships_04,pilot_imperial_navy_weapons_04,pilot_imperial_navy_procedures_04,pilot_imperial_navy_droid_04,pilot_imperial_navy_master false 0
|
||||
space_pilot_neutral 0 pilot_neutral_novice,pilot_neutral_starships_01,pilot_neutral_weapons_01,pilot_neutral_procedures_01,pilot_neutral_droid_01,pilot_neutral_starships_02,pilot_neutral_weapons_02,pilot_neutral_procedures_02,pilot_neutral_droid_02,pilot_neutral_starships_03,pilot_neutral_weapons_03,pilot_neutral_procedures_03,pilot_neutral_droid_03,pilot_neutral_starships_04,pilot_neutral_weapons_04,pilot_neutral_procedures_04,pilot_neutral_droid_04,pilot_neutral_master false 0
|
||||
politician 0 social_politician_novice,social_politician_fiscal_01,social_politician_fiscal_02,social_politician_fiscal_03,social_politician_fiscal_04,social_politician_martial_01,social_politician_martial_02,social_politician_martial_03,social_politician_martial_04,social_politician_civic_01,social_politician_civic_02,social_politician_civic_03,social_politician_civic_04,social_politician_urban_01,social_politician_urban_02,social_politician_urban_03,social_politician_urban_04,social_politician_master false 0
|
||||
chronicles 0 class_chronicles_novice,class_chronicles_1,class_chronicles_2,class_chronicles_3,class_chronicles_4,class_chronicles_5,class_chronicles_6,class_chronicles_7,class_chronicles_8,class_chronicles_9,class_chronicles_10,class_chronicles_11,class_chronicles_12,class_chronicles_13,class_chronicles_14,class_chronicles_15,class_chronicles_16,class_chronicles_master true 0
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.projectswg.holocore.resources.support.data.server_info.loader;
|
||||
|
||||
import com.projectswg.holocore.resources.support.data.server_info.loader.SkillTemplateLoader.SkillTemplateInfo;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.loader.npc.*;
|
||||
import me.joshlarson.jlcommon.log.Log;
|
||||
|
||||
@@ -49,10 +50,22 @@ public abstract class DataLoader {
|
||||
return getInstance(SkillLoader.class, SkillLoader::new);
|
||||
}
|
||||
|
||||
public static SkillTemplateLoader skillTemplates() {
|
||||
return getInstance(SkillTemplateLoader.class, SkillTemplateLoader::new);
|
||||
}
|
||||
|
||||
public static PlayerLevelLoader playerLevels() {
|
||||
return getInstance(PlayerLevelLoader.class, PlayerLevelLoader::new);
|
||||
}
|
||||
|
||||
public static PlayerRoleLoader playerRoles() {
|
||||
return getInstance(PlayerRoleLoader.class, PlayerRoleLoader::new);
|
||||
}
|
||||
|
||||
public static RoadmapRewardLoader roadmapRewards() {
|
||||
return getInstance(RoadmapRewardLoader.class, RoadmapRewardLoader::new);
|
||||
}
|
||||
|
||||
public static BuildoutLoader buildouts() {
|
||||
return BuildoutLoader.load(List.of());
|
||||
}
|
||||
|
||||
@@ -29,14 +29,31 @@ package com.projectswg.holocore.resources.support.data.server_info.loader;
|
||||
|
||||
import com.projectswg.holocore.resources.support.data.server_info.SdbLoader;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.SdbLoader.SdbResultSet;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class PlayerRoleLoader extends DataLoader {
|
||||
|
||||
private final Map<Integer, RoleInfo> rolesByIndex;
|
||||
private final Map<String, RoleInfo> rolesBySkill;
|
||||
|
||||
PlayerRoleLoader() {
|
||||
|
||||
this.rolesByIndex = new HashMap<>();
|
||||
this.rolesBySkill = new HashMap<>();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public RoleInfo getRoleByIndex(int index) {
|
||||
return rolesByIndex.get(index);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public RoleInfo getRoleBySkill(String skill) {
|
||||
return rolesBySkill.get(skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,7 +61,8 @@ public final class PlayerRoleLoader extends DataLoader {
|
||||
try (SdbResultSet set = SdbLoader.load(new File("serverdata/player/role.sdb"))) {
|
||||
while (set.next()) {
|
||||
RoleInfo role = new RoleInfo(set);
|
||||
// TODO: Store information
|
||||
rolesByIndex.put(role.getIndex(), role);
|
||||
rolesBySkill.put(role.getQualifyingSkill(), role);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -60,5 +78,18 @@ public final class PlayerRoleLoader extends DataLoader {
|
||||
this.roleIcon = set.getText("role_icon");
|
||||
this.qualifyingSkill = set.getText("qualifying_skill");
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return index;
|
||||
}
|
||||
|
||||
public String getRoleIcon() {
|
||||
return roleIcon;
|
||||
}
|
||||
|
||||
public String getQualifyingSkill() {
|
||||
return qualifyingSkill;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,14 +29,25 @@ package com.projectswg.holocore.resources.support.data.server_info.loader;
|
||||
|
||||
import com.projectswg.holocore.resources.support.data.server_info.SdbLoader;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.SdbLoader.SdbResultSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class RoadmapRewardLoader extends DataLoader {
|
||||
|
||||
private final Map<String, RoadmapRewardInfo> rewardsBySkillName;
|
||||
|
||||
RoadmapRewardLoader() {
|
||||
|
||||
this.rewardsBySkillName = new HashMap<>();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public RoadmapRewardInfo getRewardBySkillName(String skillName) {
|
||||
return rewardsBySkillName.get(skillName);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,29 +55,71 @@ public final class RoadmapRewardLoader extends DataLoader {
|
||||
try (SdbResultSet set = SdbLoader.load(new File("serverdata/roadmap/item_rewards.sdb"))) {
|
||||
while (set.next()) {
|
||||
RoadmapRewardInfo rewardInfo = new RoadmapRewardInfo(set);
|
||||
// TODO: Store information
|
||||
rewardsBySkillName.put(rewardInfo.getSkillName(), rewardInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class RoadmapRewardInfo {
|
||||
|
||||
private final String roadmapTemplateName;
|
||||
private final String roadmapSkillName;
|
||||
private final String templateName;
|
||||
private final String skillName;
|
||||
private final String appearanceName;
|
||||
private final String stringId;
|
||||
private final String itemDefault;
|
||||
private final String itemWookiee;
|
||||
private final String itemIthorian;
|
||||
private final String [] defaultItems;
|
||||
private final String [] wookieeItems;
|
||||
private final String [] ithorianItems;
|
||||
|
||||
public RoadmapRewardInfo(SdbResultSet set) {
|
||||
this.roadmapTemplateName = set.getText("roadmap_template_name");
|
||||
this.roadmapSkillName = set.getText("roadmap_skill_name");
|
||||
this.templateName = set.getText("roadmap_template_name");
|
||||
this.skillName = set.getText("roadmap_skill_name");
|
||||
this.appearanceName = set.getText("appearance_name");
|
||||
this.stringId = set.getText("string_id");
|
||||
this.itemDefault = set.getText("item_default");
|
||||
this.itemWookiee = set.getText("item_wookiee");
|
||||
this.itemIthorian = set.getText("item_ithorian");
|
||||
this.defaultItems = splitCsv(set.getText("item_default"));
|
||||
this.wookieeItems = splitCsv(set.getText("item_wookiee"));
|
||||
this.ithorianItems = splitCsv(set.getText("item_ithorian"));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getTemplateName() {
|
||||
return templateName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getSkillName() {
|
||||
return skillName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getAppearanceName() {
|
||||
return appearanceName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getStringId() {
|
||||
return stringId;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String[] getDefaultItems() {
|
||||
return defaultItems.clone();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String[] getWookieeItems() {
|
||||
return wookieeItems.clone();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String[] getIthorianItems() {
|
||||
return ithorianItems.clone();
|
||||
}
|
||||
|
||||
private static String [] splitCsv(String val) {
|
||||
if (val.isBlank())
|
||||
return new String[0];
|
||||
return val.split(",");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,46 +29,95 @@ package com.projectswg.holocore.resources.support.data.server_info.loader;
|
||||
|
||||
import com.projectswg.holocore.resources.support.data.server_info.SdbLoader;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.SdbLoader.SdbResultSet;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class SkillTemplateLoader extends DataLoader {
|
||||
|
||||
private final Map<String, SkillTemplateInfo> templateFromName;
|
||||
|
||||
SkillTemplateLoader() {
|
||||
|
||||
this.templateFromName = new HashMap<>();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public SkillTemplateInfo getTemplateFromName(String name) {
|
||||
return templateFromName.get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void load() throws IOException {
|
||||
try (SdbResultSet set = SdbLoader.load(new File("serverdata/skill/skill_template.sdb"))) {
|
||||
while (set.next()) {
|
||||
SkillTemplateInfo skillTemplate = new SkillTemplateInfo(set);
|
||||
// TODO: Store information
|
||||
SkillTemplateInfo templateInfo = new SkillTemplateInfo(set);
|
||||
templateFromName.put(templateInfo.getName(), templateInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class SkillTemplateInfo {
|
||||
|
||||
private final String templateName;
|
||||
private final String startingTemplateName;
|
||||
private final String strClassName;
|
||||
private final int userInterfacePriority;
|
||||
private final String template;
|
||||
private final String name;
|
||||
private final String startingName;
|
||||
private final String className;
|
||||
private final int uiPriority;
|
||||
private final String [] templates;
|
||||
private final boolean levelBased;
|
||||
private final String expertiseTrees;
|
||||
private final int respecAllowed;
|
||||
private final boolean respecAllowed;
|
||||
|
||||
public SkillTemplateInfo(SdbResultSet set) {
|
||||
this.templateName = set.getText("template_name");
|
||||
this.startingTemplateName = set.getText("starting_template_name");
|
||||
this.strClassName = set.getText("str_class_name");
|
||||
this.userInterfacePriority = (int) set.getInt("user_interface_priority");
|
||||
this.template = set.getText("template");
|
||||
this.name = set.getText("template_name");
|
||||
this.startingName = set.getText("starting_template_name");
|
||||
this.className = set.getText("str_class_name");
|
||||
this.uiPriority = (int) set.getInt("user_interface_priority");
|
||||
this.templates = splitCsv(set.getText("template"));
|
||||
this.levelBased = set.getBoolean("level_based");
|
||||
this.expertiseTrees = set.getText("expertise_trees");
|
||||
this.respecAllowed = (int) set.getInt("respec_allowed");
|
||||
this.respecAllowed = set.getInt("respec_allowed") != 0;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getStartingName() {
|
||||
return startingName;
|
||||
}
|
||||
|
||||
public String getClassName() {
|
||||
return className;
|
||||
}
|
||||
|
||||
public int getUiPriority() {
|
||||
return uiPriority;
|
||||
}
|
||||
|
||||
public String [] getTemplates() {
|
||||
return templates.clone();
|
||||
}
|
||||
|
||||
public boolean isLevelBased() {
|
||||
return levelBased;
|
||||
}
|
||||
|
||||
public String getExpertiseTrees() {
|
||||
return expertiseTrees;
|
||||
}
|
||||
|
||||
public boolean isRespecAllowed() {
|
||||
return respecAllowed;
|
||||
}
|
||||
|
||||
private static String [] splitCsv(String val) {
|
||||
if (val.isBlank())
|
||||
return new String[0];
|
||||
return val.split(",");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,42 +1,22 @@
|
||||
package com.projectswg.holocore.services.gameplay.player.experience;
|
||||
|
||||
import com.projectswg.common.data.swgfile.ClientFactory;
|
||||
import com.projectswg.common.data.swgfile.visitors.DatatableData;
|
||||
import com.projectswg.common.network.packets.SWGPacket;
|
||||
import com.projectswg.common.network.packets.swg.zone.object_controller.ChangeRoleIconChoice;
|
||||
import com.projectswg.holocore.intents.gameplay.player.experience.skills.GrantSkillIntent;
|
||||
import com.projectswg.holocore.intents.gameplay.player.experience.skills.GrantSkillIntent.IntentType;
|
||||
import com.projectswg.holocore.intents.support.global.network.InboundPacketIntent;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.loader.DataLoader;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.loader.PlayerRoleLoader.RoleInfo;
|
||||
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
|
||||
import com.projectswg.holocore.resources.support.objects.swg.player.PlayerObject;
|
||||
import me.joshlarson.jlcommon.control.IntentHandler;
|
||||
import me.joshlarson.jlcommon.control.Service;
|
||||
import me.joshlarson.jlcommon.log.Log;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class ExperienceRoleService extends Service {
|
||||
|
||||
private final Map<Integer, Set<String>> roleIconMap;
|
||||
|
||||
public ExperienceRoleService() {
|
||||
roleIconMap = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean initialize() {
|
||||
DatatableData roleIconTable = (DatatableData) ClientFactory.getInfoFromFile("datatables/role/role.iff");
|
||||
|
||||
for (int i = 0; i < roleIconTable.getRowCount(); i++) {
|
||||
int iconIndex = (int) roleIconTable.getCell(i, 0);
|
||||
String qualifyingSkill = (String) roleIconTable.getCell(i, 2);
|
||||
|
||||
Set<String> qualifyingSkills = roleIconMap.computeIfAbsent(iconIndex, k -> new HashSet<>());
|
||||
|
||||
qualifyingSkills.add(qualifyingSkill);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@IntentHandler
|
||||
@@ -48,8 +28,23 @@ public class ExperienceRoleService extends Service {
|
||||
}
|
||||
}
|
||||
|
||||
@IntentHandler
|
||||
private void handleGrantSkillIntent(GrantSkillIntent gsi) {
|
||||
if (gsi.getIntentType() != IntentType.GIVEN)
|
||||
return;
|
||||
|
||||
RoleInfo qualifyingSkills = DataLoader.playerRoles().getRoleBySkill(gsi.getSkillName());
|
||||
if (qualifyingSkills == null)
|
||||
return;
|
||||
|
||||
PlayerObject playerObject = gsi.getTarget().getPlayerObject();
|
||||
assert playerObject != null;
|
||||
|
||||
playerObject.setProfessionIcon(qualifyingSkills.getIndex());
|
||||
}
|
||||
|
||||
private void changeRoleIcon(CreatureObject creature, int chosenIcon) {
|
||||
Set<String> qualifyingSkills = roleIconMap.get(chosenIcon);
|
||||
RoleInfo qualifyingSkills = DataLoader.playerRoles().getRoleByIndex(chosenIcon);
|
||||
if (qualifyingSkills == null) {
|
||||
Log.w("%s tried to use undefined role icon %d", creature, chosenIcon);
|
||||
return;
|
||||
@@ -57,13 +52,8 @@ public class ExperienceRoleService extends Service {
|
||||
PlayerObject playerObject = creature.getPlayerObject();
|
||||
assert playerObject != null;
|
||||
|
||||
for (String qualifyingSkill : qualifyingSkills) {
|
||||
if (creature.hasSkill(qualifyingSkill)) {
|
||||
playerObject.setProfessionIcon(chosenIcon);
|
||||
return;
|
||||
}
|
||||
}
|
||||
Log.e("%s could not be given role icon %d - does not have qualifying skill! Qualifying: %s", creature, chosenIcon, qualifyingSkills);
|
||||
if (creature.hasSkill(qualifyingSkills.getQualifyingSkill()))
|
||||
playerObject.setProfessionIcon(qualifyingSkills.getIndex());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.projectswg.holocore.services.gameplay.player.experience.skills;
|
||||
|
||||
import com.projectswg.holocore.intents.gameplay.player.badge.SetTitleIntent;
|
||||
import com.projectswg.holocore.intents.gameplay.player.experience.LevelChangedIntent;
|
||||
import com.projectswg.holocore.intents.gameplay.player.experience.skills.GrantSkillIntent;
|
||||
import com.projectswg.holocore.intents.gameplay.player.experience.skills.SkillModIntent;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.StandardLog;
|
||||
@@ -10,6 +9,7 @@ import com.projectswg.holocore.resources.support.data.server_info.loader.SkillLo
|
||||
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
|
||||
import me.joshlarson.jlcommon.control.IntentHandler;
|
||||
import me.joshlarson.jlcommon.control.Service;
|
||||
import me.joshlarson.jlcommon.log.Log;
|
||||
|
||||
public class SkillService extends Service {
|
||||
|
||||
@@ -26,6 +26,7 @@ public class SkillService extends Service {
|
||||
String skillName = gsi.getSkillName();
|
||||
CreatureObject target = gsi.getTarget();
|
||||
SkillInfo skillData = DataLoader.skills().getSkillByName(skillName);
|
||||
Log.t("skillData=%s", skillData);
|
||||
if (skillData == null)
|
||||
return;
|
||||
|
||||
@@ -60,11 +61,6 @@ public class SkillService extends Service {
|
||||
sti.getRequester().setTitle(title);
|
||||
}
|
||||
|
||||
@IntentHandler
|
||||
private void handleLevelChangedIntent(LevelChangedIntent lci) {
|
||||
|
||||
}
|
||||
|
||||
private boolean hasRequiredSkills(SkillInfo skillData, CreatureObject creatureObject) {
|
||||
String[] requiredSkills = skillData.getSkillsRequired();
|
||||
if (requiredSkills == null)
|
||||
|
||||
@@ -29,8 +29,6 @@ package com.projectswg.holocore.services.gameplay.player.experience.skills;
|
||||
import com.projectswg.common.data.RGB;
|
||||
import com.projectswg.common.data.encodables.oob.StringId;
|
||||
import com.projectswg.common.data.encodables.tangible.Race;
|
||||
import com.projectswg.common.data.swgfile.ClientFactory;
|
||||
import com.projectswg.common.data.swgfile.visitors.DatatableData;
|
||||
import com.projectswg.common.network.packets.swg.zone.PlayClientEffectObjectMessage;
|
||||
import com.projectswg.common.network.packets.swg.zone.PlayMusicMessage;
|
||||
import com.projectswg.common.network.packets.swg.zone.object_controller.ShowFlyText;
|
||||
@@ -40,9 +38,11 @@ import com.projectswg.holocore.intents.gameplay.player.experience.LevelChangedIn
|
||||
import com.projectswg.holocore.intents.gameplay.player.experience.skills.GrantSkillIntent;
|
||||
import com.projectswg.holocore.intents.support.objects.items.CreateStaticItemIntent;
|
||||
import com.projectswg.holocore.intents.support.objects.swg.ObjectCreatedIntent;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.loader.DataLoader;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.loader.RoadmapRewardLoader.RoadmapRewardInfo;
|
||||
import com.projectswg.holocore.resources.support.data.server_info.loader.SkillTemplateLoader.SkillTemplateInfo;
|
||||
import com.projectswg.holocore.resources.support.global.player.Player;
|
||||
import com.projectswg.holocore.resources.support.objects.ObjectCreator;
|
||||
import com.projectswg.holocore.resources.support.objects.items.RoadmapReward;
|
||||
import com.projectswg.holocore.resources.support.objects.swg.SWGObject;
|
||||
import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject;
|
||||
import com.projectswg.holocore.resources.support.objects.swg.player.PlayerObject;
|
||||
@@ -52,10 +52,7 @@ import me.joshlarson.jlcommon.control.IntentHandler;
|
||||
import me.joshlarson.jlcommon.control.Service;
|
||||
import me.joshlarson.jlcommon.log.Log;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* This is a service that listens for {@link LevelChangedIntent} and grants
|
||||
@@ -64,14 +61,9 @@ import java.util.Map;
|
||||
*/
|
||||
public final class SkillTemplateService extends Service {
|
||||
|
||||
private final Map<String, String[]> skillTemplates;
|
||||
private final Map<String, RoadmapReward> rewards;
|
||||
private final Map<String, String[]> badgeNames;
|
||||
|
||||
public SkillTemplateService() {
|
||||
skillTemplates = new HashMap<>();
|
||||
rewards = new HashMap<>();
|
||||
|
||||
badgeNames = new HashMap<>();
|
||||
badgeNames.put("bounty_hunter_1a", new String[]{"new_prof_bountyhunter_master"});
|
||||
badgeNames.put("commando_1a", new String[]{"new_prof_commando_master"});
|
||||
@@ -87,22 +79,6 @@ public final class SkillTemplateService extends Service {
|
||||
badgeNames.put("trader_0c", new String[]{"new_prof_crafting_merchant_master", "new_prof_crafting_artisan_master", "new_prof_crafting_armorsmith_master", "new_prof_crafting_weaponsmith_master"});
|
||||
badgeNames.put("trader_0d", new String[]{"new_prof_crafting_merchant_master", "new_prof_crafting_artisan_master", "new_prof_crafting_droidengineer_master"});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean initialize() {
|
||||
DatatableData skillTemplateTable = (DatatableData) ClientFactory.getInfoFromFile("datatables/skill_template/skill_template.iff");
|
||||
|
||||
for (int row = 0; row < skillTemplateTable.getRowCount(); row++) {
|
||||
String profession = (String) skillTemplateTable.getCell(row, 0);
|
||||
String[] templates = ((String) skillTemplateTable.getCell(row, 4)).split(",");
|
||||
|
||||
skillTemplates.put(profession, templates);
|
||||
}
|
||||
|
||||
loadRewardItemsIff();
|
||||
|
||||
return super.initialize();
|
||||
}
|
||||
|
||||
@IntentHandler
|
||||
private void handleLevelChangedIntent(LevelChangedIntent lci) {
|
||||
@@ -115,10 +91,10 @@ public final class SkillTemplateService extends Service {
|
||||
|
||||
for (int level = oldLevel + 1; level <= newLevel; level++) {
|
||||
// Skills are only awarded every third or fourth level
|
||||
if ((level == 4 || level == 7 || level == 10) || ((level > 10) && (((level - 10) % 4) == 0))) {
|
||||
if ((level == 1 || level == 4 || level == 7 || level == 10) || ((level > 10) && (((level - 10) % 4) == 0))) {
|
||||
PlayerObject playerObject = creatureObject.getPlayerObject();
|
||||
Profession profession = playerObject.getProfession();
|
||||
String[] templates = skillTemplates.get(profession.getClientName());
|
||||
SkillTemplateInfo templates = DataLoader.skillTemplates().getTemplateFromName(profession.getClientName());
|
||||
|
||||
if (templates == null) {
|
||||
Log.w("%s tried to level up to %d with invalid profession %s", creatureObject, level, profession);
|
||||
@@ -127,7 +103,7 @@ public final class SkillTemplateService extends Service {
|
||||
|
||||
int skillIndex = (level <= 10) ? ((level - 1) / 3) : (((level - 10) / 4) + 3);
|
||||
|
||||
String skillName = templates[skillIndex];
|
||||
String skillName = templates.getTemplates()[skillIndex];
|
||||
new GrantSkillIntent(GrantSkillIntent.IntentType.GRANT, skillName, creatureObject, true).broadcast();
|
||||
playerObject.setProfWheelPosition(skillName);
|
||||
|
||||
@@ -161,57 +137,37 @@ public final class SkillTemplateService extends Service {
|
||||
}
|
||||
|
||||
private void giveRewardItems(CreatureObject creatureObject, String skillName) {
|
||||
RoadmapReward reward = rewards.get(skillName);
|
||||
RoadmapRewardInfo reward = DataLoader.roadmapRewards().getRewardBySkillName(skillName);
|
||||
if (reward == null)
|
||||
return; // No reward to give
|
||||
|
||||
Race characterRace = creatureObject.getRace();
|
||||
String species = characterRace.getSpecies().toUpperCase();
|
||||
String species = characterRace.getSpecies().toUpperCase(Locale.US);
|
||||
SWGObject inventory = creatureObject.getSlottedObject("inventory");
|
||||
String[] items;
|
||||
|
||||
if (reward.hasItems() || reward.isUniversalReward()) {
|
||||
if (reward.isUniversalReward())
|
||||
items = reward.getDefaultRewardItems();
|
||||
else if (species.equals("ITHORIAN"))
|
||||
items = reward.getIthorianRewardItems();
|
||||
else if (species.equals("WOOKIEE"))
|
||||
items = reward.getWookieeRewardItems();
|
||||
else
|
||||
items = reward.getDefaultRewardItems();
|
||||
if (species.equals("ITHORIAN") && reward.getIthorianItems().length > 0)
|
||||
items = reward.getIthorianItems();
|
||||
else if (species.equals("WOOKIEE") && reward.getWookieeItems().length > 0)
|
||||
items = reward.getWookieeItems();
|
||||
else
|
||||
items = reward.getDefaultItems();
|
||||
|
||||
Collection<String> staticItems = new ArrayList<>();
|
||||
|
||||
for (String item : items) {
|
||||
if (item.endsWith(".iff")) {
|
||||
SWGObject nonStaticItem = ObjectCreator.createObjectFromTemplate(ClientFactory.formatToSharedFile(item));
|
||||
|
||||
if (nonStaticItem != null) {
|
||||
nonStaticItem.moveToContainer(inventory);
|
||||
}
|
||||
new ObjectCreatedIntent(nonStaticItem).broadcast();
|
||||
} else {
|
||||
staticItems.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// No reason to broadcast this intent if we don't need new static items anyways
|
||||
if (!staticItems.isEmpty())
|
||||
new CreateStaticItemIntent(creatureObject, inventory, new StaticItemService.LootBoxHandler(creatureObject), staticItems.toArray(new String[0])).broadcast();
|
||||
}
|
||||
}
|
||||
|
||||
private void loadRewardItemsIff() {
|
||||
DatatableData rewardsTable = (DatatableData) ClientFactory.getInfoFromFile("datatables/roadmap/item_rewards.iff");
|
||||
Collection<String> staticItems = new ArrayList<>();
|
||||
|
||||
for (int row = 0; row < rewardsTable.getRowCount(); row++) {
|
||||
String roadmapTemplate = rewardsTable.getCell(row, 0).toString();
|
||||
String roadmapSkillName = rewardsTable.getCell(row, 1).toString();
|
||||
String appearanceName = rewardsTable.getCell(row, 2).toString();
|
||||
String stringId = rewardsTable.getCell(row, 3).toString();
|
||||
String itemDefault = rewardsTable.getCell(row, 4).toString();
|
||||
String itemWookiee = rewardsTable.getCell(row, 5).toString();
|
||||
String itemIthorian = rewardsTable.getCell(row, 6).toString();
|
||||
|
||||
rewards.put(roadmapSkillName, new RoadmapReward(roadmapTemplate, roadmapSkillName, appearanceName, stringId, itemDefault, itemWookiee, itemIthorian));
|
||||
for (String item : items) {
|
||||
if (item.endsWith(".iff")) {
|
||||
SWGObject nonStaticItem = ObjectCreator.createObjectFromTemplate(item);
|
||||
nonStaticItem.moveToContainer(inventory);
|
||||
new ObjectCreatedIntent(nonStaticItem).broadcast();
|
||||
} else {
|
||||
staticItems.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// No reason to broadcast this intent if we don't need new static items anyways
|
||||
if (!staticItems.isEmpty())
|
||||
new CreateStaticItemIntent(creatureObject, inventory, new StaticItemService.LootBoxHandler(creatureObject), staticItems.toArray(String[]::new)).broadcast();
|
||||
}
|
||||
|
||||
private void grantMasteryBadge(CreatureObject creature, Profession profession, String skillName) {
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/***********************************************************************************
|
||||
* Copyright (c) 2019 /// Project SWG /// www.projectswg.com *
|
||||
* *
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on *
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. *
|
||||
* Our goal is to create an emulator which will provide a server for players to *
|
||||
* continue playing a game similar to the one they used to play. We are basing *
|
||||
* it on the final publish of the game prior to end-game events. *
|
||||
* *
|
||||
* This file is part of Holocore. *
|
||||
* *
|
||||
* --------------------------------------------------------------------------------*
|
||||
* *
|
||||
* Holocore is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU Affero General Public License as *
|
||||
* published by the Free Software Foundation, either version 3 of the *
|
||||
* License, or (at your option) any later version. *
|
||||
* *
|
||||
* Holocore is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Affero General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Affero General Public License *
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>. *
|
||||
***********************************************************************************/
|
||||
|
||||
package com.projectswg.holocore.services.gameplay.player.experience;
|
||||
|
||||
import com.projectswg.holocore.intents.gameplay.player.experience.LevelChangedIntent;
|
||||
import com.projectswg.holocore.resources.support.objects.swg.player.Profession;
|
||||
import com.projectswg.holocore.services.gameplay.player.experience.skills.SkillService;
|
||||
import com.projectswg.holocore.services.gameplay.player.experience.skills.SkillTemplateService;
|
||||
import com.projectswg.holocore.test.resources.GenericCreatureObject;
|
||||
import com.projectswg.holocore.test.runners.TestRunnerSynchronousIntents;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TestSkillTemplateService extends TestRunnerSynchronousIntents {
|
||||
|
||||
@Test
|
||||
public void testStartingProfessionIcon() {
|
||||
registerService(new SkillService());
|
||||
registerService(new SkillTemplateService());
|
||||
registerService(new ExperienceRoleService());
|
||||
|
||||
GenericCreatureObject creature = new GenericCreatureObject(1);
|
||||
creature.setLevel(0);
|
||||
creature.getPlayerObject().setProfession(Profession.SMUGGLER);
|
||||
Assert.assertEquals(0, creature.getPlayerObject().getProfessionIcon());
|
||||
|
||||
creature.setLevel(1);
|
||||
broadcastAndWait(new LevelChangedIntent(creature, (short) 0, (short) 1));
|
||||
Assert.assertEquals(25, creature.getPlayerObject().getProfessionIcon());
|
||||
Assert.assertTrue(creature.getSkills().contains("class_smuggler_phase1_novice"));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user