From 83afa86076ef9db6ab506bca1f30ca05ece9dfef Mon Sep 17 00:00:00 2001 From: Richard Laughlin Date: Thu, 7 Mar 2013 07:31:28 -0500 Subject: [PATCH 1/7] Looks good so far. Maybe more tweaking needed. --- src/swganh_core/object/object.cc | 93 ++++++++++++-------------------- 1 file changed, 33 insertions(+), 60 deletions(-) diff --git a/src/swganh_core/object/object.cc b/src/swganh_core/object/object.cc index 6624afe1f..1442b40fd 100644 --- a/src/swganh_core/object/object.cc +++ b/src/swganh_core/object/object.cc @@ -145,10 +145,10 @@ void Object::TransferObject(std::shared_ptr requester, std::shared_ptr unique(uplock); //Perform the transfer - //for(auto& slot : slot_descriptor_) - //{ - // slot.second->remove_object(object); - //} + for(auto& slot : slot_descriptor_) + { + slot.second->remove_object(object); + } arrangement_id = newContainer->__InternalInsert(object, new_position, arrangement_id); } @@ -370,15 +370,13 @@ void Object::__InternalTransfer(std::shared_ptr requester, std::shared_p void Object::__InternalAddAwareObject(std::shared_ptr object, bool reverse_still_valid) { - std::shared_ptr observer; - auto find_itr = aware_objects_.find(object); if(find_itr == aware_objects_.end()) { aware_objects_.insert(object); if(!IsInSnapshot()) { - observer = object->GetController(); + auto observer = object->GetController(); if(observer) { Subscribe(observer); @@ -386,34 +384,21 @@ void Object::__InternalAddAwareObject(std::shared_ptr ob CreateBaselines(observer); } } - } - - find_itr = object->aware_objects_.find(shared_from_this()); - if(find_itr == object->aware_objects_.end()) - { - object->aware_objects_.insert(shared_from_this()); - if(!object->IsInSnapshot()) + + bool old_reverse = reverse_still_valid; + reverse_still_valid = GetPermissions()->canView(shared_from_this(), object); + + for(auto& slot : slot_descriptor_) { - observer = GetController(); - if(observer) - { - object->Subscribe(observer); - object->SendCreateByCrc(observer); - object->CreateBaselines(observer); - } + slot.second->view_objects([&] (const std::shared_ptr& v) { + if(old_reverse) + object->__InternalAddAwareObject(v, false); + + if(reverse_still_valid) + v->__InternalAddAwareObject(object, reverse_still_valid); + }); } } - - for(auto& slot : slot_descriptor_) - { - slot.second->view_objects([&] (const std::shared_ptr& v) { - v->__InternalAddAwareObject(object, reverse_still_valid); - if(reverse_still_valid) - { - object->__InternalAddAwareObject(v, reverse_still_valid); - } - }); - } } void Object::__InternalViewAwareObjects(std::function)> func, std::shared_ptr hint) @@ -423,25 +408,28 @@ void Object::__InternalViewAwareObjects(std::function object, bool reverse_still_valid) { - for(auto& slot : slot_descriptor_) - { - slot.second->view_objects([&] (const std::shared_ptr& v) { - v->__InternalRemoveAwareObject(object, reverse_still_valid); - if(!reverse_still_valid) - { - object->__InternalRemoveAwareObject(v, reverse_still_valid); - } - }); - } - - std::shared_ptr observer; auto find_itr = aware_objects_.find(object); if(find_itr != aware_objects_.end()) { + bool old_reverse = reverse_still_valid; + reverse_still_valid = GetPermissions()->canView(shared_from_this(), object); + + for(auto& slot : slot_descriptor_) + { + slot.second->view_objects([&] (const std::shared_ptr& v) { + if(reverse_still_valid) + v->__InternalRemoveAwareObject(object, reverse_still_valid); + + if(old_reverse) + object->__InternalRemoveAwareObject(v, false); + }); + } + aware_objects_.erase(find_itr); + if(!IsInSnapshot()) { - observer = object->GetController(); + auto observer = object->GetController(); if(observer) { //DLOG(info) << "DELETING " << GetObjectId() << " FOR " << observer->GetId(); @@ -450,21 +438,6 @@ void Object::__InternalRemoveAwareObject(std::shared_ptr } } } - - find_itr = object->aware_objects_.find(shared_from_this()); - if(find_itr != object->aware_objects_.end()) - { - object->aware_objects_.erase(find_itr); - if(!object->IsInSnapshot()) - { - observer = GetController(); - if(observer) - { - object->SendDestroy(observer); - object->Unsubscribe(observer); - } - } - } } bool Object::__HasAwareObject(std::shared_ptr object) From 95aade0bd0d9315b509c481827e492d6b556846d Mon Sep 17 00:00:00 2001 From: Richard Laughlin Date: Thu, 7 Mar 2013 11:48:24 -0500 Subject: [PATCH 2/7] Comments for the new container stuff Added some comments to the new container stuff. Need to add more. --- src/swganh_core/object/object.cc | 99 ++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 43 deletions(-) diff --git a/src/swganh_core/object/object.cc b/src/swganh_core/object/object.cc index 1442b40fd..34f492b30 100644 --- a/src/swganh_core/object/object.cc +++ b/src/swganh_core/object/object.cc @@ -91,6 +91,7 @@ void Object::ClearController() } void Object::AddObject(std::shared_ptr requester, std::shared_ptr obj, int32_t arrangement_id) { + //// CHECK PERMISSIONS //// if(requester == nullptr || container_permissions_->canInsert(shared_from_this(), requester, obj)) { boost::upgrade_lock lock(global_container_lock_); @@ -111,6 +112,7 @@ void Object::AddObject(std::shared_ptr requester, std::shared_ptr requester, std::shared_ptr oldObject) { + //// CHECK PERMISSIONS //// if(requester == nullptr || container_permissions_->canRemove(shared_from_this(), requester, oldObject)) { boost::upgrade_lock lock(global_container_lock_); @@ -123,6 +125,7 @@ void Object::RemoveObject(std::shared_ptr requester, std::shared_ptr unique_lock(lock); + //Remove Object from Datastructure for(auto& slot : slot_descriptor_) { @@ -135,6 +138,7 @@ void Object::RemoveObject(std::shared_ptr requester, std::shared_ptr requester, std::shared_ptr object, std::shared_ptr newContainer, glm::vec3 new_position, int32_t arrangement_id) { + //// CHECK PERMISSIONS //// if( requester == nullptr || ( this->GetPermissions()->canRemove(shared_from_this(), requester, object) && newContainer->GetPermissions()->canInsert(newContainer, requester, object))) @@ -196,12 +200,14 @@ void Object::TransferObject(std::shared_ptr requester, std::shared_ptr requester, uint32_t max_depth, bool topDown, std::function)> func) { + //// CHECK PERMISSIONS //// if(requester == nullptr || container_permissions_->canView(shared_from_this(), requester)) { uint32_t requester_instance = 0; if(requester) requester_instance = requester->GetInstanceId(); + //// ITERATE THROUGH ALL SLOTS //// for(auto& slot : slot_descriptor_) { slot.second->view_objects([&] (const std::shared_ptr& object) { @@ -224,12 +230,14 @@ void Object::__InternalViewObjects(std::shared_ptr requester, uint32_t m void Object::__InternalGetObjects(std::shared_ptr requester, uint32_t max_depth, bool topDown, std::list>& out) { + //// CHECK PERMISSIONS //// if(requester == nullptr || container_permissions_->canView(shared_from_this(), requester)) { uint32_t requester_instance = 0; if(requester) requester_instance = requester->GetInstanceId(); + //// ITERATE THROUGH ALL OBJECT SLOTS //// for(auto& slot : slot_descriptor_) { slot.second->view_objects([&] (const std::shared_ptr& object) { @@ -315,65 +323,65 @@ void Object::SwapSlots(std::shared_ptr requester, std::shared_ptr requester, std::shared_ptr object, std::shared_ptr newContainer, int32_t arrangement_id) { - try { - // we are already locked - if( requester == nullptr || ( - this->GetPermissions()->canRemove(shared_from_this(), requester, object) && - newContainer->GetPermissions()->canInsert(newContainer, requester, object))) - { - arrangement_id = newContainer->__InternalInsert(object, object->GetPosition(), arrangement_id); - - //Split into 3 groups -- only ours, only new, and both ours and new - std::set> oldObservers, newObservers, bothObservers; + // we are already locked + if( requester == nullptr || ( + this->GetPermissions()->canRemove(shared_from_this(), requester, object) && + newContainer->GetPermissions()->canInsert(newContainer, requester, object))) + { + arrangement_id = newContainer->__InternalInsert(object, object->GetPosition(), arrangement_id); - object->__InternalViewAwareObjects([&] (std::shared_ptr observer) { - oldObservers.insert(observer); - }); + //Split into 3 groups -- only ours, only new, and both ours and new + std::set> oldObservers, newObservers, bothObservers; - newContainer->__InternalViewAwareObjects([&] (std::shared_ptr observer) + object->__InternalViewAwareObjects([&] (std::shared_ptr observer) { + oldObservers.insert(observer); + }); + + newContainer->__InternalViewAwareObjects([&] (std::shared_ptr observer) + { + if(newContainer->GetPermissions()->canView(newContainer, observer)) { - if(newContainer->GetPermissions()->canView(newContainer, observer)) + auto itr = oldObservers.find(observer); + if(itr != oldObservers.end()) + { + oldObservers.erase(itr); + bothObservers.insert(observer); + } + else { - auto itr = oldObservers.find(observer); - if(itr != oldObservers.end()) - { - oldObservers.erase(itr); - bothObservers.insert(observer); - } - else - { - newObservers.insert(observer); - } + newObservers.insert(observer); } - }, requester); - - //Send Creates to only new - for(auto& observer : newObservers) { - object->__InternalAddAwareObject(observer, true); - } - - //Send updates to both - for(auto& observer : bothObservers) { - object->SendUpdateContainmentMessage(observer->GetController()); - } - - //Send destroys to only ours - for(auto& observer : oldObservers) { - object->__InternalRemoveAwareObject(observer, true); } + }, requester); + + //Send Creates to only new + for(auto& observer : newObservers) { + object->__InternalAddAwareObject(observer, true); + } + + //Send updates to both + for(auto& observer : bothObservers) { + object->SendUpdateContainmentMessage(observer->GetController()); + } + + //Send destroys to only ours + for(auto& observer : oldObservers) { + object->__InternalRemoveAwareObject(observer, true); } - } catch(const std::exception& e){ - LOG(error) << "Could not transfer object " << object->GetObjectId() << " to container :" << GetObjectId() << " with error " << e.what(); } } void Object::__InternalAddAwareObject(std::shared_ptr object, bool reverse_still_valid) { + // If we're not already aware of the given object auto find_itr = aware_objects_.find(object); if(find_itr == aware_objects_.end()) { + // Make ourselves a aware of the object aware_objects_.insert(object); + + // If we're an object with an observer, send the packets if(!IsInSnapshot()) { auto observer = object->GetController(); @@ -385,15 +393,20 @@ void Object::__InternalAddAwareObject(std::shared_ptr ob } } + // Preserve the old reverse value, and generate the one for this level. bool old_reverse = reverse_still_valid; reverse_still_valid = GetPermissions()->canView(shared_from_this(), object); + // Iterate through the slots, and handle all the sub-objects for(auto& slot : slot_descriptor_) { slot.second->view_objects([&] (const std::shared_ptr& v) { + + //If our parent didn't block view, object can see v as well. if(old_reverse) object->__InternalAddAwareObject(v, false); + // If we didn't invalidate viewability, keep going. if(reverse_still_valid) v->__InternalAddAwareObject(object, reverse_still_valid); }); @@ -1187,4 +1200,4 @@ void Object::BuildCollisionBox() void Object::UpdateAABB() { boost::geometry::envelope(world_collision_box_, aabb_); -} \ No newline at end of file +} From db4a4ff6a861a950d4ae2e12c11cb9cca53fd526 Mon Sep 17 00:00:00 2001 From: Richard Laughlin Date: Fri, 8 Mar 2013 14:51:01 -0500 Subject: [PATCH 3/7] Fixed some scripts I managed to break. --- data/scripts/commands/transferItem.py | 1 + data/scripts/commands/transferItemArmor.py | 1 + data/scripts/commands/transferItemMisc.py | 1 + data/scripts/commands/transferItemWeapon.py | 1 + 4 files changed, 4 insertions(+) diff --git a/data/scripts/commands/transferItem.py b/data/scripts/commands/transferItem.py index 5c0f359f4..8eaa9d0b5 100644 --- a/data/scripts/commands/transferItem.py +++ b/data/scripts/commands/transferItem.py @@ -1,6 +1,7 @@ import re import swgpy from swgpy.command import BaseSwgCommand +from swgpy.utility import * class TransferItem(BaseSwgCommand): def run(self): diff --git a/data/scripts/commands/transferItemArmor.py b/data/scripts/commands/transferItemArmor.py index bfc0d7f32..b8d568351 100644 --- a/data/scripts/commands/transferItemArmor.py +++ b/data/scripts/commands/transferItemArmor.py @@ -1,6 +1,7 @@ import re import swgpy from swgpy.command import BaseSwgCommand +from swgpy.utility import * class TransferItemArmor(BaseSwgCommand): def run(self): diff --git a/data/scripts/commands/transferItemMisc.py b/data/scripts/commands/transferItemMisc.py index da7f29670..716de2b00 100644 --- a/data/scripts/commands/transferItemMisc.py +++ b/data/scripts/commands/transferItemMisc.py @@ -1,6 +1,7 @@ import re import swgpy from swgpy.command import BaseSwgCommand +from swgpy.utility import * class TransferItem(BaseSwgCommand): def run(self): diff --git a/data/scripts/commands/transferItemWeapon.py b/data/scripts/commands/transferItemWeapon.py index f6c17e275..2c5f4b776 100644 --- a/data/scripts/commands/transferItemWeapon.py +++ b/data/scripts/commands/transferItemWeapon.py @@ -1,6 +1,7 @@ import re import swgpy from swgpy.command import BaseSwgCommand +from swgpy.utility import * class TransferItemWeapon(BaseSwgCommand): def run(self): From 59c32cf64ab27829ff350bc9f45496d2835177d2 Mon Sep 17 00:00:00 2001 From: rcythr Date: Mon, 18 Mar 2013 16:20:30 -0600 Subject: [PATCH 4/7] Now sending less UpdateContainment messages. --- src/swganh_core/object/object.cc | 22 +++++++++++++--------- src/swganh_core/object/object.h | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/swganh_core/object/object.cc b/src/swganh_core/object/object.cc index 34f492b30..a29a93a7c 100644 --- a/src/swganh_core/object/object.cc +++ b/src/swganh_core/object/object.cc @@ -840,25 +840,29 @@ void Object::SendCreateByCrc(std::shared_ptrNotify(&scene_object); - SendUpdateContainmentMessage(observer); + SendUpdateContainmentMessage(observer, false); } -void Object::SendUpdateContainmentMessage(std::shared_ptr observer) +void Object::SendUpdateContainmentMessage(std::shared_ptr observer, bool send_on_no_parent) { if(observer == nullptr) return; uint64_t container_id = 0; if (GetContainer()) + { container_id = GetContainer()->GetObjectId(); + } - //DLOG(info) << "CONTAINMENT " << GetObjectId() << " INTO " << container_id << " ARRANGEMENT " << arrangement_id_; - - UpdateContainmentMessage containment_message; - containment_message.container_id = container_id; - containment_message.object_id = GetObjectId(); - containment_message.containment_type = arrangement_id_; - observer->Notify(&containment_message); + if(send_on_no_parent || container_id != 0) + { + //DLOG(info) << "CONTAINMENT " << GetObjectId() << " INTO " << container_id << " ARRANGEMENT " << arrangement_id_; + UpdateContainmentMessage containment_message; + containment_message.container_id = container_id; + containment_message.object_id = GetObjectId(); + containment_message.containment_type = arrangement_id_; + observer->Notify(&containment_message); + } } void Object::SendDestroy(std::shared_ptr observer) diff --git a/src/swganh_core/object/object.h b/src/swganh_core/object/object.h index 5e1d35117..c464db757 100644 --- a/src/swganh_core/object/object.h +++ b/src/swganh_core/object/object.h @@ -482,7 +482,7 @@ class Object : /** * @brief sends the update containment message for the given observer of this object */ - virtual void SendUpdateContainmentMessage(std::shared_ptr observer); + virtual void SendUpdateContainmentMessage(std::shared_ptr observer, bool send_on_no_parent=true); /** * @brief sends the destroy message for the given observer of this object */ From 3993e57e8864da04c74e163f01335fa5df0f2ae0 Mon Sep 17 00:00:00 2001 From: rcythr Date: Mon, 18 Mar 2013 18:51:46 -0600 Subject: [PATCH 5/7] Temporary fix for the Baselines caching problem. Before this point we would amass an arbitrarily large "cache" of baselines and send them. --- .../building/building_message_builder.cc | 11 +++-------- .../object/cell/cell_message_builder.cc | 11 +++-------- .../creature/creature_message_builder.cc | 12 ++++-------- .../factory_crate_message_builder.cc | 9 ++------- .../object/group/group_message_builder.cc | 9 ++------- .../object/guild/guild_message_builder.cc | 4 ++-- .../harvester_installation_message_builder.cc | 11 +++-------- .../installation_message_builder.cc | 6 +++--- .../intangible/intangible_message_builder.cc | 4 ++-- .../manufacture_schematic_message_builder.cc | 11 +++-------- .../object/mission/mission_message_builder.cc | 9 ++------- src/swganh_core/object/object.cc | 19 ------------------- src/swganh_core/object/object.h | 14 -------------- .../object/player/player_message_builder.cc | 14 ++++---------- .../resource_container_message_builder.cc | 9 ++------- .../object/static/static_message_builder.cc | 4 ++-- .../tangible/tangible_message_builder.cc | 11 +++-------- .../waypoint/waypoint_message_builder.cc | 4 ++-- .../object/weapon/weapon_message_builder.cc | 9 ++------- 19 files changed, 44 insertions(+), 137 deletions(-) diff --git a/src/swganh_core/object/building/building_message_builder.cc b/src/swganh_core/object/building/building_message_builder.cc index fc3a98cd1..695bed1dd 100644 --- a/src/swganh_core/object/building/building_message_builder.cc +++ b/src/swganh_core/object/building/building_message_builder.cc @@ -21,14 +21,9 @@ void BuildingMessageBuilder::RegisterEventHandlers() void BuildingMessageBuilder::SendBaselines(const shared_ptr& tangible, const shared_ptr& observer) { - tangible->AddBaselineToCache(&BuildBaseline3(tangible)); - tangible->AddBaselineToCache(&BuildBaseline6(tangible)); - - for (auto& baseline : tangible->GetBaselines()) - { - observer->Notify(&baseline); - } - + observer->Notify(&BuildBaseline3(tangible)); + observer->Notify(&BuildBaseline6(tangible)); + SendEndBaselines(tangible, observer); } diff --git a/src/swganh_core/object/cell/cell_message_builder.cc b/src/swganh_core/object/cell/cell_message_builder.cc index 47d7ec0e0..618f73636 100644 --- a/src/swganh_core/object/cell/cell_message_builder.cc +++ b/src/swganh_core/object/cell/cell_message_builder.cc @@ -22,14 +22,9 @@ void CellMessageBuilder::RegisterEventHandlers() void CellMessageBuilder::SendBaselines(const std::shared_ptr& cell, const std::shared_ptr& observer) { - cell->AddBaselineToCache(&BuildBaseline3(cell)); - cell->AddBaselineToCache(&BuildBaseline6(cell)); - - for (auto& baseline : cell->GetBaselines()) - { - observer->Notify(&baseline); - } - + observer->Notify(&BuildBaseline3(cell)); + observer->Notify(&BuildBaseline6(cell)); + SendEndBaselines(cell, observer); } diff --git a/src/swganh_core/object/creature/creature_message_builder.cc b/src/swganh_core/object/creature/creature_message_builder.cc index 638ede58b..79eaedadb 100644 --- a/src/swganh_core/object/creature/creature_message_builder.cc +++ b/src/swganh_core/object/creature/creature_message_builder.cc @@ -219,14 +219,10 @@ void CreatureMessageBuilder::RegisterEventHandlers() } void CreatureMessageBuilder::SendBaselines(const shared_ptr& creature, const shared_ptr& observer) { - creature->AddBaselineToCache(&BuildBaseline1(creature)); - creature->AddBaselineToCache(&BuildBaseline3(creature)); - creature->AddBaselineToCache(&BuildBaseline4(creature)); - creature->AddBaselineToCache(&BuildBaseline6(creature)); - for (auto& baseline : creature->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline1(creature)); + observer->Notify(&BuildBaseline3(creature)); + observer->Notify(&BuildBaseline4(creature)); + observer->Notify(&BuildBaseline6(creature)); SendEndBaselines(creature, observer); diff --git a/src/swganh_core/object/factory_crate/factory_crate_message_builder.cc b/src/swganh_core/object/factory_crate/factory_crate_message_builder.cc index 0d3142b33..b69f98749 100644 --- a/src/swganh_core/object/factory_crate/factory_crate_message_builder.cc +++ b/src/swganh_core/object/factory_crate/factory_crate_message_builder.cc @@ -21,13 +21,8 @@ void FactoryCrateMessageBuilder::RegisterEventHandlers() void FactoryCrateMessageBuilder::SendBaselines(const shared_ptr& factory_crate, const shared_ptr& observer) { - factory_crate->AddBaselineToCache(&BuildBaseline3(factory_crate)); - factory_crate->AddBaselineToCache(&BuildBaseline6(factory_crate)); - - for (auto& baseline : factory_crate->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(factory_crate)); + observer->Notify(&BuildBaseline6(factory_crate)); SendEndBaselines(factory_crate, observer); } diff --git a/src/swganh_core/object/group/group_message_builder.cc b/src/swganh_core/object/group/group_message_builder.cc index 3784b0258..22e028f27 100644 --- a/src/swganh_core/object/group/group_message_builder.cc +++ b/src/swganh_core/object/group/group_message_builder.cc @@ -63,13 +63,8 @@ void GroupMessageBuilder::BuildLootMasterDelta(const shared_ptr& group) void GroupMessageBuilder::SendBaselines(const std::shared_ptr& group, const std::shared_ptr& observer) { - group->AddBaselineToCache(&BuildBaseline3(group)); - group->AddBaselineToCache(&BuildBaseline6(group)); - - for (auto& baseline : group->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(group)); + observer->Notify(&BuildBaseline6(group)); SendEndBaselines(group, observer); } diff --git a/src/swganh_core/object/guild/guild_message_builder.cc b/src/swganh_core/object/guild/guild_message_builder.cc index c0dc13a84..50ca0b28a 100644 --- a/src/swganh_core/object/guild/guild_message_builder.cc +++ b/src/swganh_core/object/guild/guild_message_builder.cc @@ -30,8 +30,8 @@ void GuildMessageBuilder::BuildGuildTagsDelta(const shared_ptr& guild) void GuildMessageBuilder::SendBaselines(const std::shared_ptr& guild, const std::shared_ptr& observer) { - guild->AddBaselineToCache(&BuildBaseline3(guild)); - guild->AddBaselineToCache(&BuildBaseline6(guild)); + observer->Notify(&BuildBaseline3(guild)); + observer->Notify(&BuildBaseline6(guild)); for (auto& baseline : guild->GetBaselines()) { diff --git a/src/swganh_core/object/harvester_installation/harvester_installation_message_builder.cc b/src/swganh_core/object/harvester_installation/harvester_installation_message_builder.cc index 820476919..6e66f1838 100644 --- a/src/swganh_core/object/harvester_installation/harvester_installation_message_builder.cc +++ b/src/swganh_core/object/harvester_installation/harvester_installation_message_builder.cc @@ -21,14 +21,9 @@ void HarvesterInstallationMessageBuilder::RegisterEventHandlers() void HarvesterInstallationMessageBuilder::SendBaselines(const shared_ptr& harvester_installation, const shared_ptr& observer) { - harvester_installation->AddBaselineToCache(&BuildBaseline3(harvester_installation)); - harvester_installation->AddBaselineToCache(&BuildBaseline6(harvester_installation)); - harvester_installation->AddBaselineToCache(&BuildBaseline7(harvester_installation)); - - for (auto& baseline : harvester_installation->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(harvester_installation)); + observer->Notify(&BuildBaseline6(harvester_installation)); + observer->Notify(&BuildBaseline7(harvester_installation)); SendEndBaselines(harvester_installation, observer); } diff --git a/src/swganh_core/object/installation/installation_message_builder.cc b/src/swganh_core/object/installation/installation_message_builder.cc index b77aae8c2..a9e2a6188 100644 --- a/src/swganh_core/object/installation/installation_message_builder.cc +++ b/src/swganh_core/object/installation/installation_message_builder.cc @@ -86,9 +86,9 @@ void InstallationMessageBuilder::RegisterEventHandlers() void InstallationMessageBuilder::SendBaselines(const std::shared_ptr& installation, const std::shared_ptr& observer) { - installation->AddBaselineToCache(&BuildBaseline3(installation)); - installation->AddBaselineToCache(&BuildBaseline6(installation)); - installation->AddBaselineToCache(&BuildBaseline7(installation)); + observer->Notify(&BuildBaseline3(installation)); + observer->Notify(&BuildBaseline6(installation)); + observer->Notify(&BuildBaseline7(installation)); for (auto& baseline : installation->GetBaselines()) { diff --git a/src/swganh_core/object/intangible/intangible_message_builder.cc b/src/swganh_core/object/intangible/intangible_message_builder.cc index d1e7d9923..9de09d0d2 100644 --- a/src/swganh_core/object/intangible/intangible_message_builder.cc +++ b/src/swganh_core/object/intangible/intangible_message_builder.cc @@ -19,8 +19,8 @@ void IntangibleMessageBuilder::RegisterEventHandlers() void IntangibleMessageBuilder::SendBaselines(const std::shared_ptr& intangible, const std::shared_ptr& observer) { - intangible->AddBaselineToCache(&BuildBaseline3(intangible)); - intangible->AddBaselineToCache(&BuildBaseline6(intangible)); + observer->Notify(&BuildBaseline3(intangible)); + observer->Notify(&BuildBaseline6(intangible)); for (auto& baseline : intangible->GetBaselines()) { diff --git a/src/swganh_core/object/manufacture_schematic/manufacture_schematic_message_builder.cc b/src/swganh_core/object/manufacture_schematic/manufacture_schematic_message_builder.cc index bb78baed3..db4891555 100644 --- a/src/swganh_core/object/manufacture_schematic/manufacture_schematic_message_builder.cc +++ b/src/swganh_core/object/manufacture_schematic/manufacture_schematic_message_builder.cc @@ -95,14 +95,9 @@ void ManufactureSchematicMessageBuilder::SendBaselines( const std::shared_ptr& manufacture_schematic, const std::shared_ptr& observer) { - manufacture_schematic->AddBaselineToCache(&BuildBaseline3(manufacture_schematic)); - manufacture_schematic->AddBaselineToCache(&BuildBaseline6(manufacture_schematic)); - manufacture_schematic->AddBaselineToCache(&BuildBaseline7(manufacture_schematic)); - - for (auto& baseline : manufacture_schematic->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(manufacture_schematic)); + observer->Notify(&BuildBaseline6(manufacture_schematic)); + observer->Notify(&BuildBaseline7(manufacture_schematic)); SendEndBaselines(manufacture_schematic, observer); } diff --git a/src/swganh_core/object/mission/mission_message_builder.cc b/src/swganh_core/object/mission/mission_message_builder.cc index 2a0b2054d..87a8749d3 100644 --- a/src/swganh_core/object/mission/mission_message_builder.cc +++ b/src/swganh_core/object/mission/mission_message_builder.cc @@ -236,13 +236,8 @@ void MissionMessageBuilder::BuildMissionWaypointDelta(const std::shared_ptr& mission, const std::shared_ptr& observer) { - mission->AddBaselineToCache(&BuildBaseline3(mission)); - mission->AddBaselineToCache(&BuildBaseline6(mission)); - - for (auto& baseline : mission->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(mission)); + observer->Notify(&BuildBaseline6(mission)); SendEndBaselines(mission, observer); } diff --git a/src/swganh_core/object/object.cc b/src/swganh_core/object/object.cc index a29a93a7c..8d25fcab3 100644 --- a/src/swganh_core/object/object.cc +++ b/src/swganh_core/object/object.cc @@ -568,21 +568,11 @@ void Object::NotifyObservers(swganh::messages::BaseSwgMessage* message) }); } -bool Object::IsDirty() -{ - boost::lock_guard lock(object_mutex_); - return !deltas_.empty(); -} void Object::ClearBaselines() { boost::lock_guard lock(object_mutex_); baselines_.clear(); } -void Object::ClearDeltas() -{ - boost::lock_guard lock(object_mutex_); - deltas_.clear(); -} BaselinesCacheContainer Object::GetBaselines() { @@ -590,18 +580,9 @@ BaselinesCacheContainer Object::GetBaselines() return baselines_; } -DeltasCacheContainer Object::GetDeltas(uint64_t viewer_id) -{ - boost::lock_guard lock(object_mutex_); - return deltas_; -} - void Object::AddDeltasUpdate(DeltasMessage* message) { NotifyObservers(message); - - boost::lock_guard lock(object_mutex_); - deltas_.push_back(*message); } void Object::AddBaselineToCache(swganh::messages::BaselinesMessage* baseline) { diff --git a/src/swganh_core/object/object.h b/src/swganh_core/object/object.h index c464db757..9003ed9d7 100644 --- a/src/swganh_core/object/object.h +++ b/src/swganh_core/object/object.h @@ -48,10 +48,6 @@ typedef std::vector< swganh::messages::BaselinesMessage > BaselinesCacheContainer; -typedef std::vector< - swganh::messages::DeltasMessage -> DeltasCacheContainer; - typedef std::map< swganh::HashString, boost::variant @@ -233,15 +229,6 @@ class Object : */ BaselinesCacheContainer GetBaselines() ; - /** - * Returns the deltas messages generated since the last time the - * object was made clean. - * - * @param viewer_id The id of the object viewing this Object instance. - * @return The most recently generated deltas. - */ - DeltasCacheContainer GetDeltas(uint64_t viewer_id) ; - /** * Return the client iff template file that describes this Object. * @@ -707,7 +694,6 @@ class Object : AwareObjectContainer aware_objects_; BaselinesCacheContainer baselines_; - DeltasCacheContainer deltas_; std::shared_ptr container_; diff --git a/src/swganh_core/object/player/player_message_builder.cc b/src/swganh_core/object/player/player_message_builder.cc index 90ba3f7ba..d3ac69206 100644 --- a/src/swganh_core/object/player/player_message_builder.cc +++ b/src/swganh_core/object/player/player_message_builder.cc @@ -175,16 +175,10 @@ void PlayerMessageBuilder::RegisterEventHandlers() void PlayerMessageBuilder::SendBaselines(const shared_ptr& player, const shared_ptr& observer) { - player->AddBaselineToCache(&BuildBaseline3(player)); - player->AddBaselineToCache(&BuildBaseline6(player)); - player->AddBaselineToCache(&BuildBaseline8(player)); - player->AddBaselineToCache(&BuildBaseline9(player)); - - - for (auto& baseline : player->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(player)); + observer->Notify(&BuildBaseline6(player)); + observer->Notify(&BuildBaseline8(player)); + observer->Notify(&BuildBaseline9(player)); SendEndBaselines(player, observer); } diff --git a/src/swganh_core/object/resource_container/resource_container_message_builder.cc b/src/swganh_core/object/resource_container/resource_container_message_builder.cc index 3b12a0325..76501e67d 100644 --- a/src/swganh_core/object/resource_container/resource_container_message_builder.cc +++ b/src/swganh_core/object/resource_container/resource_container_message_builder.cc @@ -103,13 +103,8 @@ void ResourceContainerMessageBuilder::BuildVariationNameDelta(const std::shared_ void ResourceContainerMessageBuilder::SendBaselines(const std::shared_ptr& resource_container, const std::shared_ptr& observer) { - resource_container->AddBaselineToCache(&BuildBaseline3(resource_container)); - resource_container->AddBaselineToCache(&BuildBaseline6(resource_container)); - - for (auto& baseline : resource_container->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(resource_container)); + observer->Notify(&BuildBaseline6(resource_container)); SendEndBaselines(resource_container, observer); } diff --git a/src/swganh_core/object/static/static_message_builder.cc b/src/swganh_core/object/static/static_message_builder.cc index 8d6f7fb74..87e5af8ae 100644 --- a/src/swganh_core/object/static/static_message_builder.cc +++ b/src/swganh_core/object/static/static_message_builder.cc @@ -15,8 +15,8 @@ void StaticMessageBuilder::RegisterEventHandlers() void StaticMessageBuilder::SendBaselines(const std::shared_ptr& static_object, const std::shared_ptr& observer) { - static_object->AddBaselineToCache(&BuildBaseline3(static_object)); - static_object->AddBaselineToCache(&BuildBaseline6(static_object)); + observer->Notify(&BuildBaseline3(static_object)); + observer->Notify(&BuildBaseline6(static_object)); for (auto& baseline : static_object->GetBaselines()) { diff --git a/src/swganh_core/object/tangible/tangible_message_builder.cc b/src/swganh_core/object/tangible/tangible_message_builder.cc index 946dd0ce4..8fafa30f6 100644 --- a/src/swganh_core/object/tangible/tangible_message_builder.cc +++ b/src/swganh_core/object/tangible/tangible_message_builder.cc @@ -73,14 +73,9 @@ void TangibleMessageBuilder::RegisterEventHandlers() } void TangibleMessageBuilder::SendBaselines(const shared_ptr& tangible, const shared_ptr& observer) { - tangible->AddBaselineToCache(&BuildBaseline3(tangible)); - tangible->AddBaselineToCache(&BuildBaseline6(tangible)); - tangible->AddBaselineToCache(&BuildBaseline7(tangible)); - - for (auto& baseline : tangible->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(tangible)); + observer->Notify(&BuildBaseline6(tangible)); + observer->Notify(&BuildBaseline7(tangible)); SendEndBaselines(tangible, observer); } diff --git a/src/swganh_core/object/waypoint/waypoint_message_builder.cc b/src/swganh_core/object/waypoint/waypoint_message_builder.cc index c30185880..88bdc66ea 100644 --- a/src/swganh_core/object/waypoint/waypoint_message_builder.cc +++ b/src/swganh_core/object/waypoint/waypoint_message_builder.cc @@ -91,8 +91,8 @@ void WaypointMessageBuilder::BuildColorDelta(const shared_ptr& object) void WaypointMessageBuilder::SendBaselines(const std::shared_ptr& waypoint, const std::shared_ptr& observer) { - waypoint->AddBaselineToCache(&BuildBaseline3(waypoint)); - waypoint->AddBaselineToCache(&BuildBaseline6(waypoint)); + observer->Notify(&BuildBaseline3(waypoint)); + observer->Notify(&BuildBaseline6(waypoint)); for (auto& baseline : waypoint->GetBaselines()) { diff --git a/src/swganh_core/object/weapon/weapon_message_builder.cc b/src/swganh_core/object/weapon/weapon_message_builder.cc index 3c7eda61b..755a3534f 100644 --- a/src/swganh_core/object/weapon/weapon_message_builder.cc +++ b/src/swganh_core/object/weapon/weapon_message_builder.cc @@ -21,13 +21,8 @@ void WeaponMessageBuilder::RegisterEventHandlers() void WeaponMessageBuilder::SendBaselines(const shared_ptr& weapon, const shared_ptr& observer) { - weapon->AddBaselineToCache(&BuildBaseline3(weapon)); - weapon->AddBaselineToCache(&BuildBaseline6(weapon)); - - for (auto& baseline : weapon->GetBaselines()) - { - observer->Notify(&baseline); - } + observer->Notify(&BuildBaseline3(weapon)); + observer->Notify(&BuildBaseline6(weapon)); SendEndBaselines(weapon, observer); } From bdf8455e34a0373b5991e800c6bba7c58d442995 Mon Sep 17 00:00:00 2001 From: rcythr Date: Mon, 18 Mar 2013 19:59:48 -0600 Subject: [PATCH 6/7] Fixed a bug in the creation script causing problems with duplicate items, etc. --- data/scripts/character_create/base_stats.py | 120 +++---- .../create_starting_character.py | 1 + data/scripts/character_create/items.py | 0 data/scripts/character_create/professions.py | 16 +- .../character_create/skills_professions.py | 1 - .../character_create/skills_species.py | 163 +++++---- .../character_create/starting_items.py | 322 ++++++++++-------- 7 files changed, 337 insertions(+), 286 deletions(-) delete mode 100644 data/scripts/character_create/items.py delete mode 100644 data/scripts/character_create/skills_professions.py diff --git a/data/scripts/character_create/base_stats.py b/data/scripts/character_create/base_stats.py index 79bdfb53a..68d25ad2f 100644 --- a/data/scripts/character_create/base_stats.py +++ b/data/scripts/character_create/base_stats.py @@ -6,64 +6,64 @@ def __init__(self, health, action, mind): self.mind = mind StartStats = { -'bothan:combat_brawler' : StartingStats((1000,500,400),(1100,650,450 ),(600 ,400,300 )), -'bothan:combat_marksman' : StartingStats((1000,450,300),(1100,750,400 ),(700 ,400,400 )), -'bothan:crafting_artisan' : StartingStats((600 ,300,300),(1100,700,400 ),(1000,500,500 )), -'bothan:outdoors_scout' : StartingStats((800 ,300,350),(1100,700,500 ),(800 ,450,400 )), -'bothan:science_medic' : StartingStats((600 ,300,300),(1000,600,400 ),(1100,600,500 )), -'bothan:social_entertainer' : StartingStats((500 ,300,300),(1300,700,500 ),(900 ,500,400 )), -'human:combat_brawler' : StartingStats((1100,600,500),(900 ,450,450 ),(600 ,400,400 )), -'human:combat_marksman' : StartingStats((1100,550,400),(900 ,550,400 ),(700 ,400,400 )), -'human:crafting_artisan' : StartingStats((700 ,400,400),(900 ,500,400 ),(1000,500,600 )), -'human:outdoors_scout' : StartingStats((900 ,400,450),(900 ,500,500 ),(800 ,450,500 )), -'human:science_medic' : StartingStats((700 ,400,400),(800 ,400,400 ),(1100,600,600 )), -'human:social_entertainer' : StartingStats((600 ,400,400),(1100,500,500 ),(900 ,500,500 )), -'ithorian:combat_brawler' : StartingStats((1000,500,400),(800 ,350,500 ),(800 ,600,450 )), -'ithorian:combat_marksman' : StartingStats((1000,450,300),(800 ,450,450 ),(900 ,600,450 )), -'ithorian:crafting_artisan' : StartingStats((600 ,300,300),(800 ,400,450 ),(1200,700,650 )), -'ithorian:outdoors_scout' : StartingStats((800 ,300,350),(800 ,400,550 ),(1000,650,550 )), -'ithorian:science_medic' : StartingStats((600 ,300,300),(700 ,300,450 ),(1300,800,550 )), -'ithorian:social_entertainer' : StartingStats((500 ,300,300),(1000,400,550 ),(1100,700,550 )), -'moncal:combat_brawler' : StartingStats((1000,500,400),(800 ,350,500 ),(800 ,600,450 )), -'moncal:combat_marksman' : StartingStats((1000,450,300),(800 ,450,450 ),(900 ,600,450 )), -'moncal:crafting_artisan' : StartingStats((600 ,300,300),(800 ,400,450 ),(1200,700,650 )), -'moncal:outdoors_scout' : StartingStats((800 ,300,350),(800 ,400,550 ),(1000,650,550 )), -'moncal:science_medic' : StartingStats((600 ,300,300),(700 ,300,450 ),(1300,800,650 )), -'moncal:social_entertainer' : StartingStats((500 ,300,300),(1000,400,550 ),(1100,700,550 )), -'rodian:combat_brawler' : StartingStats((1000,500,400),(1000,550,800 ),(500 ,300,350 )), -'rodian:combat_marksman' : StartingStats((1000,450,300),(1000,650,750 ),(600 ,300,350 )), -'rodian:crafting_artisan' : StartingStats((600 ,300,300),(1000,600,750 ),(900 ,400,550 )), -'rodian:outdoors_scout' : StartingStats((800 ,300,350),(1000,600,850 ),(700 ,350,450 )), -'rodian:science_medic' : StartingStats((600 ,300,300),(900 ,500,750 ),(1000,500,550 )), -'rodian:social_entertainer' : StartingStats((500 ,300,300),(1200,600,850 ),(800 ,400,450 )), -'sullustan:combat_brawler' : StartingStats((1200,500,400),(1100,350,350 ),(500 ,300,700 )), -'sullustan:combat_marksman' : StartingStats((1200,450,300),(1100,450,300 ),(600 ,300,700 )), -'sullustan:crafting_artisan' : StartingStats((800 ,300,300),(1100,400,300 ),(900 ,400,900 )), -'sullustan:outdoors_scout' : StartingStats((1000,300,350),(1100,400,400 ),(700 ,350,800 )), -'sullustan:science_medic' : StartingStats((800 ,300,300),(1000,300,300 ),(1000,500,800 )), -'sullustan:social_entertainer' : StartingStats((700 ,300,300),(1300,400,400 ),(800 ,400,800 )), -'trandoshan:combat_brawler' : StartingStats((1250,800,800),(800 ,350,350 ),(500 ,300,400 )), -'trandoshan:combat_marksman' : StartingStats((1250,750,700),(800 ,450,300 ),(600 ,300,400 )), -'trandoshan:crafting_artisan' : StartingStats((850 ,600,700),(800 ,400,300 ),(900 ,400,600 )), -'trandoshan:outdoors_scout' : StartingStats((1050,600,750),(800 ,400,400 ),(700 ,350,500 )), -'trandoshan:science_medic' : StartingStats((850 ,600,700),(700 ,300,300 ),(1000,500,600 )), -'trandoshan:social_entertainer': StartingStats((750 ,600,700),(1000,400,400 ),(800 ,400,500 )), -'twilek:combat_brawler' : StartingStats((1000,500,650),(1050,650,350 ),(600 ,300,300 )), -'twilek:combat_marksman' : StartingStats((1000,450,550),(1050,750,300 ),(700 ,300,300 )), -'twilek:crafting_artisan' : StartingStats((600 ,300,550),(1050,700,300 ),(1000,400,500 )), -'twilek:outdoors_scout' : StartingStats((800 ,300,600),(1050,700,400 ),(800 ,350,400 )), -'twilek:science_medic' : StartingStats((800 ,300,600),(1050,700,400 ),(800 ,350,400 )), -'twilek:social_entertainer' : StartingStats((500 ,300,550),(1250,700,400 ),(900 ,400,400 )), -'wookiee:combat_brawler' : StartingStats((1350,850,550),(1000,450,450 ),(600 ,450,400 )), -'wookiee:combat_marksman' : StartingStats((1350,800,450),(1000,550,400 ),(700 ,450,400 )), -'wookiee:crafting_artisan' : StartingStats((950 ,650,450),(1000,500,500 ),(1000,550,600 )), -'wookiee:outdoors_scout' : StartingStats((1150,650,500),(1000,500,500 ),(800 ,500,500 )), -'wookiee:science_medic' : StartingStats((950 ,650,450),(900 ,400,400 ),(1100,650,600 )), -'wookiee:social_entertainer' : StartingStats((850 ,650,450),(1200,500,500 ),(900 ,550,500 )), -'zabrak:combat_brawler' : StartingStats((1200,500,400),(1100,350,350 ),(500 ,300,700 )), -'zabrak:combat_marksman' : StartingStats((1200,450,300),(1100,450,300 ),(600 ,300,700 )), -'zabrak:crafting_artisan' : StartingStats((800 ,300,300),(1100,400,300 ),(900 ,400,900 )), -'zabrak:outdoors_scout' : StartingStats((1000,300,350),(1100,400,400 ),(700 ,350,800 )), -'zabrak:science_medic' : StartingStats((800 ,300,300),(1000,300,300 ),(1000,500,900 )), -'zabrak:social_entertainer' : StartingStats((700 ,300,300),(1300,400,400 ),(800 ,400,800 )) + 'bothan:combat_brawler' : StartingStats((1000,500,400),(1100,650,450 ),(600 ,400,300 )), + 'bothan:combat_marksman' : StartingStats((1000,450,300),(1100,750,400 ),(700 ,400,400 )), + 'bothan:crafting_artisan' : StartingStats((600 ,300,300),(1100,700,400 ),(1000,500,500 )), + 'bothan:outdoors_scout' : StartingStats((800 ,300,350),(1100,700,500 ),(800 ,450,400 )), + 'bothan:science_medic' : StartingStats((600 ,300,300),(1000,600,400 ),(1100,600,500 )), + 'bothan:social_entertainer' : StartingStats((500 ,300,300),(1300,700,500 ),(900 ,500,400 )), + 'human:combat_brawler' : StartingStats((1100,600,500),(900 ,450,450 ),(600 ,400,400 )), + 'human:combat_marksman' : StartingStats((1100,550,400),(900 ,550,400 ),(700 ,400,400 )), + 'human:crafting_artisan' : StartingStats((700 ,400,400),(900 ,500,400 ),(1000,500,600 )), + 'human:outdoors_scout' : StartingStats((900 ,400,450),(900 ,500,500 ),(800 ,450,500 )), + 'human:science_medic' : StartingStats((700 ,400,400),(800 ,400,400 ),(1100,600,600 )), + 'human:social_entertainer' : StartingStats((600 ,400,400),(1100,500,500 ),(900 ,500,500 )), + 'ithorian:combat_brawler' : StartingStats((1000,500,400),(800 ,350,500 ),(800 ,600,450 )), + 'ithorian:combat_marksman' : StartingStats((1000,450,300),(800 ,450,450 ),(900 ,600,450 )), + 'ithorian:crafting_artisan' : StartingStats((600 ,300,300),(800 ,400,450 ),(1200,700,650 )), + 'ithorian:outdoors_scout' : StartingStats((800 ,300,350),(800 ,400,550 ),(1000,650,550 )), + 'ithorian:science_medic' : StartingStats((600 ,300,300),(700 ,300,450 ),(1300,800,550 )), + 'ithorian:social_entertainer' : StartingStats((500 ,300,300),(1000,400,550 ),(1100,700,550 )), + 'moncal:combat_brawler' : StartingStats((1000,500,400),(800 ,350,500 ),(800 ,600,450 )), + 'moncal:combat_marksman' : StartingStats((1000,450,300),(800 ,450,450 ),(900 ,600,450 )), + 'moncal:crafting_artisan' : StartingStats((600 ,300,300),(800 ,400,450 ),(1200,700,650 )), + 'moncal:outdoors_scout' : StartingStats((800 ,300,350),(800 ,400,550 ),(1000,650,550 )), + 'moncal:science_medic' : StartingStats((600 ,300,300),(700 ,300,450 ),(1300,800,650 )), + 'moncal:social_entertainer' : StartingStats((500 ,300,300),(1000,400,550 ),(1100,700,550 )), + 'rodian:combat_brawler' : StartingStats((1000,500,400),(1000,550,800 ),(500 ,300,350 )), + 'rodian:combat_marksman' : StartingStats((1000,450,300),(1000,650,750 ),(600 ,300,350 )), + 'rodian:crafting_artisan' : StartingStats((600 ,300,300),(1000,600,750 ),(900 ,400,550 )), + 'rodian:outdoors_scout' : StartingStats((800 ,300,350),(1000,600,850 ),(700 ,350,450 )), + 'rodian:science_medic' : StartingStats((600 ,300,300),(900 ,500,750 ),(1000,500,550 )), + 'rodian:social_entertainer' : StartingStats((500 ,300,300),(1200,600,850 ),(800 ,400,450 )), + 'sullustan:combat_brawler' : StartingStats((1200,500,400),(1100,350,350 ),(500 ,300,700 )), + 'sullustan:combat_marksman' : StartingStats((1200,450,300),(1100,450,300 ),(600 ,300,700 )), + 'sullustan:crafting_artisan' : StartingStats((800 ,300,300),(1100,400,300 ),(900 ,400,900 )), + 'sullustan:outdoors_scout' : StartingStats((1000,300,350),(1100,400,400 ),(700 ,350,800 )), + 'sullustan:science_medic' : StartingStats((800 ,300,300),(1000,300,300 ),(1000,500,800 )), + 'sullustan:social_entertainer' : StartingStats((700 ,300,300),(1300,400,400 ),(800 ,400,800 )), + 'trandoshan:combat_brawler' : StartingStats((1250,800,800),(800 ,350,350 ),(500 ,300,400 )), + 'trandoshan:combat_marksman' : StartingStats((1250,750,700),(800 ,450,300 ),(600 ,300,400 )), + 'trandoshan:crafting_artisan' : StartingStats((850 ,600,700),(800 ,400,300 ),(900 ,400,600 )), + 'trandoshan:outdoors_scout' : StartingStats((1050,600,750),(800 ,400,400 ),(700 ,350,500 )), + 'trandoshan:science_medic' : StartingStats((850 ,600,700),(700 ,300,300 ),(1000,500,600 )), + 'trandoshan:social_entertainer': StartingStats((750 ,600,700),(1000,400,400 ),(800 ,400,500 )), + 'twilek:combat_brawler' : StartingStats((1000,500,650),(1050,650,350 ),(600 ,300,300 )), + 'twilek:combat_marksman' : StartingStats((1000,450,550),(1050,750,300 ),(700 ,300,300 )), + 'twilek:crafting_artisan' : StartingStats((600 ,300,550),(1050,700,300 ),(1000,400,500 )), + 'twilek:outdoors_scout' : StartingStats((800 ,300,600),(1050,700,400 ),(800 ,350,400 )), + 'twilek:science_medic' : StartingStats((800 ,300,600),(1050,700,400 ),(800 ,350,400 )), + 'twilek:social_entertainer' : StartingStats((500 ,300,550),(1250,700,400 ),(900 ,400,400 )), + 'wookiee:combat_brawler' : StartingStats((1350,850,550),(1000,450,450 ),(600 ,450,400 )), + 'wookiee:combat_marksman' : StartingStats((1350,800,450),(1000,550,400 ),(700 ,450,400 )), + 'wookiee:crafting_artisan' : StartingStats((950 ,650,450),(1000,500,500 ),(1000,550,600 )), + 'wookiee:outdoors_scout' : StartingStats((1150,650,500),(1000,500,500 ),(800 ,500,500 )), + 'wookiee:science_medic' : StartingStats((950 ,650,450),(900 ,400,400 ),(1100,650,600 )), + 'wookiee:social_entertainer' : StartingStats((850 ,650,450),(1200,500,500 ),(900 ,550,500 )), + 'zabrak:combat_brawler' : StartingStats((1200,500,400),(1100,350,350 ),(500 ,300,700 )), + 'zabrak:combat_marksman' : StartingStats((1200,450,300),(1100,450,300 ),(600 ,300,700 )), + 'zabrak:crafting_artisan' : StartingStats((800 ,300,300),(1100,400,300 ),(900 ,400,900 )), + 'zabrak:outdoors_scout' : StartingStats((1000,300,350),(1100,400,400 ),(700 ,350,800 )), + 'zabrak:science_medic' : StartingStats((800 ,300,300),(1000,300,300 ),(1000,500,900 )), + 'zabrak:social_entertainer' : StartingStats((700 ,300,300),(1300,400,400 ),(800 ,400,800 )) } \ No newline at end of file diff --git a/data/scripts/character_create/create_starting_character.py b/data/scripts/character_create/create_starting_character.py index 7c92491b9..d2fa7b0a3 100644 --- a/data/scripts/character_create/create_starting_character.py +++ b/data/scripts/character_create/create_starting_character.py @@ -67,6 +67,7 @@ def CreateStartingCharacter(kernel, scale, base_model, customization, full_name, simulation.addObjectToScene(creature, startLoc.name) return creature + def GetSpecies(base_model): match = re.search('player/(.*)_', base_model) return match.group(1) diff --git a/data/scripts/character_create/items.py b/data/scripts/character_create/items.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/data/scripts/character_create/professions.py b/data/scripts/character_create/professions.py index 30e2a4ab5..35b0a97d0 100644 --- a/data/scripts/character_create/professions.py +++ b/data/scripts/character_create/professions.py @@ -1,11 +1,9 @@ Profession = { - -'crafting_artisan', -'combat_brawler', -'social_entertainer', -'combat_marksman', -'science_medic', -'outdoors_scout', -'jedi' - + 'crafting_artisan', + 'combat_brawler', + 'social_entertainer', + 'combat_marksman', + 'science_medic', + 'outdoors_scout', + 'jedi' } \ No newline at end of file diff --git a/data/scripts/character_create/skills_professions.py b/data/scripts/character_create/skills_professions.py deleted file mode 100644 index 6e066d972..000000000 --- a/data/scripts/character_create/skills_professions.py +++ /dev/null @@ -1 +0,0 @@ -profession += '_novice' \ No newline at end of file diff --git a/data/scripts/character_create/skills_species.py b/data/scripts/character_create/skills_species.py index 140622d4c..e0d92676d 100644 --- a/data/scripts/character_create/skills_species.py +++ b/data/scripts/character_create/skills_species.py @@ -1,71 +1,100 @@ baseSpeciesSkills = { -'human' : 'social_language', -'human' : 'social_language_basic', -'human' : 'social_language_basic_speak', -'human' : 'species_human', -'rodian' : 'social_language', -'rodian' : 'social_language_basic', -'rodian' : 'social_language_basic_speak', -'rodian' : 'social_language_rodian', -'rodian' : 'social_language_rodian_speak', -'rodian' : 'social_language_rodian_comprehend', -'rodian' : 'species_rodian', -'trandoshan' : 'social_language', -'trandoshan' : 'social_language_basic', -'trandoshan' : 'social_language_basic_speak', -'trandoshan' : 'social_language_trandoshan', -'trandoshan' : 'social_language_trandoshan_speak', -'trandoshan' : 'social_language_trandoshan_comprehend', -'trandoshan' : 'species_trandoshan', -'moncal' : 'social_language', -'moncal' : 'social_language_basic', -'moncal' : 'social_language_basic_speak', -'moncal' : 'social_language_moncalamari', -'moncal' : 'social_language_moncalamari_speak', -'moncal' : 'social_language_moncalamari_comprehend', -'moncal' : 'species_moncal', -'wookiee' : 'social_language', -'wookiee' : 'social_language_basic', -'wookiee' : 'social_language_basic_speak', -'wookiee' : 'social_language_wookiee', -'wookiee' : 'social_language_wookiee_speak', -'wookiee' : 'social_language_wookiee_comprehend', -'wookiee' : 'species_wookiee', -'bothan' : 'social_language', -'bothan' : 'social_language_basic', -'bothan' : 'social_language_basic_speak', -'bothan' : 'social_language_bothan', -'bothan' : 'social_language_bothan_speak', -'bothan' : 'social_language_bothan_comprehend', -'bothan' : 'species_bothan', -'twilek' : 'social_language', -'twilek' : 'social_language_basic', -'twilek' : 'social_language_basic_speak', -'twilek' : 'social_language_twilek', -'twilek' : 'social_language_twilek_speak', -'twilek' : 'social_language_twilek_comprehend', -'twilek' : 'species_twilek', -'zabrak' : 'social_language', -'zabrak' : 'social_language_basic', -'zabrak' : 'social_language_basic_speak', -'zabrak' : 'social_language_zabrak', -'zabrak' : 'social_language_zabrak_speak', -'zabrak' : 'social_language_zabrak_comprehend', -'zabrak' : 'species_zabrak', -'ithorian' : 'social_language', -'ithorian' : 'social_language_basic', -'ithorian' : 'social_language_basic_speak', -'ithorian' : 'social_language_ithorian', -'ithorian' : 'social_language_ithorian_speak', -'ithorian' : 'social_language_ithorian_comprehend', -'ithorian' : 'species_ithorian', -'sullustan' : 'social_language', -'sullustan' : 'social_language_basic', -'sullustan' : 'social_language_basic_speak', -'sullustan' : 'social_language_sullustan', -'sullustan' : 'social_language_sullustan_speak', -'sullustan' : 'social_language_sullustan_comprehend', -'sullustan' : 'species_sullustan', + 'human' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'species_human' + ), + + 'rodian' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_rodian', + 'social_language_rodian_speak', + 'social_language_rodian_comprehend', + 'species_rodian' + ), + + 'trandoshan' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_trandoshan', + 'social_language_trandoshan_speak', + 'social_language_trandoshan_comprehend', + 'species_trandoshan' + ), + + 'moncal' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_moncalamari', + 'social_language_moncalamari_speak', + 'social_language_moncalamari_comprehend', + 'species_moncal' + ), + + 'wookiee' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_wookiee', + 'social_language_wookiee_speak', + 'social_language_wookiee_comprehend', + 'species_wookiee' + ), + + 'bothan' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_bothan', + 'social_language_bothan_speak', + 'social_language_bothan_comprehend', + 'species_bothan' + ), + + 'twilek' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_twilek', + 'social_language_twilek_speak', + 'social_language_twilek_comprehend', + 'species_twilek' + ), + + 'zabrak' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_zabrak', + 'social_language_zabrak_speak', + 'social_language_zabrak_comprehend', + 'species_zabrak', + ), + + 'ithorian' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_ithorian', + 'social_language_ithorian_speak', + 'social_language_ithorian_comprehend', + 'species_ithorian' + ), + + 'sullustan' : ( + 'social_language', + 'social_language_basic', + 'social_language_basic_speak', + 'social_language_sullustan', + 'social_language_sullustan_speak', + 'social_language_sullustan_comprehend', + 'species_sullustan' + ) } \ No newline at end of file diff --git a/data/scripts/character_create/starting_items.py b/data/scripts/character_create/starting_items.py index e5b15f1c8..7b9bd041a 100644 --- a/data/scripts/character_create/starting_items.py +++ b/data/scripts/character_create/starting_items.py @@ -1,168 +1,192 @@ + + def GetStartingItems(species, profession, gender): - itemList = CommonItems - if profession in ProfessionItems: - itemList += ProfessionItems[profession] + #Grab items common to all + itemList = list(CommonItems) + + #Grab items based on species and profession if species == 'wookiee': - GetWookieeItems(itemList, profession, gender) + pass elif species == 'ithorian': - GetIthorianItems(itemList, profession, gender) + itemList.extend(IthorianItems[gender + ':' + profession]) else: - if profession == 'social_entertainer': - GetEntertainerItems(itemList, gender) - elif profession == 'science_medic': - GetMedicItems(itemList, gender) - elif profession == 'outdoors_scout': - GetScoutItems(itemList, gender) - elif profession == 'crafting_artisan': - GetArtisanItems(itemList, gender) - elif profession == 'combat_brawler': - GetBrawlerItems(itemList, gender) - elif profession == 'combat_marksman': - GetMarksmanItems(itemList, gender) - - # hack remove shoes/boots... + itemList.extend(StartingItems[gender+":"+profession]) + + # hack remove shoes/boots for trandoshans if species == 'trandoshan': for i in range(len(itemList)): if itemList[i].find('shoe') != -1: itemList.pop(i) elif itemList[i].find('boot') != -1: itemList.pop(i) + return itemList - - -# trandoshans dont get shoes... -#Profession Specific Items -def GetEntertainerItems(itemList, gender): - if (gender == 'female'): - #female - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s38.iff', - 'object/tangible/wearables/pants/shared_pants_s11.iff', - 'object/tangible/wearables/shoes/shared_shoes_s09.iff' - ] - else: - #male - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s42.iff', - 'object/tangible/wearables/pants/shared_pants_s08.iff', - 'object/tangible/wearables/shoes/shared_shoes_s01.iff' - ] -def GetMedicItems(itemList, gender): - #science_medic - if (gender == 'female'): - #female - itemList += [ - 'object/tangible/wearables/bodysuit/shared_bodysuit_s13.iff', - 'object/tangible/wearables/boots/shared_boots_s04.iff' - ] - else: - #male - itemList += [ - 'object/tangible/wearables/jacket/shared_jacket_s24.iff', - 'object/tangible/wearables/shirt/shared_shirt_s10.iff', - 'object/tangible/wearables/pants/shared_pants_s12.iff', - 'object/tangible/wearables/shoes/shared_shoes_s02.iff' - ] -def GetScoutItems(itemList, gender): - #scout - if gender == 'female': - #female - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s26.iff', - 'object/tangible/wearables/pants/shared_pants_s21.iff' - ] - else: - #male - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s16.iff', - 'object/tangible/wearables/pants/shared_pants_s21.iff', - 'object/tangible/wearables/vest/shared_vest_s09.iff' - ] - -def GetArtisanItems(itemList, gender): - # artisan - if gender == 'female': - #female - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s12.iff', - 'object/tangible/wearables/skirt/shared_skirt_s10.iff', - 'object/tangible/wearables/shoes/shared_shoes_s07.iff' - ] - else: - #male - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s34.iff', - 'object/tangible/wearables/pants/shared_pants_s29.iff', - 'object/tangible/wearables/shoes/shared_shoes_s01.iff', - ] -def GetBrawlerItems(itemList, gender): - #brawler - if gender == 'female': - #female - itemList = [ - 'object/tangible/wearables/shirt/shared_shirt_s27.iff', - 'object/tangible/wearables/pants/shared_pants_s07.iff', - 'object/tangible/wearables/boots/shared_boots_s05.iff', - 'object/tangible/wearables/gloves/shared_gloves_s03.iff' - ] - else: - #male - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s14.iff', - 'object/tangible/wearables/jacket/shared_jacket_s16.iff', - 'object/tangible/wearables/pants/shared_pants_s14.iff', - 'object/tangible/wearables/boots/shared_boots_s05.iff' - ] -def GetMarksmanItems(itemList, gender): - if gender == 'female': - #female - itemList += [ - 'object/tangible/wearables/shirt/shared_shirt_s24.iff', - 'object/tangible/wearables/pants/shared_pants_s24.iff', - 'object/tangible/wearables/vest/shared_vest_s10.iff', - 'object/tangible/wearables/shoes/shared_shoes_s02.iff' - ] - else: - #male - itemList += [ - 'object/tangible/wearables/jacket/shared_jacket_s05.iff', - 'object/tangible/wearables/pants/shared_pants_s04.iff', - 'object/tangible/wearables/boots/shared_boots_s21.iff' - ] - -def GetWookieeItems(itemList, profession, gender): - if profession == 'science_medic': - itemList.append('object/tangible/wearables/jacket/shared_jacket_s24.iff') #Ithorian -def GetIthorianItems(itemList, profession, gender): - itemList += IthorianItems[gender + ':' + profession] - -ProfessionItems = { - 'social_entertainer' : ['object/tangible/instrument/shared_slitherhorn.iff'], - 'science_medic' : ['object/tangible/crafting/station/shared_food_tool.iff'], - 'outdoors_scout' : ['object/tangible/crafting/station/shared_generic_tool.iff', 'object/tangible/wearables/shoes/shared_shoes_s02.iff'], - 'crafting_artisan' : ['object/tangible/crafting/station/shared_generic_tool.iff','object/tangible/survey_tool/shared_survey_tool_mineral.iff'] +def GetIthorianItems(profession, gender): + return + +StartingItems = { + 'female:social_entertainer' : ( + 'object/tangible/instrument/shared_slitherhorn.iff', + 'object/tangible/wearables/shirt/shared_shirt_s38.iff', + 'object/tangible/wearables/pants/shared_pants_s11.iff', + 'object/tangible/wearables/shoes/shared_shoes_s09.iff' + ), + + 'male:social_entertainer' : ( + 'object/tangible/instrument/shared_slitherhorn.iff', + 'object/tangible/wearables/shirt/shared_shirt_s42.iff', + 'object/tangible/wearables/pants/shared_pants_s08.iff', + 'object/tangible/wearables/shoes/shared_shoes_s01.iff' + ), + + 'female:science_medic' : ( + 'object/tangible/crafting/station/shared_food_tool.iff', + 'object/tangible/wearables/bodysuit/shared_bodysuit_s13.iff', + 'object/tangible/wearables/boots/shared_boots_s04.iff' + ), + + 'male:science_medic' : ( + 'object/tangible/crafting/station/shared_food_tool.iff', + 'object/tangible/wearables/jacket/shared_jacket_s24.iff', + 'object/tangible/wearables/shirt/shared_shirt_s10.iff', + 'object/tangible/wearables/pants/shared_pants_s12.iff', + 'object/tangible/wearables/shoes/shared_shoes_s02.iff' + ), + + 'female:outdoors_scout' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/wearables/shoes/shared_shoes_s02.iff', + 'object/tangible/wearables/shirt/shared_shirt_s26.iff', + 'object/tangible/wearables/pants/shared_pants_s21.iff' + ), + + 'male:outdoors_scout' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/wearables/shoes/shared_shoes_s02.iff', + 'object/tangible/wearables/shirt/shared_shirt_s16.iff', + 'object/tangible/wearables/pants/shared_pants_s21.iff', + 'object/tangible/wearables/vest/shared_vest_s09.iff' + ), + + 'female:crafting_artisan' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', + 'object/tangible/wearables/shirt/shared_shirt_s12.iff', + 'object/tangible/wearables/skirt/shared_skirt_s10.iff', + 'object/tangible/wearables/shoes/shared_shoes_s07.iff' + ), + + 'male:crafting_artisan' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', + 'object/tangible/wearables/shirt/shared_shirt_s34.iff', + 'object/tangible/wearables/pants/shared_pants_s29.iff', + 'object/tangible/wearables/shoes/shared_shoes_s01.iff' + ), + + 'female:combat_brawler' : ( + 'object/tangible/wearables/shirt/shared_shirt_s27.iff', + 'object/tangible/wearables/pants/shared_pants_s07.iff', + 'object/tangible/wearables/boots/shared_boots_s05.iff', + 'object/tangible/wearables/gloves/shared_gloves_s03.iff' + ), + + 'male:combat_brawler' : ( + 'object/tangible/wearables/shirt/shared_shirt_s14.iff', + 'object/tangible/wearables/jacket/shared_jacket_s16.iff', + 'object/tangible/wearables/pants/shared_pants_s14.iff', + 'object/tangible/wearables/boots/shared_boots_s05.iff' + ), + + 'female:combat_marksman' : ( + 'object/tangible/wearables/shirt/shared_shirt_s24.iff', + 'object/tangible/wearables/pants/shared_pants_s24.iff', + 'object/tangible/wearables/vest/shared_vest_s10.iff', + 'object/tangible/wearables/shoes/shared_shoes_s02.iff' + ), + + 'male:combat_marksman' : ( + 'object/tangible/wearables/jacket/shared_jacket_s05.iff', + 'object/tangible/wearables/pants/shared_pants_s04.iff', + 'object/tangible/wearables/boots/shared_boots_s21.iff' + ) } IthorianItems = { - 'female:social_entertainer' : ['object/tangible/wearables/ithorian/shared_ith_pants_s11.iff','object/tangible/wearables/ithorian/shared_ith_shirt_s09.iff'], - 'male:social_entertainer' : ['object/tangible/wearables/ithorian/shared_ith_pants_s08.iff','object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff'], - 'female:outdoors_scout' : ['object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff','object/tangible/wearables/ithorian/shared_ith_pants_s21.iff'], - 'male:outdoors_scout' : ['object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff','object/tangible/wearables/ithorian/shared_ith_pants_s21.iff'], - 'female:science_medic' : ['object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff','object/tangible/wearables/ithorian/shared_ith_pants_s03.iff'], - 'male:science_medic' : ['object/tangible/wearables/ithorian/shared_ith_jacket_s02.iff','object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff','object/tangible/wearables/ithorian/shared_ith_pants_s12.iff'], - 'female:crafting_artisan' : ['object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff','object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff'], - 'male:crafting_artisan' : ['object/tangible/wearables/ithorian/shared_ith_vest_s02.iff','object/tangible/wearables/ithorian/shared_ith_shirt_s10.iff','object/tangible/wearables/ithorian/shared_ith_pants_s06.iff'], - 'female:combat_brawler' : ['object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff','object/tangible/wearables/ithorian/shared_ith_pants_s07.iff', 'object/tangible/wearables/ithorian/shared_ith_gloves_s01.iff'], - 'male:combat_brawler' : ['object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff','object/tangible/wearables/ithorian/shared_ith_jacket_s16.iff','object/tangible/wearables/ithorian/shared_ith_pants_s04.iff'], - 'female:combat_marksman' : ['object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff','object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff'], - 'male:combat_brawler' : ['object/tangible/wearables/ithorian/shared_ith_jacket_s05.iff','object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff','object/tangible/wearables/ithorian/shared_ith_pants_s04.iff'] + 'female:social_entertainer' : ( + 'object/tangible/wearables/ithorian/shared_ith_pants_s11.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s09.iff' + ), + + 'male:social_entertainer' : ( + 'object/tangible/wearables/ithorian/shared_ith_pants_s08.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff' + ), + + 'female:outdoors_scout' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s21.iff' + ), + + 'male:outdoors_scout' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s21.iff' + ), + + 'female:science_medic' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s03.iff' + ), + + 'male:science_medic' : ( + 'object/tangible/wearables/ithorian/shared_ith_jacket_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s12.iff' + ), + + 'female:crafting_artisan' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', + 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff' + ), + + 'male:crafting_artisan' : ( + 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s10.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff' + ), + + 'female:combat_brawler' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s07.iff', + 'object/tangible/wearables/ithorian/shared_ith_gloves_s01.iff' + ), + + 'male:combat_brawler' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_jacket_s16.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s04.iff' + ), + + 'female:combat_marksman' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', + 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff' + ), + + 'male:combat_marksman' : ( + 'object/tangible/wearables/ithorian/shared_ith_jacket_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s04.iff' + ) } + #All Get These -CommonItems = [ - 'object/tangible/food/shared_fruit_melon.iff', - 'object/weapon/ranged/pistol/shared_pistol_cdef_noob.iff', - 'object/weapon/melee/knife/shared_knife_survival.iff' -] \ No newline at end of file +CommonItems = ( + 'object/tangible/food/shared_fruit_melon.iff', + 'object/weapon/ranged/pistol/shared_pistol_cdef_noob.iff', + 'object/weapon/melee/knife/shared_knife_survival.iff' + ) \ No newline at end of file From 8bd3418ee555cf8c6e41730745a81fe72138d56d Mon Sep 17 00:00:00 2001 From: rcythr Date: Mon, 18 Mar 2013 20:19:24 -0600 Subject: [PATCH 7/7] Fixed wookies. Stupid hairy animals. --- .../character_create/starting_items.py | 260 ++++++++++-------- 1 file changed, 151 insertions(+), 109 deletions(-) diff --git a/data/scripts/character_create/starting_items.py b/data/scripts/character_create/starting_items.py index 7b9bd041a..26fd01e6c 100644 --- a/data/scripts/character_create/starting_items.py +++ b/data/scripts/character_create/starting_items.py @@ -1,15 +1,11 @@ - - def GetStartingItems(species, profession, gender): #Grab items common to all itemList = list(CommonItems) #Grab items based on species and profession - if species == 'wookiee': - pass - elif species == 'ithorian': - itemList.extend(IthorianItems[gender + ':' + profession]) + if species == 'wookiee' or species == 'ithorian': + itemList.extend(StartingItems[species+":"+gender + ':' + profession]) else: itemList.extend(StartingItems[gender+":"+profession]) @@ -79,109 +75,155 @@ def GetIthorianItems(profession, gender): 'object/tangible/wearables/shoes/shared_shoes_s07.iff' ), - 'male:crafting_artisan' : ( - 'object/tangible/crafting/station/shared_generic_tool.iff', - 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', - 'object/tangible/wearables/shirt/shared_shirt_s34.iff', - 'object/tangible/wearables/pants/shared_pants_s29.iff', - 'object/tangible/wearables/shoes/shared_shoes_s01.iff' - ), - - 'female:combat_brawler' : ( - 'object/tangible/wearables/shirt/shared_shirt_s27.iff', - 'object/tangible/wearables/pants/shared_pants_s07.iff', - 'object/tangible/wearables/boots/shared_boots_s05.iff', - 'object/tangible/wearables/gloves/shared_gloves_s03.iff' - ), - - 'male:combat_brawler' : ( - 'object/tangible/wearables/shirt/shared_shirt_s14.iff', - 'object/tangible/wearables/jacket/shared_jacket_s16.iff', - 'object/tangible/wearables/pants/shared_pants_s14.iff', - 'object/tangible/wearables/boots/shared_boots_s05.iff' - ), - - 'female:combat_marksman' : ( - 'object/tangible/wearables/shirt/shared_shirt_s24.iff', - 'object/tangible/wearables/pants/shared_pants_s24.iff', - 'object/tangible/wearables/vest/shared_vest_s10.iff', - 'object/tangible/wearables/shoes/shared_shoes_s02.iff' - ), - - 'male:combat_marksman' : ( - 'object/tangible/wearables/jacket/shared_jacket_s05.iff', - 'object/tangible/wearables/pants/shared_pants_s04.iff', - 'object/tangible/wearables/boots/shared_boots_s21.iff' - ) -} - -IthorianItems = { - 'female:social_entertainer' : ( - 'object/tangible/wearables/ithorian/shared_ith_pants_s11.iff', - 'object/tangible/wearables/ithorian/shared_ith_shirt_s09.iff' - ), - - 'male:social_entertainer' : ( - 'object/tangible/wearables/ithorian/shared_ith_pants_s08.iff', - 'object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff' - ), - - 'female:outdoors_scout' : ( - 'object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s21.iff' - ), - - 'male:outdoors_scout' : ( - 'object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s21.iff' - ), - - 'female:science_medic' : ( - 'object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s03.iff' - ), - - 'male:science_medic' : ( - 'object/tangible/wearables/ithorian/shared_ith_jacket_s02.iff', - 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s12.iff' - ), - - 'female:crafting_artisan' : ( - 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', - 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff' - ), - - 'male:crafting_artisan' : ( - 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff', - 'object/tangible/wearables/ithorian/shared_ith_shirt_s10.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff' - ), - - 'female:combat_brawler' : ( - 'object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s07.iff', - 'object/tangible/wearables/ithorian/shared_ith_gloves_s01.iff' - ), - - 'male:combat_brawler' : ( - 'object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff', - 'object/tangible/wearables/ithorian/shared_ith_jacket_s16.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s04.iff' - ), - - 'female:combat_marksman' : ( - 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', - 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff' - ), - - 'male:combat_marksman' : ( - 'object/tangible/wearables/ithorian/shared_ith_jacket_s05.iff', - 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', - 'object/tangible/wearables/ithorian/shared_ith_pants_s04.iff' - ) + 'male:crafting_artisan' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', + 'object/tangible/wearables/shirt/shared_shirt_s34.iff', + 'object/tangible/wearables/pants/shared_pants_s29.iff', + 'object/tangible/wearables/shoes/shared_shoes_s01.iff' + ), + + 'female:combat_brawler' : ( + 'object/tangible/wearables/shirt/shared_shirt_s27.iff', + 'object/tangible/wearables/pants/shared_pants_s07.iff', + 'object/tangible/wearables/boots/shared_boots_s05.iff', + 'object/tangible/wearables/gloves/shared_gloves_s03.iff' + ), + + 'male:combat_brawler' : ( + 'object/tangible/wearables/shirt/shared_shirt_s14.iff', + 'object/tangible/wearables/jacket/shared_jacket_s16.iff', + 'object/tangible/wearables/pants/shared_pants_s14.iff', + 'object/tangible/wearables/boots/shared_boots_s05.iff' + ), + + 'female:combat_marksman' : ( + 'object/tangible/wearables/shirt/shared_shirt_s24.iff', + 'object/tangible/wearables/pants/shared_pants_s24.iff', + 'object/tangible/wearables/vest/shared_vest_s10.iff', + 'object/tangible/wearables/shoes/shared_shoes_s02.iff' + ), + + 'male:combat_marksman' : ( + 'object/tangible/wearables/jacket/shared_jacket_s05.iff', + 'object/tangible/wearables/pants/shared_pants_s04.iff', + 'object/tangible/wearables/boots/shared_boots_s21.iff' + ), + + 'ithorian:female:social_entertainer' : ( + 'object/tangible/instrument/shared_slitherhorn.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s11.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s09.iff' + ), + + 'ithorian:male:social_entertainer' : ( + 'object/tangible/instrument/shared_slitherhorn.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s08.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff' + ), + + 'ithorian:female:outdoors_scout' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s21.iff' + ), + + 'ithorian:male:outdoors_scout' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s04.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s21.iff' + ), + + 'ithorian:female:science_medic' : ( + 'object/tangible/crafting/station/shared_food_tool.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s01.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s03.iff' + ), + + 'ithorian:male:science_medic' : ( + 'object/tangible/crafting/station/shared_food_tool.iff', + 'object/tangible/wearables/ithorian/shared_ith_jacket_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s12.iff' + ), + + 'ithorian:female:crafting_artisan' :( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', + 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff' + ), + + 'ithorian:male:crafting_artisan' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', + 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s10.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff' + ), + + 'ithorian:female:combat_brawler' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s07.iff', + 'object/tangible/wearables/ithorian/shared_ith_gloves_s01.iff' + ), + + 'ithorian:male:combat_brawler' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s02.iff', + 'object/tangible/wearables/ithorian/shared_ith_jacket_s16.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s04.iff' + ), + + 'ithorian:female:combat_marksman' : ( + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s06.iff', + 'object/tangible/wearables/ithorian/shared_ith_vest_s02.iff' + ), + + 'ithorian:male:combat_marksman' : ( + 'object/tangible/wearables/ithorian/shared_ith_jacket_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_shirt_s05.iff', + 'object/tangible/wearables/ithorian/shared_ith_pants_s04.iff' + ), + + 'wookiee:female:crafting_artisan' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', + ), + + 'wookiee:male:crafting_artisan' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + 'object/tangible/survey_tool/shared_survey_tool_mineral.iff', + ), + + 'wookiee:female:social_entertainer' : ( + 'object/tangible/instrument/shared_slitherhorn.iff', + ), + + 'wookiee:male:social_entertainer' : ( + 'object/tangible/instrument/shared_slitherhorn.iff', + ), + + 'wookiee:female:science_medic' : ( + 'object/tangible/crafting/station/shared_food_tool.iff', + ), + + 'wookiee:male:science_medic' : ( + 'object/tangible/crafting/station/shared_food_tool.iff', + ), + + 'wookiee:female:outdoors_scout' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + ), + 'wookiee:male:outdoors_scout' : ( + 'object/tangible/crafting/station/shared_generic_tool.iff', + ), + + 'wookiee:female:combat_brawler' : (), + 'wookiee:male:combat_brawler' : (), + 'wookiee:female:combat_marksman' : (), + 'wookiee:male:combat_marksman' : (), } #All Get These