diff --git a/scripts/loot/lootItems/damaged_datapad.py b/scripts/loot/lootItems/damaged_datapad.py deleted file mode 100644 index 7757a473..00000000 --- a/scripts/loot/lootItems/damaged_datapad.py +++ /dev/null @@ -1,20 +0,0 @@ - -def itemTemplate(): - - return 'object/tangible/loot/misc/shared_damaged_datapad.iff' - -def customItemName(): - - return '' - -def customItemStackCount(): - - return 1 - -def customizationAttributes(): - - return [] - -def customizationValues(): - - return [] \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/antenna.py b/scripts/loot/lootItems/junk/antenna.py new file mode 100644 index 00000000..747de5b7 --- /dev/null +++ b/scripts/loot/lootItems/junk/antenna.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_antennae.iff' diff --git a/scripts/loot/lootItems/junk/armor_repair_device.py b/scripts/loot/lootItems/junk/armor_repair_device.py new file mode 100644 index 00000000..713dc0ce --- /dev/null +++ b/scripts/loot/lootItems/junk/armor_repair_device.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_armor_repair_device_generic.iff' diff --git a/scripts/loot/lootItems/junk/brain.py b/scripts/loot/lootItems/junk/brain.py new file mode 100644 index 00000000..d0e8f837 --- /dev/null +++ b/scripts/loot/lootItems/junk/brain.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_brain_s01.iff' diff --git a/scripts/loot/lootItems/junk/chassis_blueprint.py b/scripts/loot/lootItems/junk/chassis_blueprint.py new file mode 100644 index 00000000..5c2445a8 --- /dev/null +++ b/scripts/loot/lootItems/junk/chassis_blueprint.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/generic_usable/shared_chassis_blueprint_usuable.iff' diff --git a/scripts/loot/lootItems/junk/comlink.py b/scripts/loot/lootItems/junk/comlink.py new file mode 100644 index 00000000..648802c6 --- /dev/null +++ b/scripts/loot/lootItems/junk/comlink.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_comlink_civilian_generic.iff' + +def customItemName(): + + return 'Comlink' \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/damaged_datapad.py b/scripts/loot/lootItems/junk/damaged_datapad.py new file mode 100644 index 00000000..4fc1a9a9 --- /dev/null +++ b/scripts/loot/lootItems/junk/damaged_datapad.py @@ -0,0 +1,9 @@ + +def itemTemplate(): + + return 'object/tangible/loot/misc/shared_damaged_datapad.iff' + +def customItemName(): + + return 'Damaged Datapad' + diff --git a/scripts/loot/lootItems/junk/ear_jewel.py b/scripts/loot/lootItems/junk/ear_jewel.py new file mode 100644 index 00000000..abe14c33 --- /dev/null +++ b/scripts/loot/lootItems/junk/ear_jewel.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return '/object/tangible/loot/npc_loot/shared_jewelry_ear_s02.iff' diff --git a/scripts/loot/lootItems/junk/explosive_dud.py b/scripts/loot/lootItems/junk/explosive_dud.py new file mode 100644 index 00000000..bc7091a7 --- /dev/null +++ b/scripts/loot/lootItems/junk/explosive_dud.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return '/object/tangible/loot/npc_loot/shared_firework_dud_s1.iff' diff --git a/scripts/loot/lootItems/junk/eye.py b/scripts/loot/lootItems/junk/eye.py new file mode 100644 index 00000000..aa7c6cff --- /dev/null +++ b/scripts/loot/lootItems/junk/eye.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_eye.iff' diff --git a/scripts/loot/lootItems/junk/gland.py b/scripts/loot/lootItems/junk/gland.py new file mode 100644 index 00000000..071a60ef --- /dev/null +++ b/scripts/loot/lootItems/junk/gland.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_lungs_gland.iff' + +def customItemName(): + + return 'Gland' \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/heart.py b/scripts/loot/lootItems/junk/heart.py new file mode 100644 index 00000000..3715f029 --- /dev/null +++ b/scripts/loot/lootItems/junk/heart.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_heart.iff' diff --git a/scripts/loot/lootItems/junk/hyperdrive_unit.py b/scripts/loot/lootItems/junk/hyperdrive_unit.py new file mode 100644 index 00000000..25afcd63 --- /dev/null +++ b/scripts/loot/lootItems/junk/hyperdrive_unit.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/miscshared_hyperdrive_part_s01.iff' diff --git a/scripts/loot/lootItems/junk/id_chip.py b/scripts/loot/lootItems/junk/id_chip.py new file mode 100644 index 00000000..e4738035 --- /dev/null +++ b/scripts/loot/lootItems/junk/id_chip.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_id_chip_generic.iff' + +def customItemName(): + + return 'ID Chip' diff --git a/scripts/loot/lootItems/junk/impulse_detector.py b/scripts/loot/lootItems/junk/impulse_detector.py new file mode 100644 index 00000000..17f08a9d --- /dev/null +++ b/scripts/loot/lootItems/junk/impulse_detector.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_impulse_detector_01_generic.iff' diff --git a/scripts/loot/lootItems/junk/laser_trap.py b/scripts/loot/lootItems/junk/laser_trap.py new file mode 100644 index 00000000..4bbcdb48 --- /dev/null +++ b/scripts/loot/lootItems/junk/laser_trap.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_laser_trap_generic.iff' diff --git a/scripts/loot/lootItems/junk/launcher_tube.py b/scripts/loot/lootItems/junk/launcher_tube.py new file mode 100644 index 00000000..5612b566 --- /dev/null +++ b/scripts/loot/lootItems/junk/launcher_tube.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_launcher_tube_generic.iff' diff --git a/scripts/loot/lootItems/junk/ledger.py b/scripts/loot/lootItems/junk/ledger.py new file mode 100644 index 00000000..093e2caf --- /dev/null +++ b/scripts/loot/lootItems/junk/ledger.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_ledger_generic.iff' diff --git a/scripts/loot/lootItems/junk/magseal_detector.py b/scripts/loot/lootItems/junk/magseal_detector.py new file mode 100644 index 00000000..bce0a6c7 --- /dev/null +++ b/scripts/loot/lootItems/junk/magseal_detector.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_magseal_detector_generic.iff' diff --git a/scripts/loot/lootItems/junk/medical_console.py b/scripts/loot/lootItems/junk/medical_console.py new file mode 100644 index 00000000..db82ffa3 --- /dev/null +++ b/scripts/loot/lootItems/junk/medical_console.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_medical_console_generic.iff' diff --git a/scripts/loot/lootItems/junk/medical_device.py b/scripts/loot/lootItems/junk/medical_device.py new file mode 100644 index 00000000..eb55b264 --- /dev/null +++ b/scripts/loot/lootItems/junk/medical_device.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_medical_device_generic.iff' diff --git a/scripts/loot/lootItems/junk/motor.py b/scripts/loot/lootItems/junk/motor.py new file mode 100644 index 00000000..63d2def6 --- /dev/null +++ b/scripts/loot/lootItems/junk/motor.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_small_motor_generic.iff' diff --git a/scripts/loot/lootItems/junk/power_output_analyzer.py b/scripts/loot/lootItems/junk/power_output_analyzer.py new file mode 100644 index 00000000..b44f9808 --- /dev/null +++ b/scripts/loot/lootItems/junk/power_output_analyzer.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_power_output_analyzer_generic.iff' diff --git a/scripts/loot/lootItems/junk/red_wiring.py b/scripts/loot/lootItems/junk/red_wiring.py new file mode 100644 index 00000000..d2f31c46 --- /dev/null +++ b/scripts/loot/lootItems/junk/red_wiring.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_red_wiring_generic.iff' diff --git a/scripts/loot/lootItems/junk/shield_module.py b/scripts/loot/lootItems/junk/shield_module.py new file mode 100644 index 00000000..43335cfa --- /dev/null +++ b/scripts/loot/lootItems/junk/shield_module.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_shield_module_generic.iff' diff --git a/scripts/loot/lootItems/junk/software_module.py b/scripts/loot/lootItems/junk/software_module.py new file mode 100644 index 00000000..8041a85a --- /dev/null +++ b/scripts/loot/lootItems/junk/software_module.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_software_module_generic.iff' diff --git a/scripts/loot/lootItems/junk/stomach.py b/scripts/loot/lootItems/junk/stomach.py new file mode 100644 index 00000000..e3692923 --- /dev/null +++ b/scripts/loot/lootItems/junk/stomach.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_stomach.iff' diff --git a/scripts/loot/lootItems/junk/survival_gear.py b/scripts/loot/lootItems/junk/survival_gear.py new file mode 100644 index 00000000..e8ad23ae --- /dev/null +++ b/scripts/loot/lootItems/junk/survival_gear.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_survival_equipment_generic.iff' diff --git a/scripts/loot/lootItems/junk/underpowered_survey_pad.py b/scripts/loot/lootItems/junk/underpowered_survey_pad.py new file mode 100644 index 00000000..3dca4fa8 --- /dev/null +++ b/scripts/loot/lootItems/junk/underpowered_survey_pad.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_survey_pad_adv_generic.iff' diff --git a/scripts/loot/lootItems/junk/unidentified_serum_vial.py b/scripts/loot/lootItems/junk/unidentified_serum_vial.py new file mode 100644 index 00000000..1f4f8e84 --- /dev/null +++ b/scripts/loot/lootItems/junk/unidentified_serum_vial.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_serum_vial_generic.iff' diff --git a/scripts/loot/lootItems/junk/used_notebook.py b/scripts/loot/lootItems/junk/used_notebook.py new file mode 100644 index 00000000..9a3acb30 --- /dev/null +++ b/scripts/loot/lootItems/junk/used_notebook.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_notebook_generic.iff' diff --git a/scripts/loot/lootItems/junk/weak_droid_battery.py b/scripts/loot/lootItems/junk/weak_droid_battery.py new file mode 100644 index 00000000..5ba36675 --- /dev/null +++ b/scripts/loot/lootItems/junk/weak_droid_battery.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/generic/shared_battery_useable_generic.iff' diff --git a/scripts/loot/lootItems/worklight_generic.py b/scripts/loot/lootItems/junk/worklight_generic.py similarity index 100% rename from scripts/loot/lootItems/worklight_generic.py rename to scripts/loot/lootItems/junk/worklight_generic.py diff --git a/scripts/loot/lootItems/kraytpearl_cracked.py b/scripts/loot/lootItems/kraytpearl_cracked.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_cracked.py +++ b/scripts/loot/lootItems/kraytpearl_cracked.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_fair.py b/scripts/loot/lootItems/kraytpearl_fair.py index 33536979..ef8d2dc0 100644 --- a/scripts/loot/lootItems/kraytpearl_fair.py +++ b/scripts/loot/lootItems/kraytpearl_fair.py @@ -1,8 +1,12 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): return '' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_flawless.py b/scripts/loot/lootItems/kraytpearl_flawless.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_flawless.py +++ b/scripts/loot/lootItems/kraytpearl_flawless.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_good.py b/scripts/loot/lootItems/kraytpearl_good.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_good.py +++ b/scripts/loot/lootItems/kraytpearl_good.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_poor.py b/scripts/loot/lootItems/kraytpearl_poor.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_poor.py +++ b/scripts/loot/lootItems/kraytpearl_poor.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_premium.py b/scripts/loot/lootItems/kraytpearl_premium.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_premium.py +++ b/scripts/loot/lootItems/kraytpearl_premium.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_quality.py b/scripts/loot/lootItems/kraytpearl_quality.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_quality.py +++ b/scripts/loot/lootItems/kraytpearl_quality.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_scratched.py b/scripts/loot/lootItems/kraytpearl_scratched.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_scratched.py +++ b/scripts/loot/lootItems/kraytpearl_scratched.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_select.py b/scripts/loot/lootItems/kraytpearl_select.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_select.py +++ b/scripts/loot/lootItems/kraytpearl_select.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_fair.py b/scripts/loot/lootItems/powercrystal_fair.py new file mode 100644 index 00000000..ef8d2dc0 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_fair.py @@ -0,0 +1,12 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_flawless.py b/scripts/loot/lootItems/powercrystal_flawless.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_flawless.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_good.py b/scripts/loot/lootItems/powercrystal_good.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_good.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_poor.py b/scripts/loot/lootItems/powercrystal_poor.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_poor.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_premium.py b/scripts/loot/lootItems/powercrystal_premium.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_premium.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_quality.py b/scripts/loot/lootItems/powercrystal_quality.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_quality.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_select.py b/scripts/loot/lootItems/powercrystal_select.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_select.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/red_wiring.py b/scripts/loot/lootItems/red_wiring.py deleted file mode 100644 index 483dc8f7..00000000 --- a/scripts/loot/lootItems/red_wiring.py +++ /dev/null @@ -1,20 +0,0 @@ - -def itemTemplate(): - - return 'object/tangible/loot/npc_loot/shared_red_wiring_generic.iff' - -def customItemName(): - - return '' - -def customItemStackCount(): - - return 1 - -def customizationAttributes(): - - return [] - -def customizationValues(): - - return [] diff --git a/scripts/loot/lootItems/shared_rifle_cdef.py b/scripts/loot/lootItems/weapons/shared_rifle_cdef.py similarity index 100% rename from scripts/loot/lootItems/shared_rifle_cdef.py rename to scripts/loot/lootItems/weapons/shared_rifle_cdef.py diff --git a/scripts/loot/lootPools/junk.py b/scripts/loot/lootPools/junk.py index 32ec26c3..ef757825 100644 --- a/scripts/loot/lootPools/junk.py +++ b/scripts/loot/lootPools/junk.py @@ -1,8 +1,15 @@ def itemNames(): - templates=['damaged_datapad','red_wiring','worklight_generic'] + templates=['damaged_datapad','red_wiring','worklight_generic','antenna','brain','eye','gland','heart','stomach','armor_repair_device'] #10 + templates=templates+['brain','chassis_blueprint','comlink','explosive_dud','hyperdrive_unit','id_chip','impulse_detector','laser_trap'] #8 + templates=templates+['launcher_tube','ledger','magseal_detector','medical_console','medical_device','motor','power_output_analyzer','shield_module'] #8 + templates=templates+['software_module','survival_gear','underpowered_survey_pad','unidentified_serum_vial','used_notebook','weak_droid_battery'] #6 return templates def itemChances(): - return [70,50,40] \ No newline at end of file + chances=[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + chances=chances+[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + chances=chances+[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + chances=chances+[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + return chances #32 \ No newline at end of file diff --git a/scripts/object/mobile/krayt_dragon.py b/scripts/object/mobile/krayt_dragon.py index c65d802c..e023f206 100644 --- a/scripts/object/mobile/krayt_dragon.py +++ b/scripts/object/mobile/krayt_dragon.py @@ -7,9 +7,9 @@ def setup(core, object): lootGroupChance_1 = 65 object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) - lootPoolNames_2 = ['kraytpearl_loq'] + lootPoolNames_2 = ['kraytpearl_lowq'] lootPoolChances_2 = [100] - lootGroupChance_2 = 35 + lootGroupChance_2 = 85 object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) return \ No newline at end of file diff --git a/scripts/radial/tunable.py b/scripts/radial/tunable.py new file mode 100644 index 00000000..f226f86b --- /dev/null +++ b/scripts/radial/tunable.py @@ -0,0 +1,15 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 15, 0, 'Destroy')) + radials.add(RadialOptions(0, 19, 0, 'Tune')) + return + +def handleSelection(core, owner, target, option): + if option == 19 and target: + if owner is not None: + owner.sendSystemMessage('You are not attuned enough with the force yet.',1) + return diff --git a/src/resources/objects/loot/LootRollSession.java b/src/resources/objects/loot/LootRollSession.java index 62d12077..cb7c93e4 100644 --- a/src/resources/objects/loot/LootRollSession.java +++ b/src/resources/objects/loot/LootRollSession.java @@ -40,6 +40,7 @@ public class LootRollSession { private GroupObject playerGroup; private List droppedItems; private Planet sessionPlanet; + private List errorMessages; public LootRollSession(){ } @@ -53,6 +54,7 @@ public class LootRollSession { this.SessionID = requester.getCustomName()+"-"+System.currentTimeMillis(); } droppedItems = new ArrayList(); + errorMessages = new ArrayList(); sessionPlanet = requester.getPlanet(); } @@ -79,4 +81,12 @@ public class LootRollSession { public Planet getSessionPlanet() { return sessionPlanet; } + + public List getErrorMessages() { + return errorMessages; + } + + public void addErrorMessage(String errorMessage) { + this.errorMessages.add(errorMessage); + } } diff --git a/src/services/DevService.java b/src/services/DevService.java index ca387de1..dc5b9a29 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -86,6 +86,7 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 110, "Survey Devices"); suiOptions.put((long) 111, "Spawn Tusken"); + suiOptions.put((long) 112, "Spawn Krayt"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -1001,6 +1002,11 @@ public class DevService implements INetworkDispatch { core.lootService.handleLootRequest(player,(TangibleObject)spawned); break; + case 112: + SWGObject spawned2 = core.staticService.spawnObject("object/mobile/shared_krayt_dragon.iff", "tatooine", 0L, 3512F, 4F, -4801F, 0.70F, 0.71F); + + core.lootService.handleLootRequest(player,(TangibleObject)spawned2); + break; } } }); diff --git a/src/services/LootService.java b/src/services/LootService.java index b16a125d..d405e95d 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -21,11 +21,23 @@ ******************************************************************************/ package services; +import java.io.File; +import java.io.IOException; +import java.nio.file.DirectoryStream; +import java.nio.file.DirectoryStream.Filter; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.BasicFileAttributeView; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; import java.util.Vector; + import resources.objects.creature.CreatureObject; import resources.objects.loot.LootGroup; import resources.objects.loot.LootRollSession; @@ -60,7 +72,13 @@ public class LootService implements INetworkDispatch { } public void handleLootRequest(CreatureObject requester, TangibleObject lootedObject) { - + + if (requester.getCustomName().contains("Kun")){ + requester.setCashCredits(requester.getCashCredits()+1); + requester.sendSystemMessage("You looted 1 lousy credit.", (byte)1); + return; + } + LootRollSession lootRollSession = new LootRollSession(requester); String lootedObjectType = "Tangible"; if (lootedObject instanceof CreatureObject) @@ -109,6 +127,14 @@ public class LootService implements INetworkDispatch { // Distribute the loot drops according to group loot rules // For now just spawn items into requester's inventory + + if (lootRollSession.getErrorMessages().size()>0){ + for (String msg : lootRollSession.getErrorMessages()){ + // ToDo: Show this for each group member later! + requester.sendSystemMessage(msg,(byte) 1); + } + } + SWGObject requesterInventory = requester.getSlottedObject("inventory"); for (TangibleObject droppedItem : lootRollSession.getDroppedItems()){ @@ -172,60 +198,92 @@ public class LootService implements INetworkDispatch { } } + private static class DirectoriesFilter implements Filter { + @Override + public boolean accept(Path entry) throws IOException { + return Files.isDirectory(entry); + } + } + private void handleLootPoolItems(String itemName,LootRollSession lootRollSession){ - String path = "scripts/loot/lootItems/"+itemName.toLowerCase(); - System.out.println("path: " + path); - String itemTemplate = (String)core.scriptService.fetchString(path,"itemTemplate"); - String customName = (String)core.scriptService.fetchString(path,"customItemName"); - int stackCount = (Integer)core.scriptService.fetchInteger(path,"customItemStackCount"); - Vector customizationAttributes = (Vector)core.scriptService.fetchStringVector(path,"customizationAttributes"); - Vector customizationValues = (Vector)core.scriptService.fetchIntegerVector(path,"customizationValues"); + List subfolders = new ArrayList(); // Consider all sub-folders + try (DirectoryStream ds = Files.newDirectoryStream(FileSystems.getDefault().getPath("scripts/loot/lootItems/"), new DirectoriesFilter())) { + for (Path p : ds) { + subfolders.add(p.getFileName().toString()); + } + } catch (IOException e) { + lootRollSession.addErrorMessage("File system check caused an error. Please contact Charon about this issue."); + return; + } + + String itemPath = "scripts/loot/lootItems/"+itemName.toLowerCase()+".py"; + File file = new File(itemPath); + if (!file.isFile()){ + for (String subfolderName : subfolders){ + itemPath = "scripts/loot/lootItems/"+ subfolderName +"/"+itemName.toLowerCase()+".py"; + File subfile = new File(itemPath); + if (subfile.isFile()) + break; + } + } + + File checkfile = new File(itemPath); + if (!checkfile.isFile()){ + String errorMessage = "Loot item '" + itemName + "' not found in file system. Please contact Charon about this issue."; + lootRollSession.addErrorMessage(errorMessage); + return; + } + + itemPath = itemPath.substring(0, itemPath.length()-3); // remove the file type + + String customName = ""; + String itemTemplate = ""; + int stackCount = 1; + Vector customizationAttributes = null; + Vector customizationValues = null; + + if(core.scriptService.getMethod(itemPath,"","itemTemplate")==null){ + String errorMessage = "Loot item '" + itemName + "' has no template function assigned in its script. Please contact Charon about this issue."; + lootRollSession.addErrorMessage(errorMessage); + return; + } + + itemTemplate = (String)core.scriptService.fetchString(itemPath,"itemTemplate"); + + // only consider the following variables, if they are in the python-script file + if(core.scriptService.getMethod(itemPath,"","customItemName")!=null) + customName = (String)core.scriptService.fetchString(itemPath,"customItemName"); + + if(core.scriptService.getMethod(itemPath,"","customItemStackCount")!=null) + stackCount = (Integer)core.scriptService.fetchInteger(itemPath,"customItemStackCount"); + + if(core.scriptService.getMethod(itemPath,"","customizationAttributes")!=null) + customizationAttributes = (Vector)core.scriptService.fetchStringVector(itemPath,"customizationAttributes"); + + if(core.scriptService.getMethod(itemPath,"","customizationValues")!=null) + customizationValues = (Vector)core.scriptService.fetchIntegerVector(itemPath,"customizationValues"); System.out.println("itemTemplate " + itemTemplate); - /* - craftingValues = { - {"mindamage",25,35,0}, - {"maxdamage",40,50,0}, - {"attackspeed",1,-1,5}, - {"woundchance",4,8,5}, - {"hitpoints",800,1200,0}, - {"attackhealthcost",0,9,0}, - {"attackactioncost",0,9,0}, - {"attackmindcost",0,9,0}, - {"forcecost",0,9.9,0}, - {"color",31,31,0}, - {"quality",6,6,0}, - }, - */ - - - - - - - - TangibleObject droppedItem = createDroppedItem(itemTemplate,lootRollSession.getSessionPlanet()); - handleCustomDropName(droppedItem); + droppedItem.setAttachment("LootItemName", itemName); + handleCustomDropName(droppedItem,customName); handleStats(droppedItem); setCustomization(droppedItem); + handleSpecialItems(droppedItem); lootRollSession.addDroppedItem(droppedItem); } - - - private void handleCustomDropName(TangibleObject droppedItem) { - String customName = droppedItem.getCustomName(); - - if (customName!=null) { - if (customName.charAt(0) == '@' || customName.contains("_n:")) { - customName = ""; // Look the name up in some tre table - } - } + private void handleCustomDropName(TangibleObject droppedItem,String customName) { +// String customItemName = droppedItem.getCustomName(); +// if (customName.charAt(0) == '@' || customName.contains("_n:")) { +// if (customName!=null) { +// customName = ""; // Look the name up in some tre table +// } +// } droppedItem.setCustomName(customName); } @@ -234,9 +292,7 @@ public class LootService implements INetworkDispatch { System.out.println("droppedItem " + droppedItem); return droppedItem; } - - - + private void setCustomization(TangibleObject droppedItem) { // Example color crystal @@ -253,11 +309,109 @@ public class LootService implements INetworkDispatch { // } } + private void handleSpecialItems(TangibleObject droppedItem) { + if (droppedItem.getTemplate().contains("shared_lightsaber_module_krayt_dragon_pearl")){ + handleKraytPearl(droppedItem); + } + if (droppedItem.getTemplate().contains("shared_lightsaber_module_force_crystal.iff")){ + handlePowerCrystal(droppedItem); + } + } + private void handleStats(TangibleObject droppedItem) { // ToDo: Min,Max for weapons , Dots on weapons etc. // This must be considered for the python scripts as well // So basically every item needs to have loot-related data in their py scripts as well + + + } + + // ************* Special items ************ + private void handleKraytPearl(TangibleObject droppedItem) { + + String itemName = (String)droppedItem.getAttachment("LootItemName"); + String qualityString = ""; + switch (itemName) { + case "kraytpearl_cracked": + droppedItem.setStfFilename("static_item_n"); + droppedItem.setStfName("item_junk_imitation_pearl_01_02"); + droppedItem.setDetailFilename("static_item_d"); + droppedItem.setDetailName("item_junk_imitation_pearl_01_02"); + return; + case "kraytpearl_scratched": + droppedItem.setStfFilename("static_item_n"); + droppedItem.setStfName("item_junk_imitation_pearl_01_01"); + droppedItem.setDetailFilename("static_item_d"); + droppedItem.setDetailName("item_junk_imitation_pearl_01_01"); + return; + case "kraytpearl_poor": + qualityString="Poor"; + break; + case "kraytpearl_fair": + qualityString="Fair"; + break; + case "kraytpearl_good": + qualityString="Good"; + break; + case "kraytpearl_quality": + qualityString="Quality"; + break; + case "kraytpearl_select": + qualityString="Select"; + break; + case "kraytpearl_premium": + qualityString="Premium"; + break; + case "kraytpearl_flawless": + qualityString="Flawless"; + break; + default: + qualityString="Undetermined"; + break; + } + droppedItem.getAttributes().put("@obj_attr_n:condition", "100/100"); + droppedItem.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF "); + droppedItem.getAttributes().put("@obj_attr_n:crystal_quality", qualityString); + droppedItem.setAttachment("radial_filename", "tunable"); } - + private void handlePowerCrystal(TangibleObject droppedItem) { + + String itemName = (String)droppedItem.getAttachment("LootItemName"); + String qualityString = ""; + switch (itemName) { + + case "powercrystal_poor": + qualityString="Poor"; + break; + case "powercrystal_fair": + qualityString="Fair"; + break; + case "powercrystal_good": + qualityString="Good"; + break; + case "powercrystal_quality": + qualityString="Quality"; + break; + case "powercrystal_select": + qualityString="Select"; + break; + case "powercrystal_premium": + qualityString="Premium"; + break; + case "powercrystal_flawless": + qualityString="Flawless"; + break; + case "powercrystal_perfect": + qualityString="Perfect"; + break; + default: + qualityString="Undetermined"; + break; + } + droppedItem.getAttributes().put("@obj_attr_n:condition", "100/100"); + droppedItem.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF "); + droppedItem.getAttributes().put("@obj_attr_n:crystal_quality", qualityString); + droppedItem.setAttachment("radial_filename", "tunable"); + } }