Difference between revisions of "Content Create Script.sql"
From Dragon Age Toolset Wiki
BryanDerksen (Talk | contribs) (This is the SQL query for creating the tables in the toolset database) |
BryanDerksen (Talk | contribs) (this procedure is not used by the EUTS) |
||
(One intermediate revision by the same user not shown) | |||
Line 14,899: | Line 14,899: | ||
GO | GO | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
SET QUOTED_IDENTIFIER ON | SET QUOTED_IDENTIFIER ON | ||
Line 17,703: | Line 17,344: | ||
GO | GO | ||
</pre> | </pre> | ||
+ | [[Category:Database]] |
Latest revision as of 20:12, 28 October 2009
This is one of the two SQL scripts used to create a blank database. See Database for more details.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Module_t_ModuleType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Module] DROP CONSTRAINT FK_t_Module_t_ModuleType GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ResourceDefinition_t_ResourceTables]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ResourceDefinition] DROP CONSTRAINT FK_t_ResourceDefinition_t_ResourceTables GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ResourceTableRelationship_t_ResourceTables]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ResourceTableRelationship] DROP CONSTRAINT FK_t_ResourceTableRelationship_t_ResourceTables GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ResourceTableRelationship_t_ResourceTables1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ResourceTableRelationship] DROP CONSTRAINT FK_t_ResourceTableRelationship_t_ResourceTables1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringExportHistory_StringExportLabel]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringExportHistory] DROP CONSTRAINT FK_StringExportHistory_StringExportLabel GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringExportLabelResourceStats_StringExportLabel]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringExportLabelResourceStats] DROP CONSTRAINT FK_StringExportLabelResourceStats_StringExportLabel GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringExportLabelStringTypeStats_StringExportLabel]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringExportLabelStringTypeStats] DROP CONSTRAINT FK_StringExportLabelStringTypeStats_StringExportLabel GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageVariantText_StringImportSession]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariantText] DROP CONSTRAINT FK_StringLanguageVariantText_StringImportSession GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageVariantVersion_StringImportSession]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariantVersion] DROP CONSTRAINT FK_StringLanguageVariantVersion_StringImportSession GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_String_t_StringTable]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_String] DROP CONSTRAINT FK_t_String_t_StringTable GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringVersion_t_StringType]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringVersion] DROP CONSTRAINT FK_t_StringVersion_t_StringType GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringLanguageVariant_t_StringVariant]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariant] DROP CONSTRAINT FK_t_StringLanguageVariant_t_StringVariant GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOSessionInstanceVersion_t_VOSessionInstance]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOSessionInstanceVersion] DROP CONSTRAINT FK_t_VOSessionInstanceVersion_t_VOSessionInstance GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ResRef_t_ResourceDefinition]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ResRef] DROP CONSTRAINT FK_t_ResRef_t_ResourceDefinition GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Area_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Area] DROP CONSTRAINT FK_t_Area_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Creature_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Creature] DROP CONSTRAINT FK_t_Creature_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneAction_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneAction] DROP CONSTRAINT FK_t_CutsceneAction_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Item_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Item] DROP CONSTRAINT FK_t_Item_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Item_t_String1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Item] DROP CONSTRAINT FK_t_Item_t_String1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Merchant_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Merchant] DROP CONSTRAINT FK_t_Merchant_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Placeable_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Placeable] DROP CONSTRAINT FK_t_Placeable_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Plot_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Plot] DROP CONSTRAINT FK_t_Plot_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_PlotStatus_Journal_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_PlotStatus] DROP CONSTRAINT FK_t_PlotStatus_Journal_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringSound_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringSound] DROP CONSTRAINT FK_t_StringSound_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringVersion_t_String]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringVersion] DROP CONSTRAINT FK_t_StringVersion_t_String GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringExportHistoryAdjustmentLog_StringExportHistory]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringExportHistoryAdjustmentLog] DROP CONSTRAINT FK_StringExportHistoryAdjustmentLog_StringExportHistory GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Area_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Area] DROP CONSTRAINT FK_t_Area_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Area_t_ResRef1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Area] DROP CONSTRAINT FK_t_Area_t_ResRef1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaMusicVolume_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaMusicVolume] DROP CONSTRAINT FK_t_AreaMusicVolume_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaObject_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaObject] DROP CONSTRAINT FK_t_AreaObject_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AssociatedResource_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AssociatedResource] DROP CONSTRAINT FK_t_AssociatedResource_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Character_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Character] DROP CONSTRAINT FK_t_Character_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Character_t_ResRef2]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Character] DROP CONSTRAINT FK_t_Character_t_ResRef2 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Conversation_EndConversationPlotResRefID_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Conversation] DROP CONSTRAINT FK_t_Conversation_EndConversationPlotResRefID_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Conversation_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Conversation] DROP CONSTRAINT FK_t_Conversation_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Conversation_t_ResRef1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Conversation] DROP CONSTRAINT FK_t_Conversation_t_ResRef1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Conversation_t_ResRef3]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Conversation] DROP CONSTRAINT FK_t_Conversation_t_ResRef3 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationCinematics_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationCinematics] DROP CONSTRAINT FK_t_ConversationCinematics_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_ActionPlotResRefID_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_ActionPlotResRefID_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_ConditionPlotResRefID_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_ConditionPlotResRefID_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_ResRef1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_ResRef1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_ResRef2]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_ResRef2 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_ResRef3]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_ResRef3 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_ResRef4]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_ResRef4 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_ResRef5]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_ResRef5 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationTagMap_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationTagMap] DROP CONSTRAINT FK_t_ConversationTagMap_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Creature_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Creature] DROP CONSTRAINT FK_t_Creature_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Creature_t_ResRef1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Creature] DROP CONSTRAINT FK_t_Creature_t_ResRef1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Creature_t_ResRef2]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Creature] DROP CONSTRAINT FK_t_Creature_t_ResRef2 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Cutscene_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Cutscene] DROP CONSTRAINT FK_t_Cutscene_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Cutscene_t_ResRef1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Cutscene] DROP CONSTRAINT FK_t_Cutscene_t_ResRef1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Cutscene_t_ResRef2]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Cutscene] DROP CONSTRAINT FK_t_Cutscene_t_ResRef2 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneAction_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneAction] DROP CONSTRAINT FK_t_CutsceneAction_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneObject_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneObject] DROP CONSTRAINT FK_t_CutsceneObject_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Inventory_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Inventory] DROP CONSTRAINT FK_t_Inventory_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Item_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Item] DROP CONSTRAINT FK_t_Item_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Merchant_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Merchant] DROP CONSTRAINT FK_t_Merchant_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Module_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Module] DROP CONSTRAINT FK_t_Module_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Module_t_ResRef1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Module] DROP CONSTRAINT FK_t_Module_t_ResRef1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Module_t_ResRef2]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Module] DROP CONSTRAINT FK_t_Module_t_ResRef2 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleResRef_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleResRef] DROP CONSTRAINT FK_t_ModuleResRef_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Conversation_t_ResRef2]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Placeable] DROP CONSTRAINT FK_t_Conversation_t_ResRef2 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Placeable_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Placeable] DROP CONSTRAINT FK_t_Placeable_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Placeable_t_ResRef1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Placeable] DROP CONSTRAINT FK_t_Placeable_t_ResRef1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Plot_ParentPlotResRefID_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Plot] DROP CONSTRAINT FK_t_Plot_ParentPlotResRefID_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Plot_ScriptResRefID_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Plot] DROP CONSTRAINT FK_t_Plot_ScriptResRefID_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Plot_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Plot] DROP CONSTRAINT FK_t_Plot_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Script_Reference_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Script_Reference] DROP CONSTRAINT FK_t_Script_Reference_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Stage_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Stage] DROP CONSTRAINT FK_t_Stage_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringSound_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringSound] DROP CONSTRAINT FK_t_StringSound_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringVersion_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringVersion] DROP CONSTRAINT FK_t_StringVersion_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Trigger_t_ResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Trigger] DROP CONSTRAINT FK_t_Trigger_t_ResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleAssociation_t_Module]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleAssociation] DROP CONSTRAINT FK_t_ModuleAssociation_t_Module GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleAssociation_t_Module1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleAssociation] DROP CONSTRAINT FK_t_ModuleAssociation_t_Module1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleResRef_t_Module]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleResRef] DROP CONSTRAINT FK_t_ModuleResRef_t_Module GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleResRefVersion_t_Module]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleResRefVersion] DROP CONSTRAINT FK_t_ModuleResRefVersion_t_Module GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleVariable_t_Module]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleVariable] DROP CONSTRAINT FK_t_ModuleVariable_t_Module GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaAudioVolume_t_Area]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaAudioVolume] DROP CONSTRAINT FK_t_AreaAudioVolume_t_Area GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaInstanceAssociations_t_Area]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaInstanceAssociations] DROP CONSTRAINT FK_t_AreaInstanceAssociations_t_Area GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaMusicVolume_t_Area]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaMusicVolume] DROP CONSTRAINT FK_t_AreaMusicVolume_t_Area GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaObject_t_Area]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaObject] DROP CONSTRAINT FK_t_AreaObject_t_Area GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaReverbVolume_t_Area]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaReverbVolume] DROP CONSTRAINT FK_t_AreaReverbVolume_t_Area GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaSound_t_Area]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaSound] DROP CONSTRAINT FK_t_AreaSound_t_Area GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaWaypoint_t_Area]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaWaypoint] DROP CONSTRAINT FK_t_AreaWaypoint_t_Area GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationCinematics_t_Conversation]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationCinematics] DROP CONSTRAINT FK_t_ConversationCinematics_t_Conversation GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationLine_t_Conversation]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationLine] DROP CONSTRAINT FK_t_ConversationLine_t_Conversation GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationTransit_t_Conversation]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationTransition] DROP CONSTRAINT FK_t_ConversationTransit_t_Conversation GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationAnimations_t_ConversationLine]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationAnimations] DROP CONSTRAINT FK_t_ConversationAnimations_t_ConversationLine GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CreatureAbility_t_Creature]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CreatureAbility] DROP CONSTRAINT FK_t_CreatureAbility_t_Creature GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneObject_t_Cutscene]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneObject] DROP CONSTRAINT FK_t_CutsceneObject_t_Cutscene GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneActionFBEParameter_t_CutsceneAction]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneActionFBEParameter] DROP CONSTRAINT FK_t_CutsceneActionFBEParameter_t_CutsceneAction GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneActionTransition_t_CutsceneAction]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneActionTransition] DROP CONSTRAINT FK_t_CutsceneActionTransition_t_CutsceneAction GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneActionTransition_t_CutsceneAction1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneActionTransition] DROP CONSTRAINT FK_t_CutsceneActionTransition_t_CutsceneAction1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneTrack_t_CutsceneObject]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneTrack] DROP CONSTRAINT FK_t_CutsceneTrack_t_CutsceneObject GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_CutsceneAction_t_CutsceneTrack]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_CutsceneAction] DROP CONSTRAINT FK_t_CutsceneAction_t_CutsceneTrack GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ItemProperty_t_Item]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ItemProperty] DROP CONSTRAINT FK_t_ItemProperty_t_Item GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_MerchantRestrictedItem_t_Merchant]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_MerchantRestrictedItem] DROP CONSTRAINT FK_t_MerchantRestrictedItem_t_Merchant GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleResRefVersion_t_ModuleResRef]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleResRefVersion] DROP CONSTRAINT FK_t_ModuleResRefVersion_t_ModuleResRef GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScript_t_ModuleResRef_Character]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScript] DROP CONSTRAINT FK_t_VOScript_t_ModuleResRef_Character GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScript_t_ModuleResRef_Resource]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScript] DROP CONSTRAINT FK_t_VOScript_t_ModuleResRef_Resource GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Area_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Area] DROP CONSTRAINT FK_t_Area_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaList_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaList] DROP CONSTRAINT FK_t_AreaList_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AssociatedResource_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AssociatedResource] DROP CONSTRAINT FK_t_AssociatedResource_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Character_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Character] DROP CONSTRAINT FK_t_Character_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Conversation_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Conversation] DROP CONSTRAINT FK_t_Conversation_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ConversationTagMap_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ConversationTagMap] DROP CONSTRAINT FK_t_ConversationTagMap_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Creature_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Creature] DROP CONSTRAINT FK_t_Creature_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Cutscene_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Cutscene] DROP CONSTRAINT FK_t_Cutscene_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Inventory_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Inventory] DROP CONSTRAINT FK_t_Inventory_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Item_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Item] DROP CONSTRAINT FK_t_Item_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Map_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Map] DROP CONSTRAINT FK_t_Map_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Merchant_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Merchant] DROP CONSTRAINT FK_t_Merchant_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleResRef_C_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleResRef] DROP CONSTRAINT FK_t_ModuleResRef_C_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_ModuleResRef_S_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_ModuleResRef] DROP CONSTRAINT FK_t_ModuleResRef_S_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Placeable_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Placeable] DROP CONSTRAINT FK_t_Placeable_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Plot_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Plot] DROP CONSTRAINT FK_t_Plot_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Role_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Role] DROP CONSTRAINT FK_t_Role_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Script_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Script] DROP CONSTRAINT FK_t_Script_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Stage_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Stage] DROP CONSTRAINT FK_t_Stage_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringVersion_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringVersion] DROP CONSTRAINT FK_t_StringVersion_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Trigger_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Trigger] DROP CONSTRAINT FK_t_Trigger_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Variable_t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Variable] DROP CONSTRAINT FK_t_Variable_t_ModuleResRefVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_PlotStatus_t_Plot]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_PlotStatus] DROP CONSTRAINT FK_t_PlotStatus_t_Plot GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_PlotAssist_t_PlotStatus]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_PlotAssist] DROP CONSTRAINT FK_t_PlotAssist_t_PlotStatus GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_Script_Reference_t_Script]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_Script_Reference] DROP CONSTRAINT FK_t_Script_Reference_t_Script GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StageObject_t_Stage]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StageObject] DROP CONSTRAINT FK_t_StageObject_t_Stage GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageTag_StringLanguage]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageTag] DROP CONSTRAINT FK_StringLanguageTag_StringLanguage GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringLanguageVariant_t_StringLanguage]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariant] DROP CONSTRAINT FK_t_StringLanguageVariant_t_StringLanguage GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptInstance_t_StringLanguage]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptInstance] DROP CONSTRAINT FK_t_VOScriptInstance_t_StringLanguage GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOSession_t_StringLanguage]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOSession] DROP CONSTRAINT FK_t_VOSession_t_StringLanguage GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguage_StringLanguageTag]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguage] DROP CONSTRAINT FK_StringLanguage_StringLanguageTag GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageVariantVersion_StringLanguageVariant]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariantVersion] DROP CONSTRAINT FK_StringLanguageVariantVersion_StringLanguageVariant GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringText_t_StringLanguageVariant]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringText] DROP CONSTRAINT FK_t_StringText_t_StringLanguageVariant GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptStringRevision_t_StringLanguageVariant]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptStringRevision] DROP CONSTRAINT FK_t_VOScriptStringRevision_t_StringLanguageVariant GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageVariant_StringLanguageVariantVersion_1]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariant] DROP CONSTRAINT FK_StringLanguageVariant_StringLanguageVariantVersion_1 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageVariant_StringLanguageVariantVersion_2]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariant] DROP CONSTRAINT FK_StringLanguageVariant_StringLanguageVariantVersion_2 GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageVariantText_StringLanguageVariantVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariantText] DROP CONSTRAINT FK_StringLanguageVariantText_StringLanguageVariantVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_StringLanguageVariantVersion_StringLanguageVariantVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringLanguageVariantVersion] DROP CONSTRAINT FK_StringLanguageVariantVersion_StringLanguageVariantVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptInstanceString_t_StringLanguageVariantVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptInstanceString] DROP CONSTRAINT FK_t_VOScriptInstanceString_t_StringLanguageVariantVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptInstanceString_t_StringText]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptInstanceString] DROP CONSTRAINT FK_t_VOScriptInstanceString_t_StringText GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StringText_t_StringVersion]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StringText] DROP CONSTRAINT FK_t_StringText_t_StringVersion GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptBatchPrint_t_VOScript]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptBatchPrint] DROP CONSTRAINT FK_t_VOScriptBatchPrint_t_VOScript GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptInstance_t_VOScript]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptInstance] DROP CONSTRAINT FK_t_VOScriptInstance_t_VOScript GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaAudioVolumeGeometry_t_AreaAudioVolume]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaAudioVolumeGeometry] DROP CONSTRAINT FK_t_AreaAudioVolumeGeometry_t_AreaAudioVolume GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaAudioVolumeSound_t_AreaAudioVolume]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaAudioVolumeSound] DROP CONSTRAINT FK_t_AreaAudioVolumeSound_t_AreaAudioVolume GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaReverbVolumeGeometry_t_AreaReverbVolume]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaReverbVolumeGeometry] DROP CONSTRAINT FK_t_AreaReverbVolumeGeometry_t_AreaReverbVolume GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_MapTrailPoint_t_MapTrail]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_MapTrailPoint] DROP CONSTRAINT FK_t_MapTrailPoint_t_MapTrail GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaMusicVolumeGeometry_t_AreaMusicVolume]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaMusicVolumeGeometry] DROP CONSTRAINT FK_t_AreaMusicVolumeGeometry_t_AreaMusicVolume GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaObjectGeometry_t_AreaObject]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaObjectGeometry] DROP CONSTRAINT FK_t_AreaObjectGeometry_t_AreaObject GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_AreaObjectVariable_t_AreaObject]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_AreaObjectVariable] DROP CONSTRAINT FK_t_AreaObjectVariable_t_AreaObject GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_MapPin_t_Map]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_MapPin] DROP CONSTRAINT FK_t_MapPin_t_Map GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_MapTrail_t_Map]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_MapTrail] DROP CONSTRAINT FK_t_MapTrail_t_Map GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StageFBEParameter_t_StageObject]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StageFBEParameter] DROP CONSTRAINT FK_t_StageFBEParameter_t_StageObject GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_StageObjectReference_t_StageObject]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_StageObjectReference] DROP CONSTRAINT FK_t_StageObjectReference_t_StageObject GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptBatchPrint_t_VOScriptInstance]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptBatchPrint] DROP CONSTRAINT FK_t_VOScriptBatchPrint_t_VOScriptInstance GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptInstanceString_t_VOScriptInstance]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptInstanceString] DROP CONSTRAINT FK_t_VOScriptInstanceString_t_VOScriptInstance GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOSessionInstanceVersion_t_VOScriptInstance]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOSessionInstanceVersion] DROP CONSTRAINT FK_t_VOSessionInstanceVersion_t_VOScriptInstance GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptBatchPrint_t_VOScriptInstanceString]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptBatchPrint] DROP CONSTRAINT FK_t_VOScriptBatchPrint_t_VOScriptInstanceString GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptInstanceString_t_VOScriptInstanceString]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptInstanceString] DROP CONSTRAINT FK_t_VOScriptInstanceString_t_VOScriptInstanceString GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOScriptInstanceStringStatus_t_VOScriptInstanceString]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOScriptInstanceStringStatus] DROP CONSTRAINT FK_t_VOScriptInstanceStringStatus_t_VOScriptInstanceString GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOSessionInstanceVersion_t_VOSession]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOSessionInstanceVersion] DROP CONSTRAINT FK_t_VOSessionInstanceVersion_t_VOSession GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_t_VOSessionVersion_t_VOSession]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[t_VOSessionVersion] DROP CONSTRAINT FK_t_VOSessionVersion_t_VOSession GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_ModuleType_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_ModuleType_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_ResourceTables_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_ResourceTables_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringExportLabel_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringExportLabel_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringTable_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringTable_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringType_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringType_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringVariant_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringVariant_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_VOScriptInstanceManagementInsert]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_VOScriptInstanceManagementInsert] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_ResourceDefinition_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_ResourceDefinition_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_ResourceTableRelationship_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_ResourceTableRelationship_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_String_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_String_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_Module_Delete]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_Module_Delete] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_Module_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_Module_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringSound_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringSound_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_ModuleAssociation_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_ModuleAssociation_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_ModuleResRef_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_ModuleResRef_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_Script_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_Script_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringLanguage_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringLanguage_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringLanguageVariant_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringLanguageVariant_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringText_Update]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringText_Update] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_StringText_Insert]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_StringText_Insert] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_VOSessionInstanceVersionInsert]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_VOSessionInstanceVersionInsert] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_VOSessionVersionInsert]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_VOSessionVersionInsert] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_VOScriptInstanceInsert]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_VOScriptInstanceInsert] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_VOScriptInstanceStringInsert]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_VOScriptInstanceStringInsert] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_VOScriptInstanceStringUpdate]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_VOScriptInstanceStringUpdate] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_VOScriptInstanceStringStatus_Insert]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_VOScriptInstanceStringStatus_Insert] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetModuleResRefVersionID]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetModuleResRefVersionID] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetProcessedIncludes]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetProcessedIncludes] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetResourceName]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetResourceName] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetResourceTag]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetResourceTag] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetStringIDsWithVOHardTiming]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetStringIDsWithVOHardTiming] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetVOScriptConversationLineCounts]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetVOScriptConversationLineCounts] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_ParseIncludesFromScript]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_ParseIncludesFromScript] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_StringsRequiringTranslation]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_StringsRequiringTranslation] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetLockPermission]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetLockPermission] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetModuleHierarchy]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetModuleHierarchy] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetProjectStringLanguageID]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetProjectStringLanguageID] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_GetTopLevelFolder]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_GetTopLevelFolder] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_TextEquals]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_TextEquals] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_WordCount]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_WordCount] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[udf_nTextEquals]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[udf_nTextEquals] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_AddResRef]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_AddResRef] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_AddString]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_AddString] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_AdjustVOScriptLineCharacterInternalForStats]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_AdjustVOScriptLineCharacterInternalForStats] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_AreaObjectInstanceChanges]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_AreaObjectInstanceChanges] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_BatchPrintVOScriptLines]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_BatchPrintVOScriptLines] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CheckinResource]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CheckinResource] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CheckoutResource]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CheckoutResource] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CreateNewStringVersion]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CreateNewStringVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CreateScratchStringLanguageVariantVersion]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CreateScratchStringLanguageVariantVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CreateVOSession]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CreateVOSession] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_DeleteResource]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_DeleteResource] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_DeleteString]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_DeleteString] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_DetermineVOScriptLineCharacters]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_DetermineVOScriptLineCharacters] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_DoNotReRecordVOScriptString]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_DoNotReRecordVOScriptString] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetAllStringsRequiringRecording]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetAllStringsRequiringRecording] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetAreaList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetAreaList] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetAreaListList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetAreaListList] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetCharacterLineCountsPerResource]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetCharacterLineCountsPerResource] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetCharacterList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetCharacterList] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetCharacterWordAndLineCounts]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetCharacterWordAndLineCounts] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetConversationTagToCharacterList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetConversationTagToCharacterList] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetForeignText]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetForeignText] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetInvalidConversationTagCharacters]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetInvalidConversationTagCharacters] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetLocalizationStatistics]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetLocalizationStatistics] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetMostRecentLocalizationDatesForVOScript]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetMostRecentLocalizationDatesForVOScript] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetResourceHistoryListByID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetResourceHistoryListByID] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetResourceInfoByID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetResourceInfoByID] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetResourceInfoByName]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetResourceInfoByName] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetResourceListByModuleAndType]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetResourceListByModuleAndType] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetResourceReferenceList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetResourceReferenceList] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetRoleList]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetRoleList] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetVOScriptMaintenanceData]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetVOScriptMaintenanceData] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetVOScriptStats]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetVOScriptStats] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetVOScriptStringsRequiringForeignRecording]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetVOScriptStringsRequiringForeignRecording] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetVOScriptStringsRequiringRecording]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetVOScriptStringsRequiringRecording] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ImportStringsNotInRange]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_ImportStringsNotInRange] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_InsertStringLanguageVariantText]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_InsertStringLanguageVariantText] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_LockResource]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_LockResource] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ProcessPendingStringExportHistoryStatus]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_ProcessPendingStringExportHistoryStatus] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ProcessStringImportData]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_ProcessStringImportData] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_RerecordVOScript]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_RerecordVOScript] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_RestoreResourceVersion]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_RestoreResourceVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_SetStringReTranslationState]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_SetStringReTranslationState] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_UndoStringImportSession]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_UndoStringImportSession] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_UnprintVOScriptInstance]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_UnprintVOScriptInstance] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_UpdateResourceProperties]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_UpdateResourceProperties] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_UpdateVOScriptListing]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_UpdateVOScriptListing] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_ValidateResRefName]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_ValidateResRefName] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_AddModuleAssociation]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_AddModuleAssociation] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_AddNewModule]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_AddNewModule] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_DeleteModuleAssociations]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_DeleteModuleAssociations] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_AddStringTable]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_AddStringTable] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetNextStringID]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetNextStringID] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CreateStringExportLabel]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CreateStringExportLabel] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CreateStringImportSession]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CreateStringImportSession] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CreateVOSessionInstance]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CreateVOSessionInstance] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetResourceLineCharacters]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetResourceLineCharacters] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_SetCurrentStringImportSession]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_SetCurrentStringImportSession] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_CreateNewResourceVersion]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_CreateNewResourceVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[bsp_GetLocalizationStatisticsVerbose]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[bsp_GetLocalizationStatisticsVerbose] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_ConversationLineSpeakerTag]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_ConversationLineSpeakerTag] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_StringVersionText]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_StringVersionText] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_StringsRequiringTranslation]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_StringsRequiringTranslation] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_StringsRequiringTranslationByResourceVersion]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_StringsRequiringTranslationByResourceVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_UserResourceInfo]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_UserResourceInfo] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_VOScriptStringLanguageVariant]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_VOScriptStringLanguageVariant] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_ModuleTree]') and OBJECTPROPERTY(id, N'IsView') = 1) drop view [dbo].[v_ModuleTree] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaList]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaList] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaMusicVolume]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaMusicVolume] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaObject]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaObject] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AssociatedResource]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AssociatedResource] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Character]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Character] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ConversationCinematics]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ConversationCinematics] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ConversationTagMap]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ConversationTagMap] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ConversationTransition]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ConversationTransition] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Inventory]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Inventory] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Map]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Map] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Role]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Role] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StageObject]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StageObject] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringLanguageVariantText]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringLanguageVariantText] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScriptBatchPrint]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScriptBatchPrint] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScriptInstance]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScriptInstance] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScriptInstanceString]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScriptInstanceString] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScriptInstanceStringStatus]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScriptInstanceStringStatus] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScriptStringRevision]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScriptStringRevision] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOSession]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOSession] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaAudioVolume]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaAudioVolume] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaAudioVolumeGeometry]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaAudioVolumeGeometry] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaAudioVolumeSound]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaAudioVolumeSound] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaInstanceAssociations]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaInstanceAssociations] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaMusicVolumeGeometry]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaMusicVolumeGeometry] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaObjectGeometry]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaObjectGeometry] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaObjectVariable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaObjectVariable] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaReverbVolume]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaReverbVolume] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaReverbVolumeGeometry]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaReverbVolumeGeometry] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaSound]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaSound] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_AreaWaypoint]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_AreaWaypoint] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ConversationAnimations]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ConversationAnimations] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CreatureAbility]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_CreatureAbility] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CutsceneActionFBEParameter]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_CutsceneActionFBEParameter] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CutsceneActionTransition]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_CutsceneActionTransition] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ItemProperty]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ItemProperty] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_MapPin]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_MapPin] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_MapTrail]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_MapTrail] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_MapTrailPoint]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_MapTrailPoint] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_MerchantRestrictedItem]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_MerchantRestrictedItem] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_PlotAssist]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_PlotAssist] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StageFBEParameter]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StageFBEParameter] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StageObjectReference]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StageObjectReference] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOSessionInstanceVersion]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOSessionInstanceVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOSessionVersion]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOSessionVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Variable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Variable] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Area]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Area] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Conversation]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Conversation] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ConversationLine]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ConversationLine] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Creature]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Creature] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Cutscene]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Cutscene] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CutsceneAction]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_CutsceneAction] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CutsceneObject]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_CutsceneObject] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CutsceneTrack]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_CutsceneTrack] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Item]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Item] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Merchant]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Merchant] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ModuleResRef]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ModuleResRef] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ModuleResRefVersion]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ModuleResRefVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Placeable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Placeable] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Plot]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Plot] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_PlotStatus]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_PlotStatus] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Script]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Script] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Script_Reference]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Script_Reference] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Stage]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Stage] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringLanguage]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringLanguage] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringLanguageTag]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringLanguageTag] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringLanguageVariant]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringLanguageVariant] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringLanguageVariantVersion]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringLanguageVariantVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringText]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringText] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringVersion]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringVersion] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Trigger]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Trigger] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScript]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScript] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ModuleAssociation]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ModuleAssociation] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ModuleVariable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ModuleVariable] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_Module]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_Module] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringSound]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringSound] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ResRef]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ResRef] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringExportHistoryAdjustmentLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringExportHistoryAdjustmentLog] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ResourceDefinition]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ResourceDefinition] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ResourceTableRelationship]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ResourceTableRelationship] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_String]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_String] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringExportHistory]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringExportHistory] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringExportLabelResourceStats]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringExportLabelResourceStats] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringExportLabelStringTypeStats]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringExportLabelStringTypeStats] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_CharacterDelta]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_CharacterDelta] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_GlobalParameters]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_GlobalParameters] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_JobProcessInformation]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_JobProcessInformation] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_KeyGenStringID]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_KeyGenStringID] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ModuleType]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ModuleType] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_ResourceTables]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_ResourceTables] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringExportLabel]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringExportLabel] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringImportSession]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringImportSession] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringTable] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringType]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringType] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_StringVariant]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_StringVariant] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScriptInstanceManagement]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScriptInstanceManagement] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOScriptLineCharacterInternal]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOScriptLineCharacterInternal] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_VOSessionInstance]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[t_VOSessionInstance] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE FUNCTION [dbo].[udf_GetLockPermission] () RETURNS BIT AS BEGIN DECLARE @bValid BIT select @bValid = case count(*) when 0 then 0 else 1 end from sysusers u join sysmembers m on u.uid = m.memberuid join sysusers g on g.name = 'bw_db_lock' and g.uid = m.groupuid and g.issqlrole = 1 join master.dbo.syslogins sl on sl.sid = u.sid and sl.loginname = suser_sname() return (@bValid) END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_GetLockPermission] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE FUNCTION [dbo].[udf_GetModuleHierarchy] (@a_iModuleID int, @a_bUseModuleHierarchy bit) RETURNS @RESULT_SET TABLE (ModuleID int) AS BEGIN IF (@a_bUseModuleHierarchy = 1) BEGIN INSERT @RESULT_SET SELECT mt.AssociatedModuleID FROM v_ModuleTree mt WHERE mt.ModuleID = @a_iModuleID END ELSE BEGIN INSERT @RESULT_SET SELECT @a_iModuleID END return END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[udf_GetModuleHierarchy] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------ -- udf_GetProjectStringLanguageID -- Chris Christou -- October 10, 2006 ------------------------------------------------------------------------------------------ -- This function should be used to load up the StringLanguageID used for the project. -- Hardcoding of a specific integer should be avoided in C++ and SQL code everywhere -- except here. -- -- Params: NOTHING -- Returns: t_StringLanguage.[ID] of the language this project is being developed in. -- Note: its probably English. ------------------------------------------------------------------------------------------ CREATE FUNCTION [dbo].[udf_GetProjectStringLanguageID] ( ) RETURNS int AS BEGIN ------------------------------------------------------------------------ -- NOTE: We could select for the criteria where name = english, but -- returning the ID (ie: hardcoding it here) will be more efficient. ------------------------------------------------------------------------ RETURN 1 END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_GetProjectStringLanguageID] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------ -- udf_GetTopLevelFolder -- Chris Christou -- April 09, 2008 ------------------------------------------------------------------------------------------ -- Given a t_ModuleResRefVersion.Folder value, this returns the top level folder. -- This returned value is assumed to be the "general plot" in the Localization world, -- so this UDF is intended mostly as a convenience for some of the loc web reports. -- -- A slash (\) character is looked for, and the first one found defines the folder. -- If a slash is not found, the whole folder is returned. -- -- Params: @a_sFolder -- t_ModuleResRefVersion.Folder value -- Returns: varchar string of the top level folder. -- ------------------------------------------------------------------------------------------ CREATE FUNCTION [dbo].[udf_GetTopLevelFolder] ( @a_sFolder varchar(128) ) RETURNS varchar(128) AS BEGIN DECLARE @iPos int -- Dont look in position one. Most folders start with the slash character. SET @iPos = charindex('\', @a_sFolder, 2) IF (@iPos = 0) BEGIN RETURN @a_sFolder END RETURN SUBSTRING(@a_sFolder, 1, @iPos) END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_GetTopLevelFolder] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------ -- udf_TextEquals -- Chris Christou -- March 27, 2007 ------------------------------------------------------------------------------------------ -- This function was copied from AndyD's udf_TextEquals on Mass Effect. It -- is for TEXT comparisons, and not NTEXT comparisons. -- -- Params: @a_t1, @a_t2 -- TEXT strings to compare -- Returns: 1 if text is equal, 0 if not -- Note: 0 is returned if either/both strings are NULL -- ------------------------------------------------------------------------------------------ CREATE FUNCTION [dbo].[udf_TextEquals] ( @a_t1 text, @a_t2 text ) RETURNS int AS BEGIN DECLARE @l_iLen INT DECLARE @l_iBatch INT DECLARE @l_iSteps INT IF @a_t2 IS NULL OR @a_t1 IS NULL RETURN 0 SET @l_iLen = Datalength( @a_t1 ) IF @l_iLen <> Datalength( @a_t2 ) RETURN 0 SET @l_iSteps = CEILING( @l_iLen / 4000.0 ) SET @l_iBatch = 0 WHILE @l_iBatch < @l_iSteps BEGIN IF SUBSTRING( @a_t1, 1+@l_iBatch*4000, 4000 ) <> SUBSTRING( @a_t2, 1+@l_iBatch*4000, 4000 ) return 0 SET @l_iBatch = @l_iBatch + 1 END RETURN 1 END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_TextEquals] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE FUNCTION [dbo].[udf_WordCount] (@a_tString text) RETURNS INT AS BEGIN IF (@a_tString IS NULL OR @a_tString LIKE '' ) RETURN 0 DECLARE @sSeparator VARCHAR(10) , @iWords INT , @bInWord BIT , @iLength INT , @iCur INT , @iSign INT Select @sSeparator = SPACE(1) + CHAR(9) + CHAR(10) + CHAR(13) , @iLength = DATALENGTH(@a_tString) , @iWords = 0 , @iCur = 1 , @bInWord = 0 WHILE @iCur <= @iLength BEGIN SELECT @iSign = 1 - SIGN(CHARINDEX(SUBSTRING( @a_tString, @iCur, 1 ), @sSeparator)) , @iWords = @iWords + ((@bInWord - @iSign) * @bInWord) , @bInWord = @iSign , @iCur = @iCur + 1 END RETURN (@iWords + @bInWord) END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_WordCount] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------ -- udf_nTextEquals -- Chris Christou -- June 26, 2006 ------------------------------------------------------------------------------------------ -- This function is similar to AndyD's udf_TextEquals on Mass Effect, only it -- is for NTEXT and not TEXT comparisons. -- -- Params: @a_t1, @a_t2 -- NTEXT strings to compare -- Returns: 1 if text is equal, 0 if not -- Note: 0 is returned if either/both strings are NULL -- ------------------------------------------------------------------------------------------ CREATE FUNCTION [dbo].[udf_nTextEquals] ( @a_t1 ntext, @a_t2 ntext ) RETURNS int AS BEGIN DECLARE @l_iLen INT DECLARE @l_iBatch INT DECLARE @l_iSteps INT IF @a_t2 IS NULL OR @a_t1 IS NULL RETURN 0 SET @l_iLen = DATALENGTH( @a_t1 ) / 2 IF @l_iLen <> (DATALENGTH( @a_t2 ) / 2) RETURN 0 -- 4000 is the max amount of nText that can be processed at once SET @l_iSteps = CEILING( @l_iLen / 4000.0 ) SET @l_iBatch = 0 WHILE @l_iBatch < @l_iSteps BEGIN IF SUBSTRING( @a_t1, 1+@l_iBatch*4000, 4000 ) <> SUBSTRING( @a_t2, 1+@l_iBatch*4000, 4000 ) COLLATE SQL_Latin1_General_CP1_CS_AS return 0 SET @l_iBatch = @l_iBatch + 1 END RETURN 1 END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_nTextEquals] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE FUNCTION [dbo].[udf_GetModuleResRefVersionID] ( @a_iResRefID int, @a_iModuleID int, @a_bUseModuleTree bit, @a_sUserName varchar(32)) RETURNS int AS BEGIN declare @iVersionID int select @iVersionID = (select isnull(mrrvs.id, mrrvc.id) from t_ModuleResRef mrr join t_ModuleResRefVersion mrrvc on mrr.CurrentModuleResRefVersionID = mrrvc.ID left outer join t_ModuleResRefVersion mrrvs on mrr.ScratchModuleResRefVersionID = mrrvs.ID and mrrvs.UserName = @a_sUserName join dbo.udf_GetModuleHierarchy(@a_iModuleID, @a_bUseModuleTree) mt on mrr.ModuleID = mt.ModuleID where mrr.ResRefID = @a_iResRefID) RETURN (@iVersionID) END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_GetModuleResRefVersionID] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE FUNCTION [dbo].[udf_GetProcessedIncludes] () /******************************************************************************* // udf_GetProcessedIncludes // // Copyright (c) 2008 BioWare Corp. // // The source code included in this file is confidential, // secret, or proprietary information of BioWare Corp. It // may not be used in whole or in part without express // written permission from BioWare Corp. // //////////////////////////////////////////////////////////////////////////////// // Processes the list of scripting #include references to // present the full path of all included files from any root. // NOTE: As per the script compiler, when processing the includes // of a root file, any include file is only processed once even if // it is included more than once. For example if script "w" includes // scripts "x" and "y" and both "x" and "y" include "z", "z" only // gets included once. Effectively every include file has a built // in header guard. For those example four files the results would // show: // w -> x w includes x // w -> x -> z w includes z ( through x ) // w -> y w includes y // x -> z x includes z // y -> z y includes z //////////////////////////////////////////////////////////////////////////////// // // Owned by: Andy W. Desplenter // Created on: May 18, 2008 // *******************************************************************************/ RETURNS @Return TABLE ( [Root] INT, [RootName] VARCHAR(128), [RootSize] INT, [Level] INT, [Leaf] INT, [LeafName] VARCHAR(128), [LeafSize] INT, [IncludePath] VARCHAR(7750) ) AS BEGIN DECLARE @Level INT DECLARE @RowCt INT DECLARE @Includes TABLE ( [Parent] INT, [Child] INT, PRIMARY KEY ( [Parent], [Child] ) ) DECLARE @Names TABLE ( [ResRefID] INT, [ResRefName] VARCHAR(128), [Size] INT, PRIMARY KEY ( [ResRefID] ) ) DECLARE @Results TABLE ( [Root] INT, [Level] INT, [Leaf] INT, [IncludePath] VARCHAR(8000), PRIMARY KEY ( [Root], [Leaf] ) ) -- get ResRefIDs for parent and child of all 'C'urrent include references INSERT INTO @Includes ( [Parent], [Child] ) SELECT mrrv.[ResRefID], sr.[ReferencedResRefID] FROM t_Script_Reference sr, t_ModuleResRefVersion mrrv WHERE mrrv.[ID] = sr.[ModuleResRefVersionID] AND mrrv.[Status] = 'C' -- get 'C'urrent Name and resource type for each ResRefID in any include INSERT INTO @Names ( [ResRefID], [ResRefName], [Size] ) SELECT DISTINCT mrrv.[ResRefID], mrrv.[Name] + '.' + rr.[ResType], (select sum(sz) from ( select datalength(a.Text) as sz from t_script a where mrrv.ID = a.ModuleResRefVersionID UNION select 24+ datalength(mrrv.Name)*3 +sum(datalength(b.Name) + 15 + floor(log10(b.flag+.1)+1)) from t_plotstatus b where mrrv.ID = b.ModuleResRefVersionID ) a ) FROM t_ModuleResRefVersion mrrv, t_ResRef rr WHERE mrrv.[Status] = 'C' AND mrrv.[ResRefID] = rr.[ID] AND mrrv.[ResRefID] IN ( SELECT [Parent] FROM @Includes UNION SELECT [Child] FROM @Includes ) SET @Level = 0 -- seed first layer, with any resref that is ever a parent INSERT INTO @Results ( [Root], [Level], [Leaf], [IncludePath] ) SELECT DISTINCT [Parent], @Level, [Parent], [ResRefName] FROM @Includes I, @Names N WHERE I.[Parent] = N.[ResRefID] SET @RowCt = @@ROWCOUNT -- while there are still rows to add WHILE @RowCt > 0 -- AND @Level < 3 BEGIN -- select @Level as LoopNo, @RowCt as RowCt SET @Level = @Level + 1 -- uses group by because w -> x -> z and w -> y -> z can happen INSERT INTO @Results ( [Root], [Level], [Leaf], [IncludePath] ) SELECT a, b, c, MIN(d) -- use "first" path to new nested include "w -> x -> z" FROM ( SELECT DISTINCT R1.[Root] a, @Level b, I.[Child] c, R1.[IncludePath] + ' -> ' + N.[ResRefName] d FROM @Includes I, @Names N, @Results R1 WHERE R1.[Leaf] = I.[Parent] AND N.[ResRefID] = I.[Child] AND R1.[Level] = @Level - 1 -- only add on to previous layer AND NOT EXISTS -- make sure this included child hasn't already been included in a lower layer ( SELECT 1 FROM @Results R2 WHERE R1.[Root] = R2.[Root] AND I.[Child] = R2.[Leaf] ) ) x GROUP BY a, b, c SET @RowCt = @@ROWCOUNT END INSERT INTO @Return SELECT [Root], N1.[ResRefName] AS "RootName", N1.[Size] AS "RootSize", [Level], [Leaf], N2.[ResRefName] AS "LeafName", N2.[Size] AS "LeafSize", [IncludePath] FROM @Results, @Names N1, @Names N2 WHERE [Level] > 0 AND N1.[ResRefID] = [Root] AND N2.[ResRefID] = [Leaf] ORDER BY [IncludePath] RETURN END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[udf_GetProcessedIncludes] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE FUNCTION [dbo].[udf_GetResourceName] ( @a_iModuleResRefVersionID int) RETURNS varchar(128) AS BEGIN declare @ResType varchar(4) declare @Name varchar(128) select @Name = NULL select @ResType = rr.restype from t_ResRef rr join t_ModuleResRefVersion mrrv on rr.id = mrrv.ResRefID and mrrv.id = @a_iModuleResRefVersionID if @ResType = 'are' BEGIN select @Name = st1.text from t_area t1 join t_StringText st1 on st1.moduleresrefVersionid = t1.moduleresrefversionid and st1.stringid = t1.namestringid and st1.stringlanguagevariantid = 1 and st1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'utc' BEGIN select @Name = st1.text from t_Creature t1 join t_StringText st1 on st1.moduleresrefVersionid = t1.moduleresrefversionid and st1.stringid = t1.namestringid and st1.stringlanguagevariantid = 1 and st1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'uti' BEGIN select @Name = st1.text from t_Item t1 join t_StringText st1 on st1.moduleresrefVersionid = t1.moduleresrefversionid and st1.stringid = t1.namestringid and st1.stringlanguagevariantid = 1 and st1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'utm' BEGIN select @Name = st1.text from t_Merchant t1 join t_StringText st1 on st1.moduleresrefVersionid = t1.moduleresrefversionid and st1.stringid = t1.namestringid and st1.stringlanguagevariantid = 1 and st1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'utp' BEGIN select @Name = st1.text from t_Placeable t1 join t_StringText st1 on st1.moduleresrefVersionid = t1.moduleresrefversionid and st1.stringid = t1.namestringid and st1.stringlanguagevariantid = 1 and st1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END DONE: return (@Name) END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_GetResourceName] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE FUNCTION [dbo].[udf_GetResourceTag] ( @a_iModuleResRefVersionID int) RETURNS varchar(32) AS BEGIN declare @ResType varchar(4) declare @Tag varchar(32) select @Tag = NULL select @ResType = rr.restype from t_ResRef rr join t_ModuleResRefVersion mrrv on rr.id = mrrv.ResRefID and mrrv.id = @a_iModuleResRefVersionID if @ResType = 'are' BEGIN select @Tag = mrrv.[Name] from t_ModuleResRefVersion mrrv where mrrv.ID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'utc' BEGIN select @Tag = t1.tag from t_Creature t1 where t1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'uti' BEGIN select @Tag = t1.tag from t_Item t1 where t1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'utm' BEGIN select @Tag = t1.tag from t_Merchant t1 where t1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'utp' BEGIN select @Tag = t1.tag from t_Placeable t1 where t1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'stg' BEGIN select @Tag = t1.tag from t_Stage t1 where t1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END if @ResType = 'utt' BEGIN select @Tag = t1.tag from t_Trigger t1 where t1.ModuleResRefVersionID = @a_iModuleResRefVersionID GOTO DONE END DONE: return (@Tag) END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[udf_GetResourceTag] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO ------------------------------------------------------------------------ -- FUNCTION: udf_GetStringIDsWithVOHardTiming ------------------------------------------------------------------------ -- Created By: Chris Christou -- Created On: August 24, 2009 -- -- Description: -- Returns a list of StringIDs that have hard-timing -- restrictions on them. -- Applies to VO Recordings, and foreign translations. -- -- Parameters: -- (none) -- -- Returns: -- set of StringIDs ------------------------------------------------------------------------ CREATE FUNCTION [dbo].[udf_GetStringIDsWithVOHardTiming] () RETURNS @RESULT_SET TABLE ( [StringID] int ) AS BEGIN -- Create a temp location to gather data. -- We do this because some times the same StringID will -- be inserted more than once. DECLARE @tblStringID TABLE ( [StringID] int NOT NULL ) -- Take the Conversation Line Strings that are flagged -- to use the Animation Duration. INSERT @tblStringID ([StringID]) SELECT cl.[TextStringID] FROM t_ModuleResRefVersion mrv JOIN t_ConversationLine cl WITH ( NOLOCK ) ON mrv.[ID] = cl.[ModuleResRefVersionID] AND mrv.[Status] = 'C' AND cl.[UseAnimationDuration] = 1 -- Take all Conversation Lines on conversations flagged with VOHardTimeRestriction INSERT @tblStringID ([StringID]) SELECT cl.[TextStringID] FROM t_ModuleResRefVersion mrv JOIN t_Conversation c WITH ( NOLOCK ) ON mrv.[ID] = c.[ModuleResRefVersionID] AND mrv.[Status] = 'C' AND c.[VOHardTimeRestriction] = 1 JOIN t_ConversationLine cl WITH ( NOLOCK ) ON mrv.[ID] = cl.[ModuleResRefVersionID] -- Take all Cutscene Referenced Strings for Cutscenes -- marked to NOT Play until VO Completes. INSERT @tblStringID ([StringID]) SELECT ca.int1 FROM t_ModuleResRefVersion mrv JOIN t_Cutscene c WITH ( NOLOCK ) ON mrv.[ID] = c.[ModuleResRefVersionID] AND mrv.[Status] = 'C' AND c.[PlayUntilVOCompletes] = 0 JOIN t_CutsceneAction ca WITH ( NOLOCK ) ON ca.[ModuleResRefVersionID] = mrv.[ID] AND ca.[Type] = 3 AND ca.[int1] != -1 -- Take all Cutscenes that reference more than one String. -- Include all strings in these particular cutscenes. DECLARE @tblCutsceneReferenceCount TABLE ( [ModuleID] int, [ResRefID] int, [RefCount] int ) INSERT @tblCutsceneReferenceCount SELECT mrv.ModuleID, mrv.ResRefID, count(*) FROM dbo.t_CutsceneAction ca WITH ( NOLOCK ) JOIN dbo.t_ModuleResRefVersion mrv ON ca.ModuleResRefVersionID = mrv.ID AND mrv.Status = 'C' AND ca.Type = 3 AND ca.int1 != -1 GROUP BY mrv.ModuleID, mrv.ResRefID HAVING COUNT(*) > 1 INSERT @tblStringID ([StringID]) SELECT ca.int1 FROM dbo.t_CutsceneAction ca WITH ( NOLOCK ) JOIN dbo.t_ModuleResRefVersion mrv ON ca.ModuleResRefVersionID = mrv.ID AND mrv.Status = 'C' JOIN @tblCutsceneReferenceCount crc ON mrv.ModuleID = crc.ModuleID AND mrv.ResRefID = crc.ResRefID AND ca.Type = 3 AND ca.int1 != -1 -- Take the distinct list of StringIDs, and place it in the return table INSERT @RESULT_SET ( [StringID] ) SELECT DISTINCT [StringID] FROM @tblStringID -- Done RETURN END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[udf_GetStringIDsWithVOHardTiming] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO ------------------------------------------------------------------------ -- FUNCTION: udf_GetVOScriptConversationLineCounts ------------------------------------------------------------------------ -- Created By: Chris Christou -- Created On: September 02, 2009 -- -- Description: -- Used by the VO Script Generator to show the absolute -- NPC and PC line counts of conversations used by VO Scripts. -- -- Blank lines are excluded. -- -- Parameters: -- < none > -- -- Returns Table: -- Conversation ModuleID/ResRefID -- IsPC - true: Line count is for PC Lines, false: Line count is for NPC Lines -- LineCount - See IsPC ------------------------------------------------------------------------ CREATE FUNCTION [dbo].[udf_GetVOScriptConversationLineCounts] ( ) RETURNS @RESULT_SET TABLE ( [ModuleID] int, [ResRefID] int, [IsPC] bit, [LineCount] int ) AS BEGIN INSERT @RESULT_SET SELECT mrv.[ModuleID], mrv.[ResRefID], cl.[IsPC], COUNT(*) as [LineCount] FROM t_ConversationLine cl WITH ( NOLOCK ) JOIN t_ModuleResRefVersion mrv ON cl.[ModuleResRefVersionID] = mrv.[ID] AND mrv.[Status] = 'C' JOIN ( -- Filter the resources down to those known to be used by VO Scripts select DISTINCT ResourceModuleID, ResourceResRefID from t_VOScript WHERE [IsActive] = 1 ) x on mrv.ModuleID = x.ResourceModuleID and mrv.ResRefID = x.ResourceResRefID JOIN t_StringText st WITH ( NOLOCK ) ON cl.[TextStringID] = st.[StringID] AND mrv.[ID] = st.[ModuleResRefVersionID] AND st.[WordCount] > 0 GROUP BY mrv.[ModuleID], mrv.[ResRefID], cl.[IsPC] RETURN END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[udf_GetVOScriptConversationLineCounts] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE FUNCTION [dbo].[udf_ParseIncludesFromScript] (@ScriptMRRV INT) RETURNS @Results TABLE ( ResName VARCHAR(128), ResType VARCHAR(4), ResRefID INT ) AS BEGIN -- Script overview: -- This detects #includes after the current position. It scans from -- current position upto the #include to make sure it's not in a -- comment, and bails if there are no #includes after current position. DECLARE @Testing BIT -- flag used to avoid excessive nesting of ifs DECLARE @MaxLength INT -- Length of the script string DECLARE @CurLocation INT -- index into the script during parsing DECLARE @IncludeStart INT -- location of nearest include found after current location DECLARE @InlineStart INT -- location of nearest inline comment found after current location DECLARE @BlockStart INT -- location of nearest block comment found after current location DECLARE @NameStart INT -- location of start of the quote delimited file name for the #include DECLARE @NameEnd INT -- location of end of the quote delimited file name for the #include DECLARE @ResName VARCHAR(128) -- Resource Name extracted from #include DECLARE @ResType VARCHAR(4) -- Resource type of the #include'ed resource DECLARE @ResRefID INT -- ResRef ID of the #include'ed resource DECLARE @CurResType VARCHAR(4) -- Resource type of the passed script to be parsed DECLARE @CurModuleID INT -- Module ID of the passed script to be parsed DECLARE @Cache TABLE -- Table variable to hold the text value of the script in memory ( [Script] TEXT ) -- Cache values from the passed script INSERT INTO @Cache SELECT [Text] FROM t_Script s WHERE s.[ModuleResRefVersionID] = @ScriptMRRV SELECT @CurResType = [ResType], @CurModuleID = [ModuleID] FROM t_Script s JOIN t_ModuleResRefVersion m ON m.[ID] = s.[ModuleResRefVersionID] JOIN t_ResRef r ON r.[ID] = m.[ResRefID] WHERE s.[ModuleResRefVersionID] = @ScriptMRRV -- seed the loop SET @CurLocation = 1 SELECT @MaxLength = DATALENGTH( [Script] ), @IncludeStart = CHARINDEX('#include', [Script], @CurLocation), @InlineStart = CHARINDEX('//', [Script], @CurLocation), @BlockStart = CHARINDEX('/*', [Script], @CurLocation) FROM @Cache -- while there's still includes left to process or code we haven't looked at WHILE @CurLocation < @MaxLength AND @IncludeStart > 0 BEGIN SET @Testing = 1 SET @ResName = NULL SET @ResRefID = NULL SET @ResType = @CurResType -- default to same type as passed script -- if there's a comment block before the #include skip past it IF @BlockStart >0 AND @BlockStart < @IncludeStart BEGIN -- look for first comment block end after the block start SELECT @CurLocation = CHARINDEX('*/', [Script], @BlockStart+2 ) FROM @Cache -- if non found then skip to end of text IF @CurLocation = 0 BEGIN SET @CurLocation = @MaxLength END -- skip rest of checks SET @Testing = 0 END -- if there's an inline comment before the #include skip past it IF @Testing = 1 AND @InlineStart > 0 AND @InlineStart < @IncludeStart BEGIN -- look for first end of line after the inline comment SELECT @CurLocation = CHARINDEX(CHAR(10), [Script], @InlineStart+2 ) FROM @Cache -- if non found then skip to end of text IF @CurLocation = 0 BEGIN SET @CurLocation = @MaxLength END -- skip rest of checks SET @Testing = 0 END -- if there were no comments to skip try to extract an included resource name IF @Testing = 1 BEGIN SET @CurLocation = @IncludeStart + 8 SELECT @NameStart = CHARINDEX( '"', [Script], @CurLocation) FROM @Cache IF @NameStart > 0 BEGIN SELECT @NameEnd = CHARINDEX( '"', [Script], @NameStart+1) FROM @Cache IF @NameEnd > @NameStart BEGIN SELECT @ResName = SUBSTRING( [Script], @NameStart+1, @NameEnd-@NameStart-1) FROM @Cache SET @CurLocation = @NameEnd + 1 IF LOWER(SUBSTRING(@ResName,1,4)) = 'plt_' BEGIN SET @ResName = SUBSTRING(@ResName,5,8000) SET @ResType = 'plo' END END END END IF @ResName IS NOT NULL BEGIN -- Get the ResRefID SELECT DISTINCT @ResRefID = r.[ID] FROM v_ModuleTree mt JOIN t_ModuleResRef mrr ON mrr.[ModuleID] = mt.[AssociatedModuleID] JOIN t_ResRef r ON r.[ID] = mrr.[ResRefID] AND r.[ResType] = @ResType JOIN t_ModuleResRefVersion mrrv ON mrrv.[ModuleID] = mrr.[ModuleID] AND mrrv.[ResRefID] = mrr.[ResRefID] AND mrrv.[Name] = @ResName AND mrrv.[Status] IN ('C', 'S') WHERE mt.[ModuleID] = @CurModuleID -- Add to Results INSERT INTO @Results ( ResName, ResType, ResRefID ) VALUES ( @ResName, @ResType, @ResRefID) END -- reseed start locations before looping SELECT @IncludeStart = CHARINDEX('#include', [Script], @CurLocation), @InlineStart = CHARINDEX('//', [Script], @CurLocation), @BlockStart = CHARINDEX('/*', [Script], @CurLocation) FROM @Cache END -- end of 'while still work to do' loop RETURN END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[udf_ParseIncludesFromScript] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO ------------------------------------------------------------------------ -- FUNCTION: udf_StringsRequiringTranslation ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: November 23, 2006 -- Description: -- Params: NONE -- Returns: Table that is similar to v_StringsRequiringTranslation ------------------------------------------------------------------------ CREATE FUNCTION [dbo].[udf_StringsRequiringTranslation] ( ) RETURNS @ReturnTable TABLE ( StringID int NOT NULL, ModuleResRefVersionID int NOT NULL, IsMajorChange int NOT NULL, IsNew int NOT NULL ) AS BEGIN -- updating major changes INSERT INTO @ReturnTable SELECT t.[StringID], t.[ModuleResRefVersionID], 1 as [IsMajorChange], 0 as [IsNew] FROM t_StringText t JOIN t_ModuleResRefVersion mrv ON t.[ModuleResRefVersionID] = mrv.[ID] JOIN t_StringExportHistory seh ON t.[StringID] = seh.[StringID] AND seh.[Status] = 'A' WHERE mrv.[Status] = 'C' -- Ensures that we only care about current version strings AND t.[LastMajorUpdateOn] > seh.[CompareDate] -- strings updated since last export are included -- updating minor changes INSERT INTO @ReturnTable SELECT t.[StringID], t.[ModuleResRefVersionID], 0 as [IsMajorChange], 0 as [IsNew] FROM t_StringText t JOIN t_ModuleResRefVersion mrv ON t.[ModuleResRefVersionID] = mrv.[ID] JOIN t_StringExportHistory seh ON t.[StringID] = seh.[StringID] AND seh.[Status] = 'A' WHERE mrv.[Status] = 'C' -- Ensures that we only care about current version strings AND t.[LastMinorUpdateOn] > seh.[CompareDate] -- strings updated since last export are included AND t.[StringID] NOT IN ( SELECT [StringID] FROM @ReturnTable ) -- never translated strings INSERT INTO @ReturnTable SELECT t.[StringID], t.[ModuleResRefVersionID], 1 as [IsMajorChange], 1 as [IsNew] FROM t_StringText t JOIN t_ModuleResRefVersion mrv ON t.[ModuleResRefVersionID] = mrv.[ID] WHERE mrv.[Status] = 'C' -- Ensures that we only care about current version strings AND t.[StringID] NOT IN ( SELECT [StringID] FROM t_StringExportHistory WHERE [Status] = 'A' ) RETURN END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO CREATE TABLE [dbo].[t_CharacterDelta] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Comment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_GlobalParameters] ( [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Value] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_JobProcessInformation] ( [Name] [varchar] (120) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [Value] [varchar] (120) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_KeyGenStringID] ( [LastUsedID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ModuleType] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Directory] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ResourceTables] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringExportLabel] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Status] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ExportContent] [int] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringImportSession] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [ImportedOn] [datetime] NOT NULL , [ImportedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Status] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringTable] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringType] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [IncludeFile] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Exported] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringVariant] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScriptInstanceManagement] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [VOScriptInstanceID] [int] NOT NULL , [Active] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Actor] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Studio] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [RequiresProcessing] [bit] NOT NULL , [SentOn] [datetime] NULL , [ReceivedOn] [datetime] NULL , [ReceivedAllVOFiles] [bit] NOT NULL , [Notes] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScriptLineCharacterInternal] ( [SPID] [int] NOT NULL , [ResourceModuleID] [int] NOT NULL , [ResourceResRefID] [int] NOT NULL , [ResourceModuleResRefVersionID] [int] NOT NULL , [StringID] [int] NOT NULL , [CharacterModuleID] [int] NULL , [CharacterResRefID] [int] NULL , [ID] [int] IDENTITY (1, 1) NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOSessionInstance] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Unused] [bit] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ResourceDefinition] ( [ResType] [varchar] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [BaseResourceTableID] [int] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ResourceTableRelationship] ( [ParentResourceTableID] [int] NOT NULL , [ChildResourceTableID] [int] NOT NULL , [FullPath] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Level] [int] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_String] ( [StringTableID] [int] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [TEMPID] [int] NULL , [ID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringExportHistory] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [StringExportLabelID] [int] NOT NULL , [StringID] [int] NOT NULL , [ModuleResRefVersionID] [int] NOT NULL , [Status] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CompareDate] [datetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringExportLabelResourceStats] ( [StringExportLabelID] [int] NOT NULL , [ModuleResRefVersionID] [int] NOT NULL , [NewLines] [int] NOT NULL , [NewWords] [int] NOT NULL , [UpdatedLines] [int] NOT NULL , [UpdatedWords] [int] NOT NULL , [TotalLines] [int] NOT NULL , [TotalWords] [int] NOT NULL , [NewNonBlankLines] [int] NOT NULL , [UpdatedNonBlankLines] [int] NOT NULL , [TotalNonBlankLines] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringExportLabelStringTypeStats] ( [StringExportLabelID] [int] NOT NULL , [StringTypeID] [int] NOT NULL , [NewLines] [int] NOT NULL , [NewWords] [int] NOT NULL , [UpdatedLines] [int] NOT NULL , [UpdatedWords] [int] NOT NULL , [TotalLines] [int] NOT NULL , [TotalWords] [int] NOT NULL , [NewNonBlankLines] [int] NOT NULL , [UpdatedNonBlankLines] [int] NOT NULL , [TotalNonBlankLines] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ResRef] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [ResType] [varchar] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringExportHistoryAdjustmentLog] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [StringExportHistoryID] [int] NOT NULL , [Action] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OldCompareDate] [datetime] NOT NULL , [NewCompareDate] [datetime] NOT NULL , [Comment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Module] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StringTableID] [int] NULL , [IsCore] [bit] NOT NULL , [Directory] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StartTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StartAreaResRefID] [int] NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ScriptResRefID] [int] NULL , [Variable2da] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [IncludeInResBuild] [bit] NOT NULL , [ClientScriptResRefID] [int] NULL , [Type] [int] NOT NULL , [DisplayNameStringID] [int] NULL , [DescriptionStringID] [int] NULL , [ExtendedModuleID] [int] NULL , [UID] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Priority] [int] NULL , [IconImage] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [RatingStringID] [int] NULL , [RatingDescriptionStringID] [int] NULL , [URLStringID] [int] NULL , [ReleaseDate] [datetime] NULL , [Version] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [GameVersion] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PublisherStringID] [int] NULL , [ProductID] [int] NULL , [Price] [int] NULL , [Presentation] [int] NULL , [ContentModuleID] [int] NULL , [RequiresLocalization] [bit] NOT NULL , [RequiresVO] [bit] NOT NULL , [StringIDBegin] [int] NOT NULL , [StringIDEnd] [int] NOT NULL , [StringIDLastUsed] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringSound] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [StringID] [int] NOT NULL , [SoundResRefID] [int] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ModuleAssociation] ( [ParentModuleID] [int] NOT NULL , [ChildModuleID] [int] NOT NULL , [FullPath] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Level] [int] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ModuleVariable] ( [ModuleID] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Type] [int] NOT NULL , [Data] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_Area] ( [ModuleResRefVersionID] [int] NOT NULL , [NameStringID] [int] NULL , [ScriptResRefID] [int] NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [NoTeleport] [bit] NOT NULL , [NonHostile] [bit] NOT NULL , [AreaMap] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AreaMapWidth] [int] NOT NULL , [AreaMapHeight] [int] NOT NULL , [AreaLayout] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [NoPartyInPocket] [bit] NOT NULL , [Variable2da] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AreaListResRefID] [int] NULL , [AreaMapNorth] [int] NOT NULL , [ReverbPreset] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [MusicPreset] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Conversation] ( [ModuleResRefVersionID] [int] NOT NULL , [EndConversationScriptResRefID] [int] NULL , [Comment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [EndConversationPlotResRefID] [int] NULL , [EndConversationPlotFlag] [int] NOT NULL , [EndConversationParameter] [int] NOT NULL , [EndConversationParameterText] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [EndConversationResult] [bit] NOT NULL , [DefaultNPCSpeaker] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StageResRefID] [int] NULL , [DefaultNPCListener] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [DefaultPCListener] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PreviewAreaResRefID] [int] NULL , [PreviewStageUseFirstMatch] [bit] NOT NULL , [PreviewStagePositionX] [real] NOT NULL , [PreviewStagePositionY] [real] NOT NULL , [PreviewStagePositionZ] [real] NOT NULL , [PreviewStageOrientationX] [real] NOT NULL , [PreviewStageOrientationY] [real] NOT NULL , [PreviewStageOrientationZ] [real] NOT NULL , [StageTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AllCameraLocked] [bit] NOT NULL , [AllGesturesLocked] [bit] NOT NULL , [AllPosesLocked] [bit] NOT NULL , [AllRoboBradLocked] [bit] NOT NULL , [StageAtCurrentLocation] [bit] NOT NULL , [AmbientSoundSetType] [bit] NOT NULL , [OwnerIsHenchman] [bit] NOT NULL , [VOHardTimeRestriction] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_ConversationLine] ( [ModuleResRefVersionID] [int] NOT NULL , [Index] [int] NOT NULL , [IsPC] [bit] NOT NULL , [TextStringID] [int] NOT NULL , [LanguageID] [int] NOT NULL , [ConditionScriptResRefID] [int] NULL , [ConditionParameter] [int] NOT NULL , [ConditionParameterText] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ActionScriptResRefID] [int] NULL , [ActionParameter] [int] NOT NULL , [ActionParameterText] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Icon] [int] NOT NULL , [Comment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [VoiceOverTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [VoiceOverComment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ActionPlotResRefID] [int] NULL , [ActionPlotFlag] [int] NOT NULL , [ActionResult] [bit] NOT NULL , [ConditionPlotResRefID] [int] NULL , [ConditionPlotFlag] [int] NOT NULL , [ConditionResult] [bit] NOT NULL , [ListenerCharacterID] [int] NULL , [SpeakerCharacterID] [int] NULL , [EditorComment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Speaker] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Listener] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Visibility] [int] NOT NULL , [Ambient] [bit] NOT NULL , [StageResRefID] [int] NULL , [CameraTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CustomCutsceneResRefID] [int] NULL , [SpeakerAnimation] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CameraFunctionalShotResRefID] [int] NULL , [Emotion] [int] NOT NULL , [RoboBradSeed] [int] NOT NULL , [RoboBradSeedOverride] [bit] NOT NULL , [RoboBradLocked] [bit] NOT NULL , [PreviewAreaResRefID] [int] NULL , [PreviewStageUseFirstMatch] [bit] NOT NULL , [PreviewStagePositionX] [real] NOT NULL , [PreviewStagePositionY] [real] NOT NULL , [PreviewStagePositionZ] [real] NOT NULL , [PreviewStageOrientationX] [real] NOT NULL , [PreviewStageOrientationY] [real] NOT NULL , [PreviewStageOrientationZ] [real] NOT NULL , [Skip] [bit] NOT NULL , [FastPath] [int] NOT NULL , [StageTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AnimationsLocked] [bit] NOT NULL , [PlaySoundEvents] [bit] NOT NULL , [CameraLocked] [bit] NOT NULL , [SecondaryCameraTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SecondaryCameraDelay] [real] NOT NULL , [UseAnimationDuration] [tinyint] NOT NULL , [NoVOInGame] [tinyint] NOT NULL , [RevertAnimation] [bit] NOT NULL , [Narration] [bit] NOT NULL , [SlideShowTexture] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StageAtCurrentLocation] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Creature] ( [ModuleResRefVersionID] [int] NOT NULL , [NameStringID] [int] NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Race] [int] NOT NULL , [Appearance] [int] NOT NULL , [Gender] [int] NOT NULL , [Group] [int] NOT NULL , [Selectable] [bit] NOT NULL , [Head] [int] NOT NULL , [Class] [int] NOT NULL , [Package] [int] NOT NULL , [ConversationResRefID] [int] NULL , [ScriptResRefID] [int] NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Immortal] [bit] NOT NULL , [Plot] [bit] NOT NULL , [PerceptionRange] [int] NOT NULL , [Gold] [int] NOT NULL , [Autobalance] [int] NOT NULL , [CharacterResRefID] [int] NULL , [Hair] [int] NOT NULL , [Eyes] [int] NOT NULL , [Variable2da] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Beard] [int] NOT NULL , [SkinTint] [int] NOT NULL , [Tattoo] [int] NOT NULL , [EyeTint] [int] NOT NULL , [HairTint] [int] NOT NULL , [HeadMorph] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Combatant] [int] NOT NULL , [GUIBar] [int] NOT NULL , [BodyTintMask] [int] NOT NULL , [TattooTint] [int] NOT NULL , [NoPermanentDeath] [bit] NOT NULL , [BodyTint] [int] NOT NULL , [Team] [int] NOT NULL , [PlotGiver] [bit] NOT NULL , [TreasureCategory] [int] NOT NULL , [PackageType] [int] NOT NULL , [PackageAI] [int] NOT NULL , [MinLevel] [int] NOT NULL , [MaxLevel] [int] NOT NULL , [ArtFidelity] [int] NOT NULL , [DescriptionStringID] [int] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Cutscene] ( [ModuleResRefVersionID] [int] NOT NULL , [RunTime] [int] NOT NULL , [EndScriptResRefID] [int] NULL , [StageResRefID] [int] NULL , [PrimaryActor] [int] NOT NULL , [AreaResRefID] [int] NULL , [Animatic] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [BeforeKeyBasedTracks] [bit] NOT NULL , [ShowDynamics] [bit] NOT NULL , [PlaySoundEvents] [bit] NOT NULL , [UseMasterForLOD] [bit] NOT NULL , [AreaPosOffsetX] [real] NOT NULL , [AreaPosOffsetY] [real] NOT NULL , [AreaPosOffsetZ] [real] NOT NULL , [AreaOriOffsetX] [real] NOT NULL , [AreaOriOffsetY] [real] NOT NULL , [AreaOriOffsetZ] [real] NOT NULL , [EnableLevelFBEs] [bit] NOT NULL , [FPS] [int] NOT NULL , [BeforeFixingGADOffsetBaking] [bit] NOT NULL , [PlayUntilVOCompletes] [bit] NOT NULL , [AreaRequired] [bit] NOT NULL , [ShadowRadius] [real] NOT NULL , [LightOcclusion] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_CutsceneAction] ( [ModuleResRefVersionID] [int] NOT NULL , [CutsceneObjectInstanceID] [int] NOT NULL , [CutsceneTrackInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [StartTime] [int] NOT NULL , [EndTime] [int] NOT NULL , [Type] [int] NOT NULL , [int1] [int] NOT NULL , [int2] [int] NOT NULL , [byte1] [tinyint] NOT NULL , [real1] [real] NOT NULL , [real2] [real] NOT NULL , [real3] [real] NOT NULL , [real4] [real] NOT NULL , [real5] [real] NOT NULL , [real6] [real] NOT NULL , [bit1] [bit] NOT NULL , [bit2] [bit] NOT NULL , [varchar1] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [varchar2] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StringID1] [int] NULL , [VectorData] [image] NULL , [int3] [int] NOT NULL , [int4] [int] NOT NULL , [int5] [int] NOT NULL , [LoopingEndTime] [int] NOT NULL , [varchar3] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ResRefID1] [int] NULL , [bit3] [bit] NOT NULL , [GroupID] [int] NOT NULL , [Infinite] [bit] NOT NULL , [bit4] [bit] NOT NULL , [bit5] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_CutsceneObject] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [ResRefID] [int] NULL , [Model] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [WalkmeshInitial] [bit] NOT NULL , [GlobalActor] [bit] NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [ActorID] [int] NOT NULL , [Type] [int] NOT NULL , [Name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [real1] [real] NOT NULL , [real2] [real] NOT NULL , [real3] [real] NOT NULL , [real4] [real] NOT NULL , [int1] [int] NOT NULL , [int2] [int] NOT NULL , [AttachedToActorID] [int] NOT NULL , [real5] [real] NOT NULL , [UsePose] [bit] NOT NULL , [Pose] [int] NOT NULL , [PoseSpeed] [real] NOT NULL , [OriginX] [real] NOT NULL , [OriginY] [real] NOT NULL , [OriginZ] [real] NOT NULL , [OriginYaw] [real] NOT NULL , [OriginPitch] [real] NOT NULL , [OriginRoll] [real] NOT NULL , [MappingTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [TransitionDelay] [real] NOT NULL , [PreviousPose] [int] NOT NULL , [MappingRequired] [bit] NOT NULL , [ExportResRef] [bit] NOT NULL , [TargetActorID] [int] NOT NULL , [LOD] [int] NOT NULL , [ModelScale] [real] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_CutsceneTrack] ( [ModuleResRefVersionID] [int] NOT NULL , [CutsceneObjectInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Name] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Type] [int] NOT NULL , [VectorData] [image] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Item] ( [ModuleResRefVersionID] [int] NOT NULL , [NameStringID] [int] NULL , [DescriptionStringID] [int] NULL , [ScriptResRefID] [int] NULL , [BaseItemType] [int] NOT NULL , [Appearance] [int] NOT NULL , [MaterialType] [int] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Plot] [bit] NOT NULL , [CostOverride] [int] NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Ability] [int] NULL , [Variable2da] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Heraldry] [int] NOT NULL , [TintOverride] [int] NOT NULL , [Damaged] [bit] NOT NULL , [Icon] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [OnHitEffectID] [int] NOT NULL , [OnHitPower] [int] NOT NULL , [RecipeType] [int] NOT NULL , [Unique] [bit] NOT NULL , [MaterialProgression] [int] NOT NULL , [BodyTintMask] [int] NOT NULL , [BodyTint] [int] NOT NULL , [InventorySubgroup] [int] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Merchant] ( [ModuleResRefVersionID] [int] NOT NULL , [NameStringID] [int] NULL , [ScriptResRefID] [int] NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SellMarkUp] [int] NOT NULL , [BuyMarkDown] [int] NOT NULL , [BuyRestricted] [bit] NOT NULL , [Variable2da] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_ModuleResRef] ( [ModuleID] [int] NOT NULL , [ResRefID] [int] NOT NULL , [CurrentModuleResRefVersionID] [int] NULL , [ScratchModuleResRefVersionID] [int] NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ModuleResRefVersion] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [ModuleID] [int] NOT NULL , [ResRefID] [int] NOT NULL , [Name] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Folder] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Date] [datetime] NOT NULL , [UserName] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Status] [varchar] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [RevisionID] [int] NULL , [State] [int] NOT NULL , [OwnerModuleID] [int] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Placeable] ( [ModuleResRefVersionID] [int] NOT NULL , [NameStringID] [int] NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ScriptResRefID] [int] NULL , [Group] [int] NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Appearance] [int] NOT NULL , [InitialAnimation] [int] NOT NULL , [Health] [int] NOT NULL , [Indestructible] [bit] NOT NULL , [PickLockLevel] [int] NOT NULL , [KeyTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AutoRemoveKey] [bit] NOT NULL , [TrapDetectionDifficulty] [int] NOT NULL , [TrapDisarmDifficulty] [int] NOT NULL , [KeyRequired] [bit] NOT NULL , [Useable] [bit] NOT NULL , [Plot] [bit] NOT NULL , [MaxHealth] [int] NOT NULL , [CharacterResRefID] [int] NULL , [Variable2da] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ConversationResRefID] [int] NULL , [PopupTextStringID] [int] NULL , [Rank] [int] NOT NULL , [TreasureCategory] [int] NOT NULL , [Team] [int] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Plot] ( [ModuleResRefVersionID] [int] NOT NULL , [NameStringID] [int] NULL , [ScriptResRefID] [int] NULL , [Priority] [tinyint] NOT NULL , [GUID] [uniqueidentifier] NOT NULL , [JournalImage] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ParentPlotResRefID] [int] NULL , [EntryType] [int] NOT NULL , [AllowPausing] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_PlotStatus] ( [ModuleResRefVersionID] [int] NOT NULL , [Flag] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Final] [bit] NOT NULL , [Repeatable] [bit] NOT NULL , [JournalTextStringID] [int] NULL , [RewardID] [int] NOT NULL , [Comment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [DefaultValue] [bit] NOT NULL , [AreaLocationTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OfferID] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Script] ( [ModuleResRefVersionID] [int] NOT NULL , [Text] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Script_Reference] ( [ModuleResRefVersionID] [int] NOT NULL , [ReferencedResRefID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_Stage] ( [ModuleResRefVersionID] [int] NOT NULL , [Comment] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AreaResRefID] [int] NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [Yaw] [real] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringLanguage] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [Name] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [DefaultStringLanguageTagID] [int] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringLanguageTag] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [StringLanguageID] [int] NOT NULL , [Tag] [varchar] (16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringLanguageVariant] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [StringLanguageID] [int] NOT NULL , [StringVariantID] [int] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CurrentStringLanguageVariantVersionID] [int] NULL , [ScratchStringLanguageVariantVersionID] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringLanguageVariantVersion] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [StringLanguageVariantID] [int] NOT NULL , [Status] [varchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PreviousStringLanguageVariantVersionID] [int] NULL , [StringImportSessionID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringText] ( [StringID] [int] NOT NULL , [ModuleResRefVersionID] [int] NOT NULL , [StringLanguageVariantID] [int] NOT NULL , [Text] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastMajorUpdateOn] [datetime] NOT NULL , [LastMajorUpdateBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastMinorUpdateOn] [datetime] NOT NULL , [LastMinorUpdateBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [MinorUpdateCount] [int] NOT NULL , [WordCount] [int] NULL , [StringIsCopy] [bit] NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [VORequestOn] [datetime] NOT NULL , [ReRecord] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringVersion] ( [StringID] [int] NOT NULL , [ModuleResRefVersionID] [int] NOT NULL , [StringTypeID] [int] NOT NULL , [OwnerResRefID] [int] NULL , [Define] [char] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_Trigger] ( [ModuleResRefVersionID] [int] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ScriptResRefID] [int] NULL , [Group] [int] NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LinkedTo] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Variable2da] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScript] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [PlayerScript] [bit] NOT NULL , [ResourceModuleID] [int] NOT NULL , [ResourceResRefID] [int] NOT NULL , [CharacterModuleID] [int] NOT NULL , [CharacterResRefID] [int] NOT NULL , [IsActive] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaAudioVolume] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AudioVolumeName] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ReverbPreset] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [GUID] [uniqueidentifier] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaAudioVolumeGeometry] ( [ModuleResRefVersionID] [int] NOT NULL , [AreaAudioVolumeInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [VertexX] [real] NOT NULL , [VertexY] [real] NOT NULL , [VertexZ] [real] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaAudioVolumeSound] ( [ModuleResRefVersionID] [int] NOT NULL , [AudioVolumeInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Active] [bit] NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SoundName] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Volume] [real] NOT NULL , [Pitch] [real] NOT NULL , [FadeIn] [int] NOT NULL , [FadeOut] [int] NOT NULL , [MaxRangeMult] [real] NOT NULL , [ConeInside] [real] NOT NULL , [ConeOutside] [real] NOT NULL , [ConeOutsideVolume] [real] NOT NULL , [Priority] [int] NOT NULL , [Occludable] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaInstanceAssociations] ( [ModuleResRefVersionID] [int] NOT NULL , [OwnerGUID] [uniqueidentifier] NOT NULL , [ChildGUID] [uniqueidentifier] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaMusicVolumeGeometry] ( [ModuleResRefVersionID] [int] NOT NULL , [AreaMusicVolumeInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [VertexX] [real] NOT NULL , [VertexY] [real] NOT NULL , [VertexZ] [real] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaObjectGeometry] ( [ModuleResRefVersionID] [int] NOT NULL , [AreaObjectInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [VertexX] [real] NOT NULL , [VertexY] [real] NOT NULL , [VertexZ] [real] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaObjectVariable] ( [ModuleResRefVersionID] [int] NOT NULL , [AreaObjectInstanceID] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Type] [int] NOT NULL , [Data] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaReverbVolume] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ReverbVolumeName] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ReverbPreset] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Priority] [int] NOT NULL , [GUID] [uniqueidentifier] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaReverbVolumeGeometry] ( [ModuleResRefVersionID] [int] NOT NULL , [AreaReverbVolumeInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [VertexX] [real] NOT NULL , [VertexY] [real] NOT NULL , [VertexZ] [real] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaSound] ( [ModuleResRefVersionID] [int] NOT NULL , [ID] [int] NOT NULL , [Active] [bit] NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SoundName] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Volume] [real] NOT NULL , [Pitch] [real] NOT NULL , [FadeIn] [int] NOT NULL , [FadeOut] [int] NOT NULL , [MaxRangeMult] [real] NOT NULL , [ConeInside] [real] NOT NULL , [ConeOutside] [real] NOT NULL , [ConeOutsideVolume] [real] NOT NULL , [Priority] [int] NOT NULL , [Occludable] [bit] NOT NULL , [GUID] [uniqueidentifier] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaWaypoint] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [WaypointName] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Group] [int] NOT NULL , [MapNoteEnabled] [bit] NOT NULL , [Colour] [int] NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [MapNoteType] [int] NOT NULL , [MapNoteStringID] [int] NULL , [GUID] [uniqueidentifier] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_ConversationAnimations] ( [ModuleResRefVersionID] [int] NOT NULL , [LineIndex] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Animation] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StartTime] [real] NOT NULL , [Weight] [real] NOT NULL , [Speed] [real] NOT NULL , [StartOffset] [real] NOT NULL , [BlendIn] [real] NOT NULL , [EndOffset] [real] NOT NULL , [BlendOut] [real] NOT NULL , [Locked] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_CreatureAbility] ( [ModuleResRefVersionID] [int] NOT NULL , [Ability] [int] NOT NULL , [Type] [tinyint] NOT NULL , [Level] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_CutsceneActionFBEParameter] ( [ModuleResRefVersionID] [int] NOT NULL , [CutsceneObjectInstanceID] [int] NOT NULL , [CutsceneTrackInstanceID] [int] NOT NULL , [CutsceneActionInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Name] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Animatable] [bit] NOT NULL , [Value] [real] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_CutsceneActionTransition] ( [ModuleResRefVersionID] [int] NOT NULL , [CutsceneObjectInstanceID] [int] NOT NULL , [CutsceneTrackInstanceIDA] [int] NOT NULL , [CutsceneActionInstanceIDA] [int] NOT NULL , [CutsceneTrackInstanceIDB] [int] NOT NULL , [CutsceneActionInstanceIDB] [int] NOT NULL , [TransitionType] [int] NOT NULL , [TimeWarp] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ItemProperty] ( [ModuleResRefVersionID] [int] NOT NULL , [PropertyID] [int] NOT NULL , [Power] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_MapPin] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PinType] [int] NOT NULL , [InitialState] [int] NOT NULL , [TerrainType] [int] NOT NULL , [LocationX] [int] NOT NULL , [LocationY] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AreaTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [WaypointOverride] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [NameStringID] [int] NULL , [TooltipStringID] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_MapTrail] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Pin1Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Pin2Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_MapTrailPoint] ( [ModuleResRefVersionID] [int] NOT NULL , [MapTrailInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [LocationX] [int] NOT NULL , [LocationY] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_MerchantRestrictedItem] ( [ModuleResRefVersionID] [int] NOT NULL , [BaseType] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_PlotAssist] ( [ModuleResRefVersionID] [int] NOT NULL , [Flag] [int] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SetPlotAdvancer] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StageFBEParameter] ( [ModuleResRefVersionID] [int] NOT NULL , [StageObjectInstanceID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Name] [varchar] (1024) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Value] [real] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StageObjectReference] ( [ModuleResRefVersionID] [int] NOT NULL , [SourceInstanceID] [int] NOT NULL , [DestinationTag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOSessionInstanceVersion] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [VOSessionID] [int] NOT NULL , [VOSessionInstanceID] [int] NOT NULL , [VOScriptInstanceID] [int] NULL , [Active] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CustomName] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [LinesRecorded] [int] NOT NULL , [Notes] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SentAudioReferencesToStudio] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SentScriptsToStudio] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ReceivedAudioFromStudio] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SentAudioToEditor] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ReceivedAudioFromEditor] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PicksComplete] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [AudioProcessed] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ReadyForGame] [varchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ScriptFolder] [varchar] (260) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [AudioFolder] [varchar] (260) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ColorR] [real] NOT NULL , [ColorG] [real] NOT NULL , [ColorB] [real] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOSessionVersion] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [VOSessionID] [int] NOT NULL , [Active] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Date] [datetime] NOT NULL , [Duration] [int] NULL , [Actor] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Studio] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Notes] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ColorR] [real] NOT NULL , [ColorG] [real] NOT NULL , [ColorB] [real] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_Variable] ( [ModuleResRefVersionID] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Type] [int] NOT NULL , [Data] [varchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaList] ( [ModuleResRefVersionID] [int] NOT NULL , [Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaMusicVolume] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [MusicVolumeName] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comments] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [EnterState] [int] NOT NULL , [EnterStateDelay] [int] NOT NULL , [ExitState] [int] NOT NULL , [ExitStateDelay] [int] NOT NULL , [ScriptDelay] [int] NOT NULL , [ScriptResRefID] [int] NULL , [GUID] [uniqueidentifier] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_AreaObject] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [ObjectResRefID] [int] NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Active] [bit] NOT NULL , [Platform] [int] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [InitialAnimation] [int] NOT NULL , [Team] [int] NOT NULL , [Trackable] [bit] NOT NULL , [RoomID1] [int] NOT NULL , [RoomID2] [int] NOT NULL , [Rank] [int] NOT NULL , [TreasureCategory] [int] NOT NULL , [WeaponsDrawn] [bit] NOT NULL , [PickLockLevel] [int] NOT NULL , [GUID] [uniqueidentifier] NOT NULL , [InteractionRadius] [real] NOT NULL , [TrapDetectionDifficulty] [int] NOT NULL , [TrapDisarmDifficulty] [int] NOT NULL , [Useable] [smallint] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_AssociatedResource] ( [ModuleResRefVersionID] [int] NOT NULL , [ResRefID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_Character] ( [ModuleResRefVersionID] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Phonetic] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Image] [image] NULL , [Age] [int] NOT NULL , [Gender] [int] NOT NULL , [Occupation] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Morals] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Appearance] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Flaws] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Skills] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SpeechPatterns] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [VORecorded] [bit] NOT NULL , [RoleResRefID] [int] NULL , [CharacterType] [int] NOT NULL , [Race] [int] NOT NULL , [Language] [int] NOT NULL , [Accent] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Purpose] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [RelationshipToPlayer] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Archetype] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Demeanor] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ImageFilename] [varchar] (260) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PersonalBackground] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CulturalBackground] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Intelligence] [int] NOT NULL , [TiesToOtherCharacters] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CombatSoundsetNeeded] [bit] NOT NULL , [Plots] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Player] [bit] NOT NULL , [VOCastingColor] [int] NOT NULL , [VOCastingNotes] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [SoundSetResRefID] [int] NULL , [FXAName] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SoundsetResRefIDIsSharedLink] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_ConversationCinematics] ( [ModuleResRefVersionID] [int] NOT NULL , [LineIndex] [int] NOT NULL , [Place] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [TagOverride] [bit] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LookAtOverride] [bit] NOT NULL , [LookAt] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PoseOverride] [bit] NOT NULL , [FunctionalShotResRefID] [int] NULL , [FunctionalShotActor] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Pose] [int] NOT NULL , [HeadLookAtOverride] [bit] NOT NULL , [HeadLookAt] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ActivationAction] [int] NOT NULL , [TransitionDelay] [real] NOT NULL , [MappingRequired] [bit] NOT NULL , [LockPose] [bit] NOT NULL , [HelmetOverride] [bit] NOT NULL , [Helmet] [int] NOT NULL , [WeaponsOverride] [bit] NOT NULL , [Weapons] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ConversationTagMap] ( [ModuleResRefVersionID] [int] NOT NULL , [LineIndex] [int] NOT NULL , [Type] [int] NOT NULL , [KeyTag] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ValueTag] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ValueResRefID] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_ConversationTransition] ( [ModuleResRefVersionID] [int] NOT NULL , [FromIndex] [int] NOT NULL , [ToIndex] [int] NOT NULL , [Order] [int] NOT NULL , [IsLink] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_Inventory] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [ItemResRefID] [int] NOT NULL , [StackSize] [int] NOT NULL , [Slot] [int] NULL , [Droppable] [bit] NOT NULL , [Stealable] [bit] NOT NULL , [Infinite] [bit] NOT NULL , [SetNumber] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_Map] ( [ModuleResRefVersionID] [int] NOT NULL , [Map] [int] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ParentMapResRefID] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_Role] ( [ModuleResRefVersionID] [int] NOT NULL , [Name] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Description] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_StageObject] ( [ModuleResRefVersionID] [int] NOT NULL , [InstanceID] [int] NOT NULL , [Type] [int] NOT NULL , [PositionX] [real] NOT NULL , [PositionY] [real] NOT NULL , [PositionZ] [real] NOT NULL , [OrientationX] [real] NOT NULL , [OrientationY] [real] NOT NULL , [OrientationZ] [real] NOT NULL , [Tag] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [real1] [real] NOT NULL , [LookingFrom] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LookingAtPrimary] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatureResRefID] [int] NULL , [Pose] [int] NOT NULL , [DefaultCamera] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CloseUpCamera] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [WideCamera] [varchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LookAtType] [int] NOT NULL , [ApplyDOF] [bit] NOT NULL , [OverrideDOF] [bit] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_StringLanguageVariantText] ( [StringLanguageVariantVersionID] [int] NOT NULL , [StringID] [int] NOT NULL , [Text] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StringImportSessionID] [int] NOT NULL , [IsBlank] [bit] NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScriptBatchPrint] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [SPID] [int] NOT NULL , [VOScriptID] [int] NOT NULL , [VOScriptInstanceID] [int] NULL , [VOScriptInstanceStringID] [int] NULL , [PreviousVOScriptInstanceStringID] [int] NULL , [PrintedOn] [datetime] NOT NULL , [ModuleResRefVersionID] [int] NOT NULL , [StringLanguageID] [int] NOT NULL , [StringVariantID] [int] NULL , [StringID] [int] NULL , [StringLanguageVariantVersionID] [int] NULL , [ScriptType] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ScriptParent] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Revision] [int] NULL , [AudioFileName] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CompareDate] [datetime] NULL , [IsForeign] [bit] NOT NULL , [Comment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OutputFolder] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScriptInstance] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [VOScriptID] [int] NOT NULL , [Active] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StringLanguageID] [int] NOT NULL , [PrintedOn] [datetime] NOT NULL , [ScriptType] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ScriptParent] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OutputFolder] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScriptInstanceString] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [VOScriptInstanceID] [int] NOT NULL , [Active] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Status] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Revision] [int] NOT NULL , [CompareDate] [datetime] NOT NULL , [PreviousVOScriptInstanceStringID] [int] NULL , [IsForeign] [bit] NOT NULL , [StringID] [int] NOT NULL , [ModuleResRefVersionID] [int] NOT NULL , [StringLanguageVariantID] [int] NOT NULL , [StringLanguageVariantVersionID] [int] NULL , [AudioFileName] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastModifiedOn] [datetime] NOT NULL , [LastModifiedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [StringVariantID] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScriptInstanceStringStatus] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [VOScriptInstanceStringID] [int] NOT NULL , [Active] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Action] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Revision] [int] NOT NULL , [CompareDate] [datetime] NOT NULL , [CreatedOn] [datetime] NOT NULL , [CreatedBy] [varchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Comment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOScriptStringRevision] ( [StringID] [int] NOT NULL , [StringLanguageID] [int] NOT NULL , [StringVariantID] [int] NOT NULL , [Revision] [int] NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[t_VOSession] ( [ID] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [LanguageID] [int] NOT NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CharacterDelta] WITH NOCHECK ADD CONSTRAINT [PK_t_CharacterDelta] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_GlobalParameters] WITH NOCHECK ADD CONSTRAINT [PK_t_GlobalParameters] PRIMARY KEY CLUSTERED ( [Name] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_KeyGenStringID] WITH NOCHECK ADD CONSTRAINT [PK_t_KeyGenStringID] PRIMARY KEY CLUSTERED ( [LastUsedID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ModuleType] WITH NOCHECK ADD CONSTRAINT [PK_t_ModuleType] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ResourceTables] WITH NOCHECK ADD CONSTRAINT [PK_t_ResourceTables] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringExportLabel] WITH NOCHECK ADD CONSTRAINT [PK_StringExportLabel] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringImportSession] WITH NOCHECK ADD CONSTRAINT [PK_StringImportSession] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringTable] WITH NOCHECK ADD CONSTRAINT [PK_t_StringTable] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringType] WITH NOCHECK ADD CONSTRAINT [PK_t_StringType] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringVariant] WITH NOCHECK ADD CONSTRAINT [PK_t_StringVariant] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptInstanceManagement] WITH NOCHECK ADD CONSTRAINT [PK_t_VOScriptInstanceManagement] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptLineCharacterInternal] WITH NOCHECK ADD CONSTRAINT [PK_t_VOScriptLineCharacterInternal] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOSessionInstance] WITH NOCHECK ADD CONSTRAINT [PK_t_VOSessionInstance] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ResourceDefinition] WITH NOCHECK ADD CONSTRAINT [PK_t_ResourceDefinition] PRIMARY KEY CLUSTERED ( [ResType] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ResourceTableRelationship] WITH NOCHECK ADD CONSTRAINT [PK_t_ResourceTableRelationship] PRIMARY KEY CLUSTERED ( [ParentResourceTableID], [ChildResourceTableID], [FullPath] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_String] WITH NOCHECK ADD CONSTRAINT [PK_t_String] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringExportHistory] WITH NOCHECK ADD CONSTRAINT [PK_StringExportHistory] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringExportLabelResourceStats] WITH NOCHECK ADD CONSTRAINT [PK_StringExportLabelResourceStats] PRIMARY KEY CLUSTERED ( [StringExportLabelID], [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringExportLabelStringTypeStats] WITH NOCHECK ADD CONSTRAINT [PK_StringExportLabelStringTypeStats] PRIMARY KEY CLUSTERED ( [StringExportLabelID], [StringTypeID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ResRef] WITH NOCHECK ADD CONSTRAINT [PK_t_ResRef] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringExportHistoryAdjustmentLog] WITH NOCHECK ADD CONSTRAINT [PK_StringExportHistoryAdjustmentLog] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Module] WITH NOCHECK ADD CONSTRAINT [PK_t_Module] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringSound] WITH NOCHECK ADD CONSTRAINT [PK_t_StringSound] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ModuleAssociation] WITH NOCHECK ADD CONSTRAINT [PK_t_ModuleAssociation] PRIMARY KEY CLUSTERED ( [ParentModuleID], [ChildModuleID], [FullPath] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ModuleVariable] WITH NOCHECK ADD CONSTRAINT [PK_t_ModuleVariable] PRIMARY KEY CLUSTERED ( [ModuleID], [Name] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Area] WITH NOCHECK ADD CONSTRAINT [PK_t_Area] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Conversation] WITH NOCHECK ADD CONSTRAINT [PK_t_Conversation] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ConversationLine] WITH NOCHECK ADD CONSTRAINT [PK_t_ConversationLine] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [Index] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Creature] WITH NOCHECK ADD CONSTRAINT [PK_t_Creature] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Cutscene] WITH NOCHECK ADD CONSTRAINT [PK_t_Cutscene] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CutsceneAction] WITH NOCHECK ADD CONSTRAINT [PK_t_CutsceneAction] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CutsceneObject] WITH NOCHECK ADD CONSTRAINT [PK_t_CutsceneObject] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CutsceneTrack] WITH NOCHECK ADD CONSTRAINT [PK_t_CutsceneTrack] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Item] WITH NOCHECK ADD CONSTRAINT [PK_t_Item] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Merchant] WITH NOCHECK ADD CONSTRAINT [PK_t_Merchant] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ModuleResRef] WITH NOCHECK ADD CONSTRAINT [PK_t_ModuleResRef] PRIMARY KEY CLUSTERED ( [ModuleID], [ResRefID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ModuleResRefVersion] WITH NOCHECK ADD CONSTRAINT [PK_t_ModuleResRefVersion] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Placeable] WITH NOCHECK ADD CONSTRAINT [PK_t_Placeable] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Plot] WITH NOCHECK ADD CONSTRAINT [PK_t_Plot] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_PlotStatus] WITH NOCHECK ADD CONSTRAINT [PK_t_PlotStatus] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [Flag] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Script] WITH NOCHECK ADD CONSTRAINT [PK_t_Script] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Script_Reference] WITH NOCHECK ADD CONSTRAINT [PK_t_Script_Reference] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [ReferencedResRefID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Stage] WITH NOCHECK ADD CONSTRAINT [PK_t_Stage] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringLanguage] WITH NOCHECK ADD CONSTRAINT [PK_t_StringLanguage] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringLanguageTag] WITH NOCHECK ADD CONSTRAINT [PK_StringLanguageTag] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringLanguageVariant] WITH NOCHECK ADD CONSTRAINT [PK_t_StringLanguageVariant] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringLanguageVariantVersion] WITH NOCHECK ADD CONSTRAINT [PK_StringLanguageVariantVersion] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringText] WITH NOCHECK ADD CONSTRAINT [PK_t_StringText] PRIMARY KEY CLUSTERED ( [StringID], [ModuleResRefVersionID], [StringLanguageVariantID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringVersion] WITH NOCHECK ADD CONSTRAINT [PK_t_StringVersion] PRIMARY KEY CLUSTERED ( [StringID], [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Trigger] WITH NOCHECK ADD CONSTRAINT [PK_t_Trigger] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScript] WITH NOCHECK ADD CONSTRAINT [PK_VOScript] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaAudioVolume] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaAudioVolume] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaAudioVolumeGeometry] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaAudioVolumeGeometry] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [AreaAudioVolumeInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaAudioVolumeSound] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaAudioVolumeSound] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [AudioVolumeInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaInstanceAssociations] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaInstanceAssociations] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [OwnerGUID], [ChildGUID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaMusicVolumeGeometry] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaMusicVolumeGeometry] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [AreaMusicVolumeInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaObjectGeometry] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaObjectGeometry] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [AreaObjectInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaObjectVariable] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaObjectVariable] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [AreaObjectInstanceID], [Name] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaReverbVolume] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaReverbVolume] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaReverbVolumeGeometry] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaReverbVolumeGeometry] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [AreaReverbVolumeInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaSound] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaSound] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaWaypoint] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaWaypoint] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ConversationAnimations] WITH NOCHECK ADD CONSTRAINT [PK_t_ConversationAnimations] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [LineIndex], [InstanceID], [Tag] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CreatureAbility] WITH NOCHECK ADD CONSTRAINT [PK_t_Skill] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [Ability], [Type] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CutsceneActionFBEParameter] WITH NOCHECK ADD CONSTRAINT [PK_t_CutsceneActionFBEParameter] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceID], [CutsceneActionInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CutsceneActionTransition] WITH NOCHECK ADD CONSTRAINT [PK_t_CutsceneActionTransition] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceIDA], [CutsceneActionInstanceIDA], [CutsceneTrackInstanceIDB], [CutsceneActionInstanceIDB] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ItemProperty] WITH NOCHECK ADD CONSTRAINT [PK_t_ItemProperty] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [PropertyID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_MapPin] WITH NOCHECK ADD CONSTRAINT [PK_t_MapPin] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_MapTrail] WITH NOCHECK ADD CONSTRAINT [PK_t_MapTrail] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_MapTrailPoint] WITH NOCHECK ADD CONSTRAINT [PK_t_MapTrailPoint] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [MapTrailInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_MerchantRestrictedItem] WITH NOCHECK ADD CONSTRAINT [PK_t_MerchantRestrictedItem] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [BaseType] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_PlotAssist] WITH NOCHECK ADD CONSTRAINT [PK_t_PlotAssist] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [Flag], [Tag] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StageFBEParameter] WITH NOCHECK ADD CONSTRAINT [PK_t_StageFBEParameter] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [StageObjectInstanceID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StageObjectReference] WITH NOCHECK ADD CONSTRAINT [PK_t_StageObjectReference] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [SourceInstanceID], [DestinationTag] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOSessionInstanceVersion] WITH NOCHECK ADD CONSTRAINT [PK_t_VOSessionInstanceVersion] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOSessionVersion] WITH NOCHECK ADD CONSTRAINT [PK_t_VOSessionVersion] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Variable] WITH NOCHECK ADD CONSTRAINT [PK_t_Variable] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [Name] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaList] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaList] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaMusicVolume] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaMusicVolume] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaObject] WITH NOCHECK ADD CONSTRAINT [PK_t_AreaObject] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AssociatedResource] WITH NOCHECK ADD CONSTRAINT [PK_t_AssociatedResource] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [ResRefID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Character] WITH NOCHECK ADD CONSTRAINT [PK_t_Character] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ConversationCinematics] WITH NOCHECK ADD CONSTRAINT [PK_t_ConversationCinematics] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [LineIndex], [Place] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ConversationTagMap] WITH NOCHECK ADD CONSTRAINT [PK_t_ConversationTagMap] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [LineIndex], [Type], [KeyTag] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ConversationTransition] WITH NOCHECK ADD CONSTRAINT [PK_t_ConversationTransit] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [FromIndex], [ToIndex], [Order] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Inventory] WITH NOCHECK ADD CONSTRAINT [PK_t_Inventory] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID], [ItemResRefID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Map] WITH NOCHECK ADD CONSTRAINT [PK_t_Map] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Role] WITH NOCHECK ADD CONSTRAINT [PK_t_Role] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StageObject] WITH NOCHECK ADD CONSTRAINT [PK_t_StageObject] PRIMARY KEY CLUSTERED ( [ModuleResRefVersionID], [InstanceID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringLanguageVariantText] WITH NOCHECK ADD CONSTRAINT [PK_StringLanguageVariantText] PRIMARY KEY CLUSTERED ( [StringLanguageVariantVersionID], [StringID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptBatchPrint] WITH NOCHECK ADD CONSTRAINT [PK_VOScriptBatchPrint] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptInstance] WITH NOCHECK ADD CONSTRAINT [PK_VOScriptInstance] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptInstanceString] WITH NOCHECK ADD CONSTRAINT [PK_t_VOScriptInstanceString] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptInstanceStringStatus] WITH NOCHECK ADD CONSTRAINT [PK_t_VOScriptInstanceStringStatus] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptStringRevision] WITH NOCHECK ADD CONSTRAINT [PK_t_VOScriptStringRevision] PRIMARY KEY CLUSTERED ( [StringID], [StringLanguageID], [StringVariantID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOSession] WITH NOCHECK ADD CONSTRAINT [PK_t_VOSession] PRIMARY KEY CLUSTERED ( [ID] ) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CharacterDelta] ADD CONSTRAINT [DF_t_CharacterDelta_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_CharacterDelta_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy] GO ALTER TABLE [dbo].[t_ModuleType] ADD CONSTRAINT [DF_t_ModuleType_Directory] DEFAULT ('') FOR [Directory], CONSTRAINT [DF_t_ModuleType_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_ModuleType_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_ModuleType_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_ModuleType_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_ResourceTables] ADD CONSTRAINT [DF_t_ResourceTables_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_ResourceTables_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_ResourceTables_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_ResourceTables_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_StringExportLabel] ADD CONSTRAINT [DF_t_StringExportLabel_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringExportLabel_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringExportLabel_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringExportLabel_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_StringImportSession] ADD CONSTRAINT [DF_t_StringImportSession_ImportedOn] DEFAULT (getdate()) FOR [ImportedOn], CONSTRAINT [DF_t_StringImportSession_ImportedBy] DEFAULT (suser_sname()) FOR [ImportedBy] GO ALTER TABLE [dbo].[t_StringTable] ADD CONSTRAINT [DF_t_StringTable_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringTable_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringTable_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringTable_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_StringType] ADD CONSTRAINT [DF_t_StringType_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringType_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringType_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringType_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy], CONSTRAINT [DF_t_StringType_Exported] DEFAULT (0) FOR [Exported] GO ALTER TABLE [dbo].[t_StringVariant] ADD CONSTRAINT [DF_t_StringVariant_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringVariant_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringVariant_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringVariant_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_VOScriptInstanceManagement] ADD CONSTRAINT [DF_t_VOScriptInstanceManagement_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_VOScriptInstanceManagement_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy] GO CREATE INDEX [IX1_t_VOScriptLineCharacterInternal] ON [dbo].[t_VOScriptLineCharacterInternal]([SPID], [StringID], [CharacterResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ResourceDefinition] ADD CONSTRAINT [DF_t_ResourceDefinition_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_ResourceDefinition_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_ResourceDefinition_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_ResourceDefinition_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_ResourceTableRelationship] ADD CONSTRAINT [DF_t_ResourceTableRelationship_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_ResourceTableRelationship_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_ResourceTableRelationship_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_ResourceTableRelationship_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_String] ADD CONSTRAINT [DF_t_String_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_String_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_String_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_String_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO CREATE INDEX [IX_t_StringExportHistory] ON [dbo].[t_StringExportHistory]([StringID], [Status]) ON [PRIMARY] GO CREATE INDEX [IX_t_StringExportHistory2] ON [dbo].[t_StringExportHistory]([StringID], [ModuleResRefVersionID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringExportHistoryAdjustmentLog] ADD CONSTRAINT [DF__t_StringE__Creat__48717679] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF__t_StringE__Creat__49659AB2] DEFAULT (suser_sname()) FOR [CreatedBy] GO CREATE INDEX [IX_t_StringExportHistoryAdjustmentLog] ON [dbo].[t_StringExportHistoryAdjustmentLog]([StringExportHistoryID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Module] ADD CONSTRAINT [DF_t_Module_Directory] DEFAULT ('') FOR [Directory], CONSTRAINT [DF_t_Module_StartTag] DEFAULT ('') FOR [StartTag], CONSTRAINT [DF_t_Module_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_Module_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_Module_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_Module_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy], CONSTRAINT [DF_t_Module_Variable2da] DEFAULT ('var_module') FOR [Variable2da], CONSTRAINT [DF_t_Module_IncludeInResBuild] DEFAULT (0) FOR [IncludeInResBuild], CONSTRAINT [DF_t_Module_RequiresLocalization] DEFAULT (0) FOR [RequiresLocalization], CONSTRAINT [DF_t_Module_RequiresVO] DEFAULT (0) FOR [RequiresVO], CONSTRAINT [DF_t_Module_StringIDBegin] DEFAULT ((-1)) FOR [StringIDBegin], CONSTRAINT [DF_t_Module_StringIDEnd] DEFAULT ((-1)) FOR [StringIDEnd], CONSTRAINT [DF_t_Module_StringIDLastUsed] DEFAULT ((-1)) FOR [StringIDLastUsed] GO ALTER TABLE [dbo].[t_StringSound] ADD CONSTRAINT [DF_t_StringSound_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringSound_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringSound_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringSound_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy], CONSTRAINT [IX_t_StringSound] UNIQUE NONCLUSTERED ( [StringID] ) ON [PRIMARY] GO CREATE INDEX [IX_t_StringSound_FK1] ON [dbo].[t_StringSound]([StringID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ModuleAssociation] ADD CONSTRAINT [DF_t_ModuleAssociation_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_ModuleAssociation_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_ModuleAssociation_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_ModuleAssociation_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO CREATE INDEX [IX_t_ModuleAssociation] ON [dbo].[t_ModuleAssociation]([FullPath]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Area] ADD CONSTRAINT [DF_t_Area_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_Area_NoTeleport] DEFAULT (1) FOR [NoTeleport], CONSTRAINT [DF_t_Area_NonHostile] DEFAULT (1) FOR [NonHostile], CONSTRAINT [DF_t_Area_AreaMap] DEFAULT ('') FOR [AreaMap], CONSTRAINT [DF_t_Area_AreaMapWidth] DEFAULT (0) FOR [AreaMapWidth], CONSTRAINT [DF_t_Area_AreaMapHeight] DEFAULT (0) FOR [AreaMapHeight], CONSTRAINT [DF_t_Area_AreaLayout] DEFAULT ('') FOR [AreaLayout], CONSTRAINT [DF_t_Area_NoPartyInPocket] DEFAULT (1) FOR [NoPartyInPocket], CONSTRAINT [DF_t_Area_Variable2da] DEFAULT ('var_area') FOR [Variable2da], CONSTRAINT [DF_t_Area_AreaMapNorth] DEFAULT (0) FOR [AreaMapNorth], CONSTRAINT [DF_t_Area_ReverbPreset] DEFAULT ('') FOR [ReverbPreset], CONSTRAINT [DF_t_Area_MusicPreset] DEFAULT ('') FOR [MusicPreset] GO CREATE INDEX [IX_t_Area_FK1] ON [dbo].[t_Area]([NameStringID]) ON [PRIMARY] GO CREATE INDEX [IX_t_Area1] ON [dbo].[t_Area]([AreaListResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Conversation] ADD CONSTRAINT [DF_t_Conversation_EndConversationPlotFlag] DEFAULT (0) FOR [EndConversationPlotFlag], CONSTRAINT [DF_t_Conversation_EndConversationParameter] DEFAULT (0) FOR [EndConversationParameter], CONSTRAINT [DF_t_Conversation_EndConversationParameterText] DEFAULT ('') FOR [EndConversationParameterText], CONSTRAINT [DF_t_Conversation_EndConversationResult] DEFAULT (1) FOR [EndConversationResult], CONSTRAINT [DF_t_Conversation_DefaultNPCSpeaker] DEFAULT ('OWNER') FOR [DefaultNPCSpeaker], CONSTRAINT [DF_t_Conversation_DefaultNPCListener] DEFAULT ('PLAYER') FOR [DefaultNPCListener], CONSTRAINT [DF_t_Conversation_DefaultPCListener] DEFAULT ('OWNER') FOR [DefaultPCListener], CONSTRAINT [DF_t_Conversation_PreviewStageUseFirstMatch] DEFAULT (1) FOR [PreviewStageUseFirstMatch], CONSTRAINT [DF_t_Conversation_PreviewStagePositionX] DEFAULT (0) FOR [PreviewStagePositionX], CONSTRAINT [DF_t_Conversation_PreviewStagePositionY] DEFAULT (0) FOR [PreviewStagePositionY], CONSTRAINT [DF_t_Conversation_PreviewStagePositionZ] DEFAULT (0) FOR [PreviewStagePositionZ], CONSTRAINT [DF_t_Conversation_PreviewStageOrientationX] DEFAULT (0) FOR [PreviewStageOrientationX], CONSTRAINT [DF_t_Conversation_PreviewStageOrientationY] DEFAULT (0) FOR [PreviewStageOrientationY], CONSTRAINT [DF_t_Conversation_PreviewStageOrientationZ] DEFAULT (0) FOR [PreviewStageOrientationZ], CONSTRAINT [DF_t_Conversation_StageTag] DEFAULT ('') FOR [StageTag], CONSTRAINT [DF_t_Conversation_AllCameraLocked] DEFAULT (0) FOR [AllCameraLocked], CONSTRAINT [DF_t_Conversation_AllGesturesLocked] DEFAULT (0) FOR [AllGesturesLocked], CONSTRAINT [DF_t_Conversation_AllPosesLocked] DEFAULT (0) FOR [AllPosesLocked], CONSTRAINT [DF_t_Conversation_AllRoboBradLocked] DEFAULT (0) FOR [AllRoboBradLocked], CONSTRAINT [DF_t_Conversation_StageAtCurrentLocation] DEFAULT (0) FOR [StageAtCurrentLocation], CONSTRAINT [DF_t_Conversation_AmbientSoundSetType] DEFAULT (0) FOR [AmbientSoundSetType], CONSTRAINT [DF_t_Conversation_OwnerIsHenchman] DEFAULT (0) FOR [OwnerIsHenchman], CONSTRAINT [DF_t_Conversation_VOHardTimeRestriction] DEFAULT (0) FOR [VOHardTimeRestriction] GO /****** The index created by the following statement is for internal use only. ******/ /****** It is not a real index but exists as statistics only. ******/ if (@@microsoftversion > 0x07000000 ) EXEC ('CREATE STATISTICS [Statistic_DefaultPCListener] ON [dbo].[t_Conversation] ([DefaultPCListener]) ') GO ALTER TABLE [dbo].[t_ConversationLine] ADD CONSTRAINT [DF_t_ConversationLine_IsNPC] DEFAULT (0) FOR [IsPC], CONSTRAINT [DF_t_ConversationLine_LanguageID] DEFAULT (0) FOR [LanguageID], CONSTRAINT [DF_t_ConversationLine_ConditionParameter] DEFAULT (0) FOR [ConditionParameter], CONSTRAINT [DF_t_ConversationLine_ConditionParameterText] DEFAULT ('') FOR [ConditionParameterText], CONSTRAINT [DF_t_ConversationLine_ActionParameter] DEFAULT (0) FOR [ActionParameter], CONSTRAINT [DF_t_ConversationLine_ActionParameterText] DEFAULT ('') FOR [ActionParameterText], CONSTRAINT [DF_t_ConversationLine_Icon] DEFAULT (0) FOR [Icon], CONSTRAINT [DF_t_ConversationLine_Comment] DEFAULT ('') FOR [Comment], CONSTRAINT [DF_t_ConversationLine_VoiceOverComment] DEFAULT ('') FOR [VoiceOverComment], CONSTRAINT [DF_t_ConversationLine_ActionPlotFlag] DEFAULT (0) FOR [ActionPlotFlag], CONSTRAINT [DF_t_ConversationLine_ActionResult] DEFAULT (1) FOR [ActionResult], CONSTRAINT [DF_t_ConversationLine_ConditionPlotFlag] DEFAULT (0) FOR [ConditionPlotFlag], CONSTRAINT [DF_t_ConversationLine_ConditionResult] DEFAULT (1) FOR [ConditionResult], CONSTRAINT [DF_t_ConversationLine_EditorComment] DEFAULT ('') FOR [EditorComment], CONSTRAINT [DF_t_ConversationLine_Speaker] DEFAULT ('') FOR [Speaker], CONSTRAINT [DF_t_ConversationLine_Listener] DEFAULT ('') FOR [Listener], CONSTRAINT [DF_t_ConversationLine_Visibility] DEFAULT (0) FOR [Visibility], CONSTRAINT [DF_t_ConversationLine_Ambient] DEFAULT (0) FOR [Ambient], CONSTRAINT [DF_t_ConversationLine_CameraTag] DEFAULT ('') FOR [CameraTag], CONSTRAINT [DF_t_ConversationLine_SpeakerAnimation] DEFAULT ('') FOR [SpeakerAnimation], CONSTRAINT [DF_t_ConversationLine_Emotion] DEFAULT (0) FOR [Emotion], CONSTRAINT [DF_t_ConversationLine_RoboBradSeed] DEFAULT (0) FOR [RoboBradSeed], CONSTRAINT [DF_t_ConversationLine_RoboBradSeedOverride] DEFAULT (0) FOR [RoboBradSeedOverride], CONSTRAINT [DF_t_ConversationLine_RoboBradLocked] DEFAULT (0) FOR [RoboBradLocked], CONSTRAINT [DF_t_ConversationLine_PreviewStageUseFirstMatch] DEFAULT (1) FOR [PreviewStageUseFirstMatch], CONSTRAINT [DF_t_ConversationLine_PreviewStagePositionX] DEFAULT (0) FOR [PreviewStagePositionX], CONSTRAINT [DF_t_ConversationLine_PreviewStagePositionY] DEFAULT (0) FOR [PreviewStagePositionY], CONSTRAINT [DF_t_ConversationLine_PreviewStagePositionZ] DEFAULT (0) FOR [PreviewStagePositionZ], CONSTRAINT [DF_t_ConversationLine_PreviewStageOrientationX] DEFAULT (0) FOR [PreviewStageOrientationX], CONSTRAINT [DF_t_ConversationLine_PreviewStageOrientationY] DEFAULT (0) FOR [PreviewStageOrientationY], CONSTRAINT [DF_t_ConversationLine_PreviewStageOrientationZ] DEFAULT (0) FOR [PreviewStageOrientationZ], CONSTRAINT [DF_t_ConversationLine_Skip] DEFAULT (0) FOR [Skip], CONSTRAINT [DF_t_ConversationLine_FastPath] DEFAULT (0) FOR [FastPath], CONSTRAINT [DF_t_ConversationLine_StageTag] DEFAULT ('') FOR [StageTag], CONSTRAINT [DF_t_ConversationLine_AnimationsLocked] DEFAULT (0) FOR [AnimationsLocked], CONSTRAINT [DF_t_ConversationLine_PlaySoundEvents] DEFAULT (1) FOR [PlaySoundEvents], CONSTRAINT [DF_t_ConversationLine_CameraLocked] DEFAULT (0) FOR [CameraLocked], CONSTRAINT [DF_t_ConversationLine_SecondaryCameraTag] DEFAULT ('') FOR [SecondaryCameraTag], CONSTRAINT [DF_t_ConversationLine_SecondaryCameraDelay] DEFAULT (0) FOR [SecondaryCameraDelay], CONSTRAINT [DF_t_ConversationLine_UseAnimationDuration] DEFAULT (0) FOR [UseAnimationDuration], CONSTRAINT [DF_t_ConversationLine_NoVOInGame] DEFAULT (0) FOR [NoVOInGame], CONSTRAINT [DF_t_ConversationLine_RevertAnimation] DEFAULT (0) FOR [RevertAnimation], CONSTRAINT [DF_t_ConversationLine_Narration] DEFAULT (0) FOR [Narration], CONSTRAINT [DF_t_ConversationLine_SlideShowTexture] DEFAULT ('') FOR [SlideShowTexture], CONSTRAINT [DF_t_ConversationLine_StageAtCurrentLocation] DEFAULT (0) FOR [StageAtCurrentLocation], CONSTRAINT [CK_t_ConversationLine] CHECK ([Index] >= 0) GO CREATE INDEX [IX_t_ConversationLine_FK1] ON [dbo].[t_ConversationLine]([TextStringID]) ON [PRIMARY] GO CREATE INDEX [IX_t_ConversationLine_MRRVIDSpeaker] ON [dbo].[t_ConversationLine]([ModuleResRefVersionID], [Speaker]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_ActionPlotResRefID] ON [dbo].[t_ConversationLine]([ActionPlotResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_ActionScriptResRefID] ON [dbo].[t_ConversationLine]([ActionScriptResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_ConditionPlotResRefID] ON [dbo].[t_ConversationLine]([ConditionPlotResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_ConditionScriptResRefID] ON [dbo].[t_ConversationLine]([ConditionScriptResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_StageResRefID] ON [dbo].[t_ConversationLine]([StageResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_CameraFunctionalShotResRefID] ON [dbo].[t_ConversationLine]([CameraFunctionalShotResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_CustomCutsceneResRefID] ON [dbo].[t_ConversationLine]([CustomCutsceneResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_t_ConversationLine_MRRVIDTextStringID] ON [dbo].[t_ConversationLine]([ModuleResRefVersionID], [TextStringID]) ON [PRIMARY] GO CREATE INDEX [IX_ConvLine_PreviewAreaResRefID] ON [dbo].[t_ConversationLine]([PreviewAreaResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Creature] ADD CONSTRAINT [DF_t_Creature_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_Creature_Race] DEFAULT ((-1)) FOR [Race], CONSTRAINT [DF_t_Creature_Appearance] DEFAULT (15) FOR [Appearance], CONSTRAINT [DF_t_Creature_Gender] DEFAULT (1) FOR [Gender], CONSTRAINT [DF_t_Creature_Group] DEFAULT (3) FOR [Group], CONSTRAINT [DF_t_Creature_Selectable] DEFAULT (1) FOR [Selectable], CONSTRAINT [DF_t_Creature_Head] DEFAULT (1) FOR [Head], CONSTRAINT [DF_t_Creature_Class] DEFAULT (1) FOR [Class], CONSTRAINT [DF_t_Creature_Package] DEFAULT (1) FOR [Package], CONSTRAINT [DF_t_Creature_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_Creature_Immortal] DEFAULT (0) FOR [Immortal], CONSTRAINT [DF_t_Creature_Plot] DEFAULT (0) FOR [Plot], CONSTRAINT [DF_t_Creature_PerceptionRange] DEFAULT (9) FOR [PerceptionRange], CONSTRAINT [DF_t_Creature_Gold] DEFAULT (0) FOR [Gold], CONSTRAINT [DF_t_Creature_Autobalance] DEFAULT (1) FOR [Autobalance], CONSTRAINT [DF_t_Creature_Hair] DEFAULT (1) FOR [Hair], CONSTRAINT [DF_t_Creature_Eyes] DEFAULT (1) FOR [Eyes], CONSTRAINT [DF_t_Creature_Variable2da] DEFAULT ('var_creature') FOR [Variable2da], CONSTRAINT [DF_t_Creature_Beard] DEFAULT (0) FOR [Beard], CONSTRAINT [DF_t_Creature_SkinTint] DEFAULT (0) FOR [SkinTint], CONSTRAINT [DF_t_Creature_Tattoo] DEFAULT (0) FOR [Tattoo], CONSTRAINT [DF_t_Creature_EyeTint] DEFAULT (0) FOR [EyeTint], CONSTRAINT [DF_t_Creature_HairTint] DEFAULT (0) FOR [HairTint], CONSTRAINT [DF_t_Creature_HeadMorph] DEFAULT ('') FOR [HeadMorph], CONSTRAINT [DF_t_Creature_Combatant] DEFAULT (0) FOR [Combatant], CONSTRAINT [DF_t_Creature_GUIBar] DEFAULT (0) FOR [GUIBar], CONSTRAINT [DF_t_Creature_BodyTintMask] DEFAULT (0) FOR [BodyTintMask], CONSTRAINT [DF_t_Creature_TattooTint] DEFAULT (0) FOR [TattooTint], CONSTRAINT [DF_t_Creature_NoPermanentDeath] DEFAULT (0) FOR [NoPermanentDeath], CONSTRAINT [DF_t_Creature_BodyTint] DEFAULT (0) FOR [BodyTint], CONSTRAINT [DF_t_Creature_Team] DEFAULT ((-1)) FOR [Team], CONSTRAINT [DF_t_Creature_PlotGiver] DEFAULT (0) FOR [PlotGiver], CONSTRAINT [DF_t_Creature_TreasureCategory] DEFAULT (0) FOR [TreasureCategory], CONSTRAINT [DF_Creature_PackageType] DEFAULT (0) FOR [PackageType], CONSTRAINT [DF_Creature_PackageAI] DEFAULT (0) FOR [PackageAI], CONSTRAINT [DF_t_Creature_MinLevel] DEFAULT (0) FOR [MinLevel], CONSTRAINT [DF_t_Creature_MaxLevel] DEFAULT (0) FOR [MaxLevel], CONSTRAINT [DF_t_Creature_ArtFidelity] DEFAULT (2) FOR [ArtFidelity] GO CREATE INDEX [IX_t_Creature_FK1] ON [dbo].[t_Creature]([NameStringID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Cutscene] ADD CONSTRAINT [DF_t_Cutscene_RunTime] DEFAULT (60000000) FOR [RunTime], CONSTRAINT [DF_t_Cutscene_PrimaryActor] DEFAULT ((-1)) FOR [PrimaryActor], CONSTRAINT [DF_t_Cutscene_Animatic] DEFAULT ('') FOR [Animatic], CONSTRAINT [DF_t_Cutscene_BeforeKeyBasedTracks] DEFAULT (0) FOR [BeforeKeyBasedTracks], CONSTRAINT [DF_t_Cutscene_ShowDynamics] DEFAULT (0) FOR [ShowDynamics], CONSTRAINT [DF_t_Cutscene_PlaySoundEvents] DEFAULT (0) FOR [PlaySoundEvents], CONSTRAINT [DF_t_Cutscene_UseMasterForLOD] DEFAULT (0) FOR [UseMasterForLOD], CONSTRAINT [DF_t_Cutscene_AreaPosOffsetX] DEFAULT (0) FOR [AreaPosOffsetX], CONSTRAINT [DF_t_Cutscene_AreaPosOffsetY] DEFAULT (0) FOR [AreaPosOffsetY], CONSTRAINT [DF_t_Cutscene_AreaPosOffsetZ] DEFAULT (0) FOR [AreaPosOffsetZ], CONSTRAINT [DF_t_Cutscene_AreaOriOffsetX] DEFAULT (0) FOR [AreaOriOffsetX], CONSTRAINT [DF_t_Cutscene_AreaOriOffsetY] DEFAULT (0) FOR [AreaOriOffsetY], CONSTRAINT [DF_t_Cutscene_AreaOriOffsetZ] DEFAULT (0) FOR [AreaOriOffsetZ], CONSTRAINT [DF_t_Cutscene_EnableLevelFBEs] DEFAULT (1) FOR [EnableLevelFBEs], CONSTRAINT [DF_t_Cutscene_FPS] DEFAULT (30) FOR [FPS], CONSTRAINT [DF_t_Cutscene_BeforeFixingGADOffsetBaking] DEFAULT (0) FOR [BeforeFixingGADOffsetBaking], CONSTRAINT [DF_t_Cutscene_PlayUntilVOCompletes] DEFAULT (0) FOR [PlayUntilVOCompletes], CONSTRAINT [DF_t_Cutscene_AreaRequired] DEFAULT (1) FOR [AreaRequired], CONSTRAINT [DF_t_Cutscene_ShadowRadius] DEFAULT (0) FOR [ShadowRadius], CONSTRAINT [DF_t_Cutscene_LightOcclusion] DEFAULT (0) FOR [LightOcclusion] GO ALTER TABLE [dbo].[t_CutsceneAction] ADD CONSTRAINT [DF_t_CutsceneAction_int1] DEFAULT (0) FOR [int1], CONSTRAINT [DF_t_CutsceneAction_int2] DEFAULT (0) FOR [int2], CONSTRAINT [DF_t_CutsceneAction_byte1] DEFAULT (0) FOR [byte1], CONSTRAINT [DF_t_CutsceneAction_real1] DEFAULT (0) FOR [real1], CONSTRAINT [DF_t_CutsceneAction_real2] DEFAULT (0) FOR [real2], CONSTRAINT [DF_t_CutsceneAction_real3] DEFAULT (0) FOR [real3], CONSTRAINT [DF_t_CutsceneAction_real4] DEFAULT (0) FOR [real4], CONSTRAINT [DF_t_CutsceneAction_real5] DEFAULT (0) FOR [real5], CONSTRAINT [DF_t_CutsceneAction_real6] DEFAULT (0) FOR [real6], CONSTRAINT [DF_t_CutsceneAction_bit1] DEFAULT (0) FOR [bit1], CONSTRAINT [DF_t_CutsceneAction_bit2] DEFAULT (0) FOR [bit2], CONSTRAINT [DF_t_CutsceneAction_varchar1] DEFAULT ('') FOR [varchar1], CONSTRAINT [DF_t_CutsceneAction_varchar2] DEFAULT ('') FOR [varchar2], CONSTRAINT [DF_t_CutsceneAction_int3] DEFAULT (0) FOR [int3], CONSTRAINT [DF_t_CutsceneAction_int4] DEFAULT (0) FOR [int4], CONSTRAINT [DF_t_CutsceneAction_int5] DEFAULT (0) FOR [int5], CONSTRAINT [DF_t_CutsceneAction_LoopingEndTime] DEFAULT (0) FOR [LoopingEndTime], CONSTRAINT [DF_t_CutsceneAction_varchar3] DEFAULT ('') FOR [varchar3], CONSTRAINT [DF_t_CutsceneAction_bit3] DEFAULT (0) FOR [bit3], CONSTRAINT [DF_t_CutsceneAction_GroupID] DEFAULT (0) FOR [GroupID], CONSTRAINT [DF_t_CutsceneAction_Infinite] DEFAULT (0) FOR [Infinite], CONSTRAINT [DF_t_CutsceneAction_bit4] DEFAULT (0) FOR [bit4], CONSTRAINT [DF_t_CutsceneAction_bit5] DEFAULT (0) FOR [bit5] GO CREATE INDEX [IX_CutsceneAction_ResRefID1] ON [dbo].[t_CutsceneAction]([ResRefID1]) ON [PRIMARY] GO CREATE INDEX [IX_t_CutsceneAction_MRRVIDTypeInt1] ON [dbo].[t_CutsceneAction]([ModuleResRefVersionID], [Type], [int1]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_CutsceneObject] ADD CONSTRAINT [DF_t_CutsceneObject_Model] DEFAULT ('') FOR [Model], CONSTRAINT [DF_t_CutsceneObject_WalkmeshInitial] DEFAULT (1) FOR [WalkmeshInitial], CONSTRAINT [DF_t_CutsceneObject_GlobalActor] DEFAULT (0) FOR [GlobalActor], CONSTRAINT [DF_t_CutsceneObject_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_CutsceneObject_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_CutsceneObject_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_CutsceneObject_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_CutsceneObject_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_CutsceneObject_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_CutsceneObject_Tag] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_CutsceneObject_real1] DEFAULT (0) FOR [real1], CONSTRAINT [DF_t_CutsceneObject_real2] DEFAULT (0) FOR [real2], CONSTRAINT [DF_t_CutsceneObject_real3] DEFAULT (0) FOR [real3], CONSTRAINT [DF_t_CutsceneObject_real4] DEFAULT (0) FOR [real4], CONSTRAINT [DF_t_CutsceneObject_int1] DEFAULT (0) FOR [int1], CONSTRAINT [DF_t_CutsceneObject_int2] DEFAULT (0) FOR [int2], CONSTRAINT [DF_t_CutsceneObject_AttachedToActorID] DEFAULT ((-1)) FOR [AttachedToActorID], CONSTRAINT [DF_t_CutsceneObject_real5] DEFAULT (0) FOR [real5], CONSTRAINT [DF_t_CutsceneObject_UsePose] DEFAULT (0) FOR [UsePose], CONSTRAINT [DF_t_CutsceneObject_Pose] DEFAULT ((-1)) FOR [Pose], CONSTRAINT [DF_t_CutsceneObject_PoseSpeed] DEFAULT (1) FOR [PoseSpeed], CONSTRAINT [DF_t_CutsceneObject_OriginX] DEFAULT (0) FOR [OriginX], CONSTRAINT [DF_t_CutsceneObject_OriginY] DEFAULT (0) FOR [OriginY], CONSTRAINT [DF_t_CutsceneObject_OriginZ] DEFAULT (0) FOR [OriginZ], CONSTRAINT [DF_t_CutsceneObject_OriginYaw] DEFAULT (0) FOR [OriginYaw], CONSTRAINT [DF_t_CutsceneObject_OriginPitch] DEFAULT (0) FOR [OriginPitch], CONSTRAINT [DF_t_CutsceneObject_OriginRoll] DEFAULT (0) FOR [OriginRoll], CONSTRAINT [DF_t_CutsceneObject_MappingTag] DEFAULT ('') FOR [MappingTag], CONSTRAINT [DF_t_CutsceneObject_TransitionDelay] DEFAULT (0) FOR [TransitionDelay], CONSTRAINT [DF_t_CutsceneObject_PreviousPose] DEFAULT ((-1)) FOR [PreviousPose], CONSTRAINT [DF_t_CutsceneObject_MappingRequired] DEFAULT (0) FOR [MappingRequired], CONSTRAINT [DF_t_CutsceneObject_ExportResRef] DEFAULT (1) FOR [ExportResRef], CONSTRAINT [DF_t_CutsceneObject_TargetActorID] DEFAULT ((-1)) FOR [TargetActorID], CONSTRAINT [DF_t_CutsceneObject_LOD] DEFAULT (0) FOR [LOD], CONSTRAINT [DF_t_CutsceneObject_ModelScale] DEFAULT (1) FOR [ModelScale] GO CREATE INDEX [IX_t_CutsceneObject] ON [dbo].[t_CutsceneObject]([ResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Item] ADD CONSTRAINT [DF_t_Item_BaseItemType] DEFAULT (2) FOR [BaseItemType], CONSTRAINT [DF_t_Item_Appearance] DEFAULT (2) FOR [Appearance], CONSTRAINT [DF_t_Item_MaterialType] DEFAULT ((-1)) FOR [MaterialType], CONSTRAINT [DF_t_Item_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_Item_Plot] DEFAULT (0) FOR [Plot], CONSTRAINT [DF_t_Item_CostOverride] DEFAULT (0) FOR [CostOverride], CONSTRAINT [DF_t_Item_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_Item_Variable2da] DEFAULT ('var_item') FOR [Variable2da], CONSTRAINT [DF_t_Item_Heraldry] DEFAULT (0) FOR [Heraldry], CONSTRAINT [DF_t_Item_TintOverride] DEFAULT (0) FOR [TintOverride], CONSTRAINT [DF_t_Item_Damaged] DEFAULT (0) FOR [Damaged], CONSTRAINT [DF_t_Item_OnHitEffectID] DEFAULT (0) FOR [OnHitEffectID], CONSTRAINT [DF_t_Item_OnHitPower] DEFAULT (0) FOR [OnHitPower], CONSTRAINT [DF_t_Item_RecipeType] DEFAULT (0) FOR [RecipeType], CONSTRAINT [DF_t_Item_Unique] DEFAULT (0) FOR [Unique], CONSTRAINT [DF_t_Item_MaterialProgression] DEFAULT ((-1)) FOR [MaterialProgression], CONSTRAINT [DF_t_Item_BodyTintMask] DEFAULT (0) FOR [BodyTintMask], CONSTRAINT [DF_t_Item_BodyTint] DEFAULT (0) FOR [BodyTint], CONSTRAINT [DF_t_Item_InventorySubgroup] DEFAULT (0) FOR [InventorySubgroup] GO CREATE INDEX [IX_t_Item_1] ON [dbo].[t_Item]([NameStringID]) ON [PRIMARY] GO CREATE INDEX [IX_t_Item_2] ON [dbo].[t_Item]([DescriptionStringID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Merchant] ADD CONSTRAINT [DF_t_Merchant_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_Merchant_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_Merchant_SellMarkUp] DEFAULT (0) FOR [SellMarkUp], CONSTRAINT [DF_t_Merchant_BuyMarkDown] DEFAULT (0) FOR [BuyMarkDown], CONSTRAINT [DF_t_Merchant_BuyRestricted] DEFAULT (0) FOR [BuyRestricted], CONSTRAINT [DF_t_Merchant_Variable2da] DEFAULT ('var_merchant') FOR [Variable2da] GO ALTER TABLE [dbo].[t_ModuleResRef] ADD CONSTRAINT [DF_t_ModuleResRef_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_ModuleResRef_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_ModuleResRef_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_ModuleResRef_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_ModuleResRefVersion] ADD CONSTRAINT [DF_t_ModuleResRefVersion_FolderName] DEFAULT ('') FOR [Folder], CONSTRAINT [DF_t_ModuleResRefVersion_Date] DEFAULT (getdate()) FOR [Date], CONSTRAINT [DF_t_ModuleResRefVersion_UserName] DEFAULT (suser_sname()) FOR [UserName], CONSTRAINT [DF_t_ModuleResRefVersion_Status] DEFAULT ('C') FOR [Status], CONSTRAINT [DF_t_ModuleResRefVersion_State] DEFAULT (0) FOR [State], CONSTRAINT [CK_t_ModuleResRefVersion_Status] CHECK ([Status] = 'C' or ([Status] = 'H' or [Status] = 'S')) GO CREATE INDEX [IX_t_ModuleResRefVersion] ON [dbo].[t_ModuleResRefVersion]([Name], [Status], [ModuleID], [ResRefID]) ON [PRIMARY] GO CREATE INDEX [IX2_t_ModuleResRefVersion] ON [dbo].[t_ModuleResRefVersion]([ModuleID], [ResRefID], [Status], [Date]) ON [PRIMARY] GO CREATE INDEX [IX3_t_ModuleResRefVersion] ON [dbo].[t_ModuleResRefVersion]([ModuleID], [ResRefID], [OwnerModuleID], [Status], [Date]) ON [PRIMARY] GO CREATE INDEX [IX4_t_ModuleResRefVersion] ON [dbo].[t_ModuleResRefVersion]([ModuleID], [ResRefID], [Status], [Date], [OwnerModuleID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Placeable] ADD CONSTRAINT [DF_t_Placeable_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_Placeable_Group] DEFAULT (0) FOR [Group], CONSTRAINT [DF_t_Placeable_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_Placeable_Appearance] DEFAULT (1) FOR [Appearance], CONSTRAINT [DF_t_Placeable_InitialAnimation] DEFAULT (0) FOR [InitialAnimation], CONSTRAINT [DF_t_Placeable_Health] DEFAULT (1) FOR [Health], CONSTRAINT [DF_t_Placeable_Indestructible] DEFAULT (0) FOR [Indestructible], CONSTRAINT [DF_t_Placeable_PickLockLevel] DEFAULT (1) FOR [PickLockLevel], CONSTRAINT [DF_t_Placeable_KeyTag] DEFAULT ('') FOR [KeyTag], CONSTRAINT [DF_t_Placeable_AutoRemoveKey] DEFAULT (0) FOR [AutoRemoveKey], CONSTRAINT [DF_t_Placeable_TrapDetectionDifficulty] DEFAULT (0) FOR [TrapDetectionDifficulty], CONSTRAINT [DF_t_Placeable_TrapDisarmDifficulty] DEFAULT (0) FOR [TrapDisarmDifficulty], CONSTRAINT [DF_t_Placeable_KeyRequired] DEFAULT (0) FOR [KeyRequired], CONSTRAINT [DF_t_Placeable_Useable] DEFAULT (1) FOR [Useable], CONSTRAINT [DF_t_Placeable_Plot] DEFAULT (0) FOR [Plot], CONSTRAINT [DF_t_Placeable_MaxHealth] DEFAULT (0) FOR [MaxHealth], CONSTRAINT [DF_t_Placeable_Variable2da] DEFAULT ('var_placeable') FOR [Variable2da], CONSTRAINT [DF_t_Placeable_Rank] DEFAULT (0) FOR [Rank], CONSTRAINT [DF_t_Placeable_TreasureCategory] DEFAULT (0) FOR [TreasureCategory], CONSTRAINT [DF_t_Placeable_Team] DEFAULT ((-1)) FOR [Team] GO CREATE INDEX [IX_t_Placeable_FK1] ON [dbo].[t_Placeable]([NameStringID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Plot] ADD CONSTRAINT [DF_t_Plot_Priority] DEFAULT (1) FOR [Priority], CONSTRAINT [DF_t_Plot_GUID] DEFAULT (newid()) FOR [GUID], CONSTRAINT [DF_t_Plot_JournalImage] DEFAULT ('') FOR [JournalImage], CONSTRAINT [DF_t_Plot_EntryType] DEFAULT (1) FOR [EntryType], CONSTRAINT [DF_t_Plot_AllowPausing] DEFAULT (0) FOR [AllowPausing] GO ALTER TABLE [dbo].[t_PlotStatus] ADD CONSTRAINT [DF_t_PlotStatus_Name] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_PlotStatus_RewardID] DEFAULT (0) FOR [RewardID], CONSTRAINT [DF_t_PlotStatus_Comment] DEFAULT ('') FOR [Comment], CONSTRAINT [DF_t_PlotStatus_AreaLocationTag] DEFAULT ('') FOR [AreaLocationTag] GO ALTER TABLE [dbo].[t_Script] ADD CONSTRAINT [DF_t_Script_Text] DEFAULT ('') FOR [Text] GO CREATE INDEX [IX_ScriptReference_ResRefID] ON [dbo].[t_Script_Reference]([ReferencedResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Stage] ADD CONSTRAINT [DF_t_Stage_Comment] DEFAULT ('') FOR [Comment], CONSTRAINT [DF_t_Stage_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_Stage_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_Stage_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_Stage_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_Stage_Yaw] DEFAULT (0) FOR [Yaw] GO ALTER TABLE [dbo].[t_StringLanguage] ADD CONSTRAINT [DF_t_StringLanguage_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringLanguage_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringLanguage_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringLanguage_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy] GO ALTER TABLE [dbo].[t_StringLanguageVariant] ADD CONSTRAINT [DF_t_StringLanguageVariant_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringLanguageVariant_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringLanguageVariant_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringLanguageVariant_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy], CONSTRAINT [IX_t_StringLanguageVariant] UNIQUE NONCLUSTERED ( [StringLanguageID], [StringVariantID] ) ON [PRIMARY] GO CREATE INDEX [IX_t_StringLanguageVariant_FK2] ON [dbo].[t_StringLanguageVariant]([StringVariantID]) ON [PRIMARY] GO CREATE INDEX [IX1_t_StringLanguageVariantVersion] ON [dbo].[t_StringLanguageVariantVersion]([StringImportSessionID]) ON [PRIMARY] GO CREATE INDEX [IX2_t_StringLanguageVariantVersion] ON [dbo].[t_StringLanguageVariantVersion]([StringLanguageVariantID]) ON [PRIMARY] GO CREATE INDEX [IX3_t_StringLanguageVariantVersion] ON [dbo].[t_StringLanguageVariantVersion]([Status]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_StringText] ADD CONSTRAINT [DF_t_StringText_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_StringText_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_StringText_LastMajorUpdateOn] DEFAULT (getdate()) FOR [LastMajorUpdateOn], CONSTRAINT [DF_t_StringText_LastMajorUpdateBy] DEFAULT (suser_sname()) FOR [LastMajorUpdateBy], CONSTRAINT [DF_t_StringText_LastMinorUpdateOn] DEFAULT (getdate()) FOR [LastMinorUpdateOn], CONSTRAINT [DF_t_StringText_LastMinorUpdateBy] DEFAULT (suser_sname()) FOR [LastMinorUpdateBy], CONSTRAINT [DF_t_StringText_MinorUpdateCount] DEFAULT (0) FOR [MinorUpdateCount], CONSTRAINT [DF_t_StringText_WordCount] DEFAULT (0) FOR [WordCount], CONSTRAINT [DF_t_StringText_StringIsCopy] DEFAULT (0) FOR [StringIsCopy], CONSTRAINT [DF_t_StringText_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_StringText_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy], CONSTRAINT [DF_t_StringText_VORequestOn] DEFAULT (getdate()) FOR [VORequestOn], CONSTRAINT [DF_t_StringText_ReRecord] DEFAULT (0) FOR [ReRecord] GO CREATE INDEX [IX_t_StringText_FK1] ON [dbo].[t_StringText]([StringID], [ModuleResRefVersionID], [WordCount], [VORequestOn]) ON [PRIMARY] GO CREATE INDEX [IX_t_StringText_FK2] ON [dbo].[t_StringText]([StringLanguageVariantID]) ON [PRIMARY] GO CREATE INDEX [IX_t_StringText] ON [dbo].[t_StringText]([ModuleResRefVersionID]) ON [PRIMARY] GO CREATE INDEX [IX_t_StringText_TextAudit] ON [dbo].[t_StringText]([StringID], [ModuleResRefVersionID], [LastMinorUpdateOn], [LastMajorUpdateOn]) ON [PRIMARY] GO CREATE INDEX [IX_t_StringVersion_StringIDMRRVIDStringTypeID] ON [dbo].[t_StringVersion]([StringID], [ModuleResRefVersionID], [StringTypeID]) ON [PRIMARY] GO CREATE INDEX [IX_t_StringVersion_MRRVIDStringIDStringTypeID] ON [dbo].[t_StringVersion]([ModuleResRefVersionID], [StringID], [StringTypeID]) WITH FILLFACTOR = 90 ON [PRIMARY] GO ALTER TABLE [dbo].[t_Trigger] ADD CONSTRAINT [DF_t_Trigger_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_Trigger_Group] DEFAULT (0) FOR [Group], CONSTRAINT [DF_t_Trigger_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_Trigger_LinkedTo] DEFAULT ('') FOR [LinkedTo], CONSTRAINT [DF_t_Trigger_Variable2da] DEFAULT ('var_trigger') FOR [Variable2da] GO ALTER TABLE [dbo].[t_VOScript] ADD CONSTRAINT [DF_t_VOScript_PlayerScript] DEFAULT (0) FOR [PlayerScript], CONSTRAINT [DF_t_VOScript_IsActive] DEFAULT (1) FOR [IsActive] GO CREATE INDEX [IX_t_VOScript_Resource] ON [dbo].[t_VOScript]([ResourceModuleID], [ResourceResRefID]) ON [PRIMARY] GO CREATE INDEX [IX_t_VOScript_Character] ON [dbo].[t_VOScript]([CharacterModuleID], [CharacterResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_AreaAudioVolume] ADD CONSTRAINT [DF_t_AreaAudioVolume_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_AreaAudioVolume_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_AreaAudioVolume_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_AreaAudioVolume_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_AreaAudioVolume_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_AreaAudioVolume_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_AreaAudioVolume_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_AreaAudioVolume_AudioVolumeName] DEFAULT ('') FOR [AudioVolumeName], CONSTRAINT [DF_t_AreaAudioVolume_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_AreaAudioVolume_ReverbPreset] DEFAULT ('') FOR [ReverbPreset], CONSTRAINT [DF_t_AreaAudioVolume_GUID] DEFAULT ('{00000000-0000-0000-0000-000000000000}') FOR [GUID] GO ALTER TABLE [dbo].[t_AreaAudioVolumeGeometry] ADD CONSTRAINT [DF_t_AreaAudioVolumeGeometry_VertexX] DEFAULT (0) FOR [VertexX], CONSTRAINT [DF_t_AreaAudioVolumeGeometry_VertexY] DEFAULT (0) FOR [VertexY], CONSTRAINT [DF_t_AreaAudioVolumeGeometry_VertexZ] DEFAULT (0) FOR [VertexZ] GO ALTER TABLE [dbo].[t_AreaAudioVolumeSound] ADD CONSTRAINT [DF_t_AreaAudioVolumeSound_Active] DEFAULT (1) FOR [Active], CONSTRAINT [DF_t_AreaAudioVolumeSound_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_AreaAudioVolumeSound_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_AreaAudioVolumeSound_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_AreaAudioVolumeSound_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_AreaAudioVolumeSound_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_AreaAudioVolumeSound_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_AreaAudioVolumeSound_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_AreaAudioVolumeSound_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_AreaAudioVolumeSound_SoundName] DEFAULT ('') FOR [SoundName], CONSTRAINT [DF_t_AreaAudioVolumeSound_Volume] DEFAULT (0) FOR [Volume], CONSTRAINT [DF_t_AreaAudioVolumeSound_Pitch] DEFAULT (0) FOR [Pitch], CONSTRAINT [DF_t_AreaAudioVolumeSound_FadeIn] DEFAULT (0) FOR [FadeIn], CONSTRAINT [DF_t_AreaAudioVolumeSound_FadeOut] DEFAULT (0) FOR [FadeOut], CONSTRAINT [DF_t_AreaAudioVolumeSound_MaxRangeMult] DEFAULT (0) FOR [MaxRangeMult], CONSTRAINT [DF_t_AreaAudioVolumeSound_ConeInside] DEFAULT (0) FOR [ConeInside], CONSTRAINT [DF_t_AreaAudioVolumeSound_ConeOutside] DEFAULT (0) FOR [ConeOutside], CONSTRAINT [DF_t_AreaAudioVolumeSound_ConeOutsideVolume] DEFAULT (0) FOR [ConeOutsideVolume], CONSTRAINT [DF_t_AreaAudioVolumeSound_Priority] DEFAULT (0) FOR [Priority], CONSTRAINT [DF_t_AreaAudioVolumeSound_Occludable] DEFAULT (1) FOR [Occludable] GO ALTER TABLE [dbo].[t_AreaMusicVolumeGeometry] ADD CONSTRAINT [DF_t_AreaMusicVolumeGeometry_VertexX] DEFAULT (0) FOR [VertexX], CONSTRAINT [DF_t_AreaMusicVolumeGeometry_VertexY] DEFAULT (0) FOR [VertexY], CONSTRAINT [DF_t_AreaMusicVolumeGeometry_VertexZ] DEFAULT (0) FOR [VertexZ] GO ALTER TABLE [dbo].[t_AreaObjectGeometry] ADD CONSTRAINT [DF_t_AreaObjectGeometry_VertexX] DEFAULT (0) FOR [VertexX], CONSTRAINT [DF_t_AreaObjectGeometry_VertexY] DEFAULT (0) FOR [VertexY], CONSTRAINT [DF_t_AreaObjectGeometry_VertexZ] DEFAULT (0) FOR [VertexZ] GO ALTER TABLE [dbo].[t_AreaReverbVolume] ADD CONSTRAINT [DF_t_AreaReverbVolume_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_AreaReverbVolume_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_AreaReverbVolume_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_AreaReverbVolume_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_AreaReverbVolume_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_AreaReverbVolume_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_AreaReverbVolume_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_AreaReverbVolume_ReverbVolumeName] DEFAULT ('') FOR [ReverbVolumeName], CONSTRAINT [DF_t_AreaReverbVolume_ReverbPreset] DEFAULT ('') FOR [ReverbPreset], CONSTRAINT [DF_t_AreaReverbVolume_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_AreaReverbVolume_Priority] DEFAULT (0) FOR [Priority], CONSTRAINT [DF_t_AreaReverbVolume_GUID] DEFAULT ('{00000000-0000-0000-0000-000000000000}') FOR [GUID] GO ALTER TABLE [dbo].[t_AreaReverbVolumeGeometry] ADD CONSTRAINT [DF_t_AreaReverbVolumeGeometry_VertexX] DEFAULT (0) FOR [VertexX], CONSTRAINT [DF_t_AreaReverbVolumeGeometry_VertexY] DEFAULT (0) FOR [VertexY], CONSTRAINT [DF_t_AreaReverbVolumeGeometry_VertexZ] DEFAULT (0) FOR [VertexZ] GO ALTER TABLE [dbo].[t_AreaSound] ADD CONSTRAINT [DF_t_AreaSound_Active] DEFAULT (1) FOR [Active], CONSTRAINT [DF_t_AreaSound_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_AreaSound_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_AreaSound_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_AreaSound_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_AreaSound_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_AreaSound_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_AreaSound_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_AreaSound_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_AreaSound_SoundName] DEFAULT ('') FOR [SoundName], CONSTRAINT [DF_t_AreaSound_Volume] DEFAULT (0) FOR [Volume], CONSTRAINT [DF_t_AreaSound_Pitch] DEFAULT (0) FOR [Pitch], CONSTRAINT [DF_t_AreaSound_FadeIn] DEFAULT (0) FOR [FadeIn], CONSTRAINT [DF_t_AreaSound_FadeOut] DEFAULT (0) FOR [FadeOut], CONSTRAINT [DF_t_AreaSound_MaxRangeMult] DEFAULT (0) FOR [MaxRangeMult], CONSTRAINT [DF_t_AreaSound_ConeInside] DEFAULT (0) FOR [ConeInside], CONSTRAINT [DF_t_AreaSound_ConeOutside] DEFAULT (0) FOR [ConeOutside], CONSTRAINT [DF_t_AreaSound_ConeOutsideVolume] DEFAULT (0) FOR [ConeOutsideVolume], CONSTRAINT [DF_t_AreaSound_Priority] DEFAULT (0) FOR [Priority], CONSTRAINT [DF_t_AreaSound_Occludable] DEFAULT (1) FOR [Occludable], CONSTRAINT [DF_t_AreaSound_GUID] DEFAULT ('{00000000-0000-0000-0000-000000000000}') FOR [GUID] GO ALTER TABLE [dbo].[t_AreaWaypoint] ADD CONSTRAINT [DF_t_AreaWaypoint_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_AreaWaypoint_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_AreaWaypoint_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_AreaWaypoint_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_AreaWaypoint_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_AreaWaypoint_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_AreaWaypoint_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_AreaWaypoint_WaypointName] DEFAULT ('') FOR [WaypointName], CONSTRAINT [DF_t_AreaWaypoint_Group] DEFAULT (0) FOR [Group], CONSTRAINT [DF_t_AreaWaypoint_MapNoteEnabled] DEFAULT (0) FOR [MapNoteEnabled], CONSTRAINT [DF_t_AreaWaypoint_Colour] DEFAULT (1) FOR [Colour], CONSTRAINT [DF_t_AreaWaypoint_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_AreaWaypoint_MapNoteType] DEFAULT (0) FOR [MapNoteType], CONSTRAINT [DF_t_AreaWaypoint_GUID] DEFAULT ('{00000000-0000-0000-0000-000000000000}') FOR [GUID] GO ALTER TABLE [dbo].[t_ConversationAnimations] ADD CONSTRAINT [DF_t_ConversationAnimations_Locked] DEFAULT (0) FOR [Locked] GO ALTER TABLE [dbo].[t_CreatureAbility] ADD CONSTRAINT [DF_t_CreatureAbility_Level] DEFAULT (0) FOR [Level], CONSTRAINT [CK_t_CreatureAbility] CHECK ([Type] >= 0 and [Type] <= 2) GO ALTER TABLE [dbo].[t_CutsceneActionFBEParameter] ADD CONSTRAINT [DF_t_CutsceneActionFBEParameter_Name] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_CutsceneActionFBEParameter_Animatable] DEFAULT (0) FOR [Animatable], CONSTRAINT [DF_t_CutsceneActionFBEParameter_Value] DEFAULT (0) FOR [Value] GO ALTER TABLE [dbo].[t_ItemProperty] ADD CONSTRAINT [DF_t_ItemProperty_PropertyID] DEFAULT (0) FOR [PropertyID], CONSTRAINT [DF_t_ItemProperty_Power] DEFAULT (0) FOR [Power] GO ALTER TABLE [dbo].[t_MapPin] ADD CONSTRAINT [DF_t_MapPin_PinType] DEFAULT (0) FOR [PinType], CONSTRAINT [DF_t_MapPin_InitialState] DEFAULT (0) FOR [InitialState], CONSTRAINT [DF_t_MapPin_TerrainType] DEFAULT (0) FOR [TerrainType], CONSTRAINT [DF_t_MapPin_LocationX] DEFAULT (0) FOR [LocationX], CONSTRAINT [DF_t_MapPin_LocationY] DEFAULT (0) FOR [LocationY], CONSTRAINT [DF_t_MapPin_Name] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_MapPin_AreaTag] DEFAULT ('') FOR [AreaTag], CONSTRAINT [DF_t_MapPin_WaypointOverride] DEFAULT ('') FOR [WaypointOverride] GO ALTER TABLE [dbo].[t_MapTrail] ADD CONSTRAINT [DF_t_MapTrail_Name] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_MapTrail_Pin1Tag] DEFAULT ('') FOR [Pin1Tag], CONSTRAINT [DF_t_MapTrail_Pin2Tag] DEFAULT ('') FOR [Pin2Tag] GO ALTER TABLE [dbo].[t_MapTrailPoint] ADD CONSTRAINT [DF_t_MapTrailPoint_LocationX] DEFAULT (0) FOR [LocationX], CONSTRAINT [DF_t_MapTrailPoint_LocationY] DEFAULT (0) FOR [LocationY] GO ALTER TABLE [dbo].[t_StageFBEParameter] ADD CONSTRAINT [DF_t_StageFBEParameter_Name] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_StageFBEParameter_Value] DEFAULT (0) FOR [Value] GO ALTER TABLE [dbo].[t_VOSessionInstanceVersion] ADD CONSTRAINT [DF_t_VOSessionInstanceVersion_CreatedOn] DEFAULT (getutcdate()) FOR [CreatedOn], CONSTRAINT [DF_t_VOSessionInstanceVersion_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy] GO ALTER TABLE [dbo].[t_VOSessionVersion] ADD CONSTRAINT [DF_t_VOSessionVersion_CreatedOn] DEFAULT (getutcdate()) FOR [CreatedOn], CONSTRAINT [DF_t_VOSessionVersion_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy] GO ALTER TABLE [dbo].[t_AreaList] ADD CONSTRAINT [DF_t_AreaList_Description] DEFAULT ('') FOR [Description] GO ALTER TABLE [dbo].[t_AreaMusicVolume] ADD CONSTRAINT [DF_t_AreaMusicVolume_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_AreaMusicVolume_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_AreaMusicVolume_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_AreaMusicVolume_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_AreaMusicVolume_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_AreaMusicVolume_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_AreaMusicVolume_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_AreaMusicVolume_MusicVolumeName] DEFAULT ('') FOR [MusicVolumeName], CONSTRAINT [DF_t_AreaMusicVolume_Comments] DEFAULT ('') FOR [Comments], CONSTRAINT [DF_t_AreaMusicVolume_EnterState] DEFAULT (0) FOR [EnterState], CONSTRAINT [DF_t_AreaMusicVolume_EnterDelay] DEFAULT (0) FOR [EnterStateDelay], CONSTRAINT [DF_t_AreaMusicVolume_ExitState] DEFAULT (0) FOR [ExitState], CONSTRAINT [DF_t_AreaMusicVolume_ExitDelay] DEFAULT (0) FOR [ExitStateDelay], CONSTRAINT [DF_t_AreaMusicVolume_ScriptDelay] DEFAULT (0) FOR [ScriptDelay], CONSTRAINT [DF_t_AreaMusicVolume_GUID] DEFAULT ('{00000000-0000-0000-0000-000000000000}') FOR [GUID] GO ALTER TABLE [dbo].[t_AreaObject] ADD CONSTRAINT [DF_t_AreaObject_PositionX] DEFAULT (0) FOR [PositionX], CONSTRAINT [DF_t_AreaObject_PositionY] DEFAULT (0) FOR [PositionY], CONSTRAINT [DF_t_AreaObject_PositionZ] DEFAULT (0) FOR [PositionZ], CONSTRAINT [DF_t_AreaObject_OrientationX] DEFAULT (0) FOR [OrientationX], CONSTRAINT [DF_t_AreaObject_OrientationY] DEFAULT (0) FOR [OrientationY], CONSTRAINT [DF_t_AreaObject_OrientationZ] DEFAULT (0) FOR [OrientationZ], CONSTRAINT [DF_t_AreaObject_Active] DEFAULT (1) FOR [Active], CONSTRAINT [DF_t_AreaObject_Platform] DEFAULT (0) FOR [Platform], CONSTRAINT [DF_t_AreaObject_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_AreaObject_InitialAnimation] DEFAULT (0) FOR [InitialAnimation], CONSTRAINT [DF_t_AreaObject_Team] DEFAULT ((-1)) FOR [Team], CONSTRAINT [DF_t_AreaObject_Trackable] DEFAULT (1) FOR [Trackable], CONSTRAINT [DF_t_AreaObject_RoomID1] DEFAULT ((-1)) FOR [RoomID1], CONSTRAINT [DF_t_AreaObject_RoomID2] DEFAULT ((-1)) FOR [RoomID2], CONSTRAINT [DF_t_AreaObject_Rank] DEFAULT ((-1)) FOR [Rank], CONSTRAINT [DF_t_AreaObject_TreasureCategory] DEFAULT ((-1)) FOR [TreasureCategory], CONSTRAINT [DF_t_AreaObject_WeaponsDrawn] DEFAULT (0) FOR [WeaponsDrawn], CONSTRAINT [DF_t_AreaObject_PickLockLevel] DEFAULT ((-1)) FOR [PickLockLevel], CONSTRAINT [DF_t_AreaObject_GUID] DEFAULT ('{00000000-0000-0000-0000-000000000000}') FOR [GUID], CONSTRAINT [DF_t_AreaObject_InteractionRadius] DEFAULT (0) FOR [InteractionRadius], CONSTRAINT [DF_t_AreaObject_TrapDetectionDifficulty] DEFAULT ((-1)) FOR [TrapDetectionDifficulty], CONSTRAINT [DF_t_AreaObject_TrapDisarmDifficulty] DEFAULT ((-1)) FOR [TrapDisarmDifficulty], CONSTRAINT [DF_t_AreaObject_Useable] DEFAULT ((-1)) FOR [Useable] GO CREATE INDEX [IX_t_AreaObject] ON [dbo].[t_AreaObject]([ObjectResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_Character] ADD CONSTRAINT [DF_t_Character_Name] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_Character_Description] DEFAULT ('') FOR [Description], CONSTRAINT [DF_t_Character_Phonetic] DEFAULT ('') FOR [Phonetic], CONSTRAINT [DF_t_Character_Age] DEFAULT (0) FOR [Age], CONSTRAINT [DF_t_Character_Gender] DEFAULT (3) FOR [Gender], CONSTRAINT [DF_t_Character_Occupation] DEFAULT ('') FOR [Occupation], CONSTRAINT [DF_t_Character_Morals] DEFAULT ('') FOR [Morals], CONSTRAINT [DF_t_Character_Appearance] DEFAULT ('') FOR [Appearance], CONSTRAINT [DF_t_Character_Flaws] DEFAULT ('') FOR [Flaws], CONSTRAINT [DF_t_Character_Skills] DEFAULT ('') FOR [Skills], CONSTRAINT [DF_t_Character_SpeechPatterns] DEFAULT ('') FOR [SpeechPatterns], CONSTRAINT [DF_t_Character_VORecorded] DEFAULT (0) FOR [VORecorded], CONSTRAINT [DF_t_Character_CharacterType] DEFAULT (0) FOR [CharacterType], CONSTRAINT [DF_t_Character_Race] DEFAULT (3) FOR [Race], CONSTRAINT [DF_t_Character_Language] DEFAULT (0) FOR [Language], CONSTRAINT [DF_t_Character_Accent] DEFAULT ('') FOR [Accent], CONSTRAINT [DF_t_Character_Purpose] DEFAULT ('') FOR [Purpose], CONSTRAINT [DF_t_Character_RelationshipToPlayer] DEFAULT ('') FOR [RelationshipToPlayer], CONSTRAINT [DF_t_Character_Archetype] DEFAULT ('') FOR [Archetype], CONSTRAINT [DF_t_Character_Demeanor] DEFAULT ('') FOR [Demeanor], CONSTRAINT [DF_t_Character_ImageFilename] DEFAULT ('') FOR [ImageFilename], CONSTRAINT [DF_t_Character_PersonalBackground] DEFAULT ('') FOR [PersonalBackground], CONSTRAINT [DF_t_Character_CulturalBackground] DEFAULT ('') FOR [CulturalBackground], CONSTRAINT [DF_t_Character_Intelligence] DEFAULT (1) FOR [Intelligence], CONSTRAINT [DF_t_Character_TiesToOtherCharacters] DEFAULT ('') FOR [TiesToOtherCharacters], CONSTRAINT [DF_t_Character_CombatSoundsetNeeded] DEFAULT (0) FOR [CombatSoundsetNeeded], CONSTRAINT [DF_t_Character_Plots] DEFAULT ('') FOR [Plots], CONSTRAINT [DF_t_Character_Player] DEFAULT (0) FOR [Player], CONSTRAINT [DF_t_Character_VOCastingColor] DEFAULT (0x00ffffff) FOR [VOCastingColor], CONSTRAINT [DF_t_Character_VOCastingNotes] DEFAULT ('') FOR [VOCastingNotes], CONSTRAINT [DF_t_Character_SoundsetResRefIDIsSharedLink] DEFAULT (0) FOR [SoundsetResRefIDIsSharedLink] GO ALTER TABLE [dbo].[t_ConversationCinematics] ADD CONSTRAINT [DF_t_ConversationCinematics_TagOverride] DEFAULT (0) FOR [TagOverride], CONSTRAINT [DF_t_ConversationCinematics_Tag] DEFAULT ('') FOR [Tag], CONSTRAINT [DF_t_ConversationCinematics_LookAtOverride] DEFAULT (0) FOR [LookAtOverride], CONSTRAINT [DF_t_ConversationCinematics_LookAt] DEFAULT ('') FOR [LookAt], CONSTRAINT [DF_t_ConversationCinematics_PoseOverride] DEFAULT (0) FOR [PoseOverride], CONSTRAINT [DF_t_ConversationCinematics_FunctionalShotActor] DEFAULT ('') FOR [FunctionalShotActor], CONSTRAINT [DF_t_ConversationCinematics_Pose] DEFAULT ((-1)) FOR [Pose], CONSTRAINT [DF_t_ConversationCinematics_HeadLookAtOverride] DEFAULT (0) FOR [HeadLookAtOverride], CONSTRAINT [DF_t_ConversationCinematics_HeadLookAt] DEFAULT ('') FOR [HeadLookAt], CONSTRAINT [DF_t_ConversationCinematics_ActivationAction] DEFAULT (0) FOR [ActivationAction], CONSTRAINT [DF_t_ConversationCinematics_TransitionDelay] DEFAULT (0) FOR [TransitionDelay], CONSTRAINT [DF_t_ConversationCinematics_MappingRequired] DEFAULT (1) FOR [MappingRequired], CONSTRAINT [DF_t_ConversationCinematics_LockPose] DEFAULT (0) FOR [LockPose], CONSTRAINT [DF_t_ConversationCinematics_HelmetOverride] DEFAULT (0) FOR [HelmetOverride], CONSTRAINT [DF_t_ConversationCinematics_Helmet] DEFAULT (0) FOR [Helmet], CONSTRAINT [DF_t_ConversationCinematics_WeaponsOverride] DEFAULT (0) FOR [WeaponsOverride], CONSTRAINT [DF_t_ConversationCinematics_Weapons] DEFAULT (0) FOR [Weapons] GO CREATE INDEX [IX_ConvCinematics_FunctionalShotResRefID] ON [dbo].[t_ConversationCinematics]([FunctionalShotResRefID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_ConversationTransition] ADD CONSTRAINT [DF_t_ConversationTransition_IsLink] DEFAULT (0) FOR [IsLink], CONSTRAINT [CK_t_ConversationTransit] CHECK ([FromIndex] >= (-1) and [ToIndex] >= 0) GO ALTER TABLE [dbo].[t_Inventory] ADD CONSTRAINT [DF_t_Inventory_StackSize] DEFAULT (0) FOR [StackSize], CONSTRAINT [DF_t_Inventory_Droppable] DEFAULT (0) FOR [Droppable], CONSTRAINT [DF_t_Inventory_Stealable] DEFAULT (0) FOR [Stealable], CONSTRAINT [DF_t_Inventory_Infinite] DEFAULT (0) FOR [Infinite], CONSTRAINT [DF_t_Inventory_SetNumber] DEFAULT (0) FOR [SetNumber] GO ALTER TABLE [dbo].[t_Map] ADD CONSTRAINT [DF_t_Map_Map] DEFAULT (0) FOR [Map], CONSTRAINT [DF_t_Map_Tag] DEFAULT ('') FOR [Tag] GO ALTER TABLE [dbo].[t_Role] ADD CONSTRAINT [DF_t_Role_Name] DEFAULT ('') FOR [Name], CONSTRAINT [DF_t_Role_Description] DEFAULT ('') FOR [Description] GO ALTER TABLE [dbo].[t_StageObject] ADD CONSTRAINT [DF_t_StageObject_LookingFrom] DEFAULT ('') FOR [LookingFrom], CONSTRAINT [DF_t_StageObject_LookingAtPrimary] DEFAULT ('') FOR [LookingAtPrimary], CONSTRAINT [DF_t_StageObject_CreatureResRefID] DEFAULT ('') FOR [CreatureResRefID], CONSTRAINT [DF_t_StageObject_Pose] DEFAULT ((-1)) FOR [Pose], CONSTRAINT [DF_t_StageObject_DefaultCamera] DEFAULT ('') FOR [DefaultCamera], CONSTRAINT [DF_t_StageObject_CloseUpCamera] DEFAULT ('') FOR [CloseUpCamera], CONSTRAINT [DF_t_StageObject_WideCamera] DEFAULT ('') FOR [WideCamera], CONSTRAINT [DF_t_StageObject_LookAtType] DEFAULT (1) FOR [LookAtType], CONSTRAINT [DF_t_StageObject_ApplyDOF] DEFAULT (1) FOR [ApplyDOF], CONSTRAINT [DF_t_StageObject_OverrideDOF] DEFAULT (0) FOR [OverrideDOF] GO CREATE INDEX [IX1_t_StringLanguageVariantText] ON [dbo].[t_StringLanguageVariantText]([StringID]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptBatchPrint] ADD CONSTRAINT [DF_t_VOScriptBatchPrint_SPID] DEFAULT (@@spid) FOR [SPID] GO ALTER TABLE [dbo].[t_VOScriptInstance] ADD CONSTRAINT [DF_t_VOScriptInstance_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_VOScriptInstance_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy], CONSTRAINT [DF_t_VOScriptInstance_Comment] DEFAULT ('') FOR [Comment], CONSTRAINT [DF_t_voScriptInstance_OutputFolder] DEFAULT (N'') FOR [OutputFolder] GO ALTER TABLE [dbo].[t_VOScriptInstanceString] ADD CONSTRAINT [DF_t_VOScriptInstanceString_IsForeign] DEFAULT (0) FOR [IsForeign], CONSTRAINT [DF_t_VOScriptInstanceManagement_LastModifiedOn] DEFAULT (getdate()) FOR [LastModifiedOn], CONSTRAINT [DF_t_VOScriptInstanceManagement_LastModifiedBy] DEFAULT (suser_sname()) FOR [LastModifiedBy], CONSTRAINT [DF_t_VOScriptInstanceString_StringVariantID] DEFAULT ((-1)) FOR [StringVariantID] GO CREATE INDEX [IX_t_VOScriptInstanceString] ON [dbo].[t_VOScriptInstanceString]([StringID], [Active], [Status]) ON [PRIMARY] GO ALTER TABLE [dbo].[t_VOScriptInstanceStringStatus] ADD CONSTRAINT [DF_t_VOScriptInstanceStringStatus_CreatedOn] DEFAULT (getdate()) FOR [CreatedOn], CONSTRAINT [DF_t_VOScriptInstanceStringStatus_CreatedBy] DEFAULT (suser_sname()) FOR [CreatedBy] GO CREATE INDEX [IX_t_VOScriptInstanceStringStatus] ON [dbo].[t_VOScriptInstanceStringStatus]([VOScriptInstanceStringID], [Active]) ON [PRIMARY] GO GRANT SELECT ON [dbo].[t_CharacterDelta] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_CharacterDelta] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_GlobalParameters] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_GlobalParameters] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_JobProcessInformation] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_JobProcessInformation] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_KeyGenStringID] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_KeyGenStringID] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ModuleType] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ModuleType] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ResourceTables] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ResourceTables] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringExportLabel] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringExportLabel] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringImportSession] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringImportSession] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringTable] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringTable] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringType] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringType] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringVariant] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringVariant] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScriptInstanceManagement] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScriptInstanceManagement] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScriptLineCharacterInternal] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScriptLineCharacterInternal] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOSessionInstance] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOSessionInstance] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ResourceDefinition] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ResourceDefinition] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ResourceTableRelationship] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ResourceTableRelationship] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_String] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_String] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringExportHistory] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringExportHistory] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringExportLabelResourceStats] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringExportLabelResourceStats] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringExportLabelStringTypeStats] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringExportLabelStringTypeStats] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ResRef] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ResRef] TO [bw_db_write] GO DENY UPDATE , DELETE ON [dbo].[t_StringExportHistoryAdjustmentLog] TO [public] CASCADE GO GRANT SELECT ON [dbo].[t_StringExportHistoryAdjustmentLog] TO [bw_db_read] GO GRANT INSERT ON [dbo].[t_StringExportHistoryAdjustmentLog] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Module] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Module] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringSound] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringSound] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ModuleAssociation] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ModuleAssociation] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ModuleVariable] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ModuleVariable] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Area] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Area] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Conversation] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Conversation] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ConversationLine] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ConversationLine] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Creature] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Creature] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Cutscene] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Cutscene] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_CutsceneAction] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_CutsceneAction] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_CutsceneObject] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_CutsceneObject] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_CutsceneTrack] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_CutsceneTrack] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Item] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Item] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Merchant] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Merchant] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ModuleResRef] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ModuleResRef] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ModuleResRefVersion] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ModuleResRefVersion] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Placeable] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Placeable] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Plot] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Plot] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_PlotStatus] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_PlotStatus] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Script] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Script] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Script_Reference] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Script_Reference] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Stage] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Stage] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringLanguage] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringLanguage] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringLanguageTag] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringLanguageTag] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringLanguageVariant] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringLanguageVariant] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringLanguageVariantVersion] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringLanguageVariantVersion] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringText] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringText] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringVersion] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringVersion] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Trigger] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Trigger] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScript] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScript] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaAudioVolume] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaAudioVolume] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaAudioVolumeGeometry] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaAudioVolumeGeometry] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaAudioVolumeSound] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaAudioVolumeSound] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaInstanceAssociations] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaInstanceAssociations] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaMusicVolumeGeometry] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaMusicVolumeGeometry] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaObjectGeometry] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaObjectGeometry] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaObjectVariable] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaObjectVariable] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaReverbVolume] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaReverbVolume] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaReverbVolumeGeometry] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaReverbVolumeGeometry] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaSound] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaSound] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaWaypoint] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaWaypoint] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ConversationAnimations] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ConversationAnimations] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_CreatureAbility] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_CreatureAbility] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_CutsceneActionFBEParameter] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_CutsceneActionFBEParameter] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_CutsceneActionTransition] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_CutsceneActionTransition] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ItemProperty] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ItemProperty] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_MapPin] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_MapPin] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_MapTrail] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_MapTrail] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_MapTrailPoint] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_MapTrailPoint] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_MerchantRestrictedItem] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_MerchantRestrictedItem] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_PlotAssist] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_PlotAssist] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StageFBEParameter] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StageFBEParameter] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StageObjectReference] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StageObjectReference] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOSessionInstanceVersion] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOSessionInstanceVersion] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOSessionVersion] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOSessionVersion] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Variable] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Variable] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaList] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaList] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaMusicVolume] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaMusicVolume] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AreaObject] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AreaObject] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_AssociatedResource] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_AssociatedResource] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Character] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Character] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ConversationCinematics] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ConversationCinematics] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ConversationTagMap] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ConversationTagMap] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_ConversationTransition] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_ConversationTransition] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Inventory] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Inventory] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Map] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Map] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_Role] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_Role] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StageObject] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StageObject] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_StringLanguageVariantText] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_StringLanguageVariantText] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScriptBatchPrint] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScriptBatchPrint] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScriptInstance] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScriptInstance] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScriptInstanceString] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScriptInstanceString] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScriptInstanceStringStatus] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScriptInstanceStringStatus] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOScriptStringRevision] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOScriptStringRevision] TO [bw_db_write] GO GRANT SELECT ON [dbo].[t_VOSession] TO [bw_db_read] GO GRANT UPDATE , INSERT , DELETE ON [dbo].[t_VOSession] TO [bw_db_write] GO ALTER TABLE [dbo].[t_ResourceDefinition] ADD CONSTRAINT [FK_t_ResourceDefinition_t_ResourceTables] FOREIGN KEY ( [BaseResourceTableID] ) REFERENCES [dbo].[t_ResourceTables] ( [ID] ) GO ALTER TABLE [dbo].[t_ResourceTableRelationship] ADD CONSTRAINT [FK_t_ResourceTableRelationship_t_ResourceTables] FOREIGN KEY ( [ParentResourceTableID] ) REFERENCES [dbo].[t_ResourceTables] ( [ID] ), CONSTRAINT [FK_t_ResourceTableRelationship_t_ResourceTables1] FOREIGN KEY ( [ChildResourceTableID] ) REFERENCES [dbo].[t_ResourceTables] ( [ID] ) GO ALTER TABLE [dbo].[t_String] ADD CONSTRAINT [FK_t_String_t_StringTable] FOREIGN KEY ( [StringTableID] ) REFERENCES [dbo].[t_StringTable] ( [ID] ) GO ALTER TABLE [dbo].[t_StringExportHistory] ADD CONSTRAINT [FK_StringExportHistory_StringExportLabel] FOREIGN KEY ( [StringExportLabelID] ) REFERENCES [dbo].[t_StringExportLabel] ( [ID] ) GO ALTER TABLE [dbo].[t_StringExportLabelResourceStats] ADD CONSTRAINT [FK_StringExportLabelResourceStats_StringExportLabel] FOREIGN KEY ( [StringExportLabelID] ) REFERENCES [dbo].[t_StringExportLabel] ( [ID] ) GO ALTER TABLE [dbo].[t_StringExportLabelStringTypeStats] ADD CONSTRAINT [FK_StringExportLabelStringTypeStats_StringExportLabel] FOREIGN KEY ( [StringExportLabelID] ) REFERENCES [dbo].[t_StringExportLabel] ( [ID] ) GO ALTER TABLE [dbo].[t_ResRef] ADD CONSTRAINT [FK_t_ResRef_t_ResourceDefinition] FOREIGN KEY ( [ResType] ) REFERENCES [dbo].[t_ResourceDefinition] ( [ResType] ) GO ALTER TABLE [dbo].[t_StringExportHistoryAdjustmentLog] ADD CONSTRAINT [FK_StringExportHistoryAdjustmentLog_StringExportHistory] FOREIGN KEY ( [StringExportHistoryID] ) REFERENCES [dbo].[t_StringExportHistory] ( [ID] ) GO ALTER TABLE [dbo].[t_Module] ADD CONSTRAINT [FK_t_Module_t_ModuleType] FOREIGN KEY ( [Type] ) REFERENCES [dbo].[t_ModuleType] ( [ID] ), CONSTRAINT [FK_t_Module_t_ResRef] FOREIGN KEY ( [StartAreaResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Module_t_ResRef1] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Module_t_ResRef2] FOREIGN KEY ( [ClientScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_StringSound] ADD CONSTRAINT [FK_t_StringSound_t_ResRef] FOREIGN KEY ( [SoundResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_StringSound_t_String] FOREIGN KEY ( [StringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_ModuleAssociation] ADD CONSTRAINT [FK_t_ModuleAssociation_t_Module] FOREIGN KEY ( [ParentModuleID] ) REFERENCES [dbo].[t_Module] ( [ID] ), CONSTRAINT [FK_t_ModuleAssociation_t_Module1] FOREIGN KEY ( [ChildModuleID] ) REFERENCES [dbo].[t_Module] ( [ID] ) ON DELETE CASCADE GO ALTER TABLE [dbo].[t_ModuleVariable] ADD CONSTRAINT [FK_t_ModuleVariable_t_Module] FOREIGN KEY ( [ModuleID] ) REFERENCES [dbo].[t_Module] ( [ID] ) GO ALTER TABLE [dbo].[t_Area] ADD CONSTRAINT [FK_t_Area_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Area_t_ResRef] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Area_t_ResRef1] FOREIGN KEY ( [AreaListResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Area_t_String] FOREIGN KEY ( [NameStringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_Conversation] ADD CONSTRAINT [FK_t_Conversation_EndConversationPlotResRefID_t_ResRef] FOREIGN KEY ( [EndConversationPlotResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Conversation_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Conversation_t_ResRef] FOREIGN KEY ( [EndConversationScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Conversation_t_ResRef1] FOREIGN KEY ( [StageResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Conversation_t_ResRef3] FOREIGN KEY ( [PreviewAreaResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_ConversationLine] ADD CONSTRAINT [FK_t_ConversationLine_ActionPlotResRefID_t_ResRef] FOREIGN KEY ( [ActionPlotResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_ConditionPlotResRefID_t_ResRef] FOREIGN KEY ( [ConditionPlotResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_t_Conversation] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Conversation] ( [ModuleResRefVersionID] ), CONSTRAINT [FK_t_ConversationLine_t_ResRef] FOREIGN KEY ( [ConditionScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_t_ResRef1] FOREIGN KEY ( [ActionScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_t_ResRef2] FOREIGN KEY ( [StageResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_t_ResRef3] FOREIGN KEY ( [PreviewAreaResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_t_ResRef4] FOREIGN KEY ( [CustomCutsceneResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_t_ResRef5] FOREIGN KEY ( [CameraFunctionalShotResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_ConversationLine_t_String] FOREIGN KEY ( [TextStringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_Creature] ADD CONSTRAINT [FK_t_Creature_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Creature_t_ResRef] FOREIGN KEY ( [ConversationResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Creature_t_ResRef1] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Creature_t_ResRef2] FOREIGN KEY ( [CharacterResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Creature_t_String] FOREIGN KEY ( [NameStringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_Cutscene] ADD CONSTRAINT [FK_t_Cutscene_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Cutscene_t_ResRef] FOREIGN KEY ( [EndScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Cutscene_t_ResRef1] FOREIGN KEY ( [StageResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Cutscene_t_ResRef2] FOREIGN KEY ( [AreaResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_CutsceneAction] ADD CONSTRAINT [FK_t_CutsceneAction_t_CutsceneTrack] FOREIGN KEY ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceID] ) REFERENCES [dbo].[t_CutsceneTrack] ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [InstanceID] ), CONSTRAINT [FK_t_CutsceneAction_t_ResRef] FOREIGN KEY ( [ResRefID1] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_CutsceneAction_t_String] FOREIGN KEY ( [StringID1] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_CutsceneObject] ADD CONSTRAINT [FK_t_CutsceneObject_t_Cutscene] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Cutscene] ( [ModuleResRefVersionID] ), CONSTRAINT [FK_t_CutsceneObject_t_ResRef] FOREIGN KEY ( [ResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_CutsceneTrack] ADD CONSTRAINT [FK_t_CutsceneTrack_t_CutsceneObject] FOREIGN KEY ( [ModuleResRefVersionID], [CutsceneObjectInstanceID] ) REFERENCES [dbo].[t_CutsceneObject] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_Item] ADD CONSTRAINT [FK_t_Item_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Item_t_ResRef] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Item_t_String] FOREIGN KEY ( [NameStringID] ) REFERENCES [dbo].[t_String] ( [ID] ), CONSTRAINT [FK_t_Item_t_String1] FOREIGN KEY ( [DescriptionStringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_Merchant] ADD CONSTRAINT [FK_t_Merchant_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Merchant_t_ResRef] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Merchant_t_String] FOREIGN KEY ( [NameStringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_ModuleResRef] ADD CONSTRAINT [FK_t_ModuleResRef_C_t_ModuleResRefVersion] FOREIGN KEY ( [CurrentModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_ModuleResRef_S_t_ModuleResRefVersion] FOREIGN KEY ( [ScratchModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_ModuleResRef_t_Module] FOREIGN KEY ( [ModuleID] ) REFERENCES [dbo].[t_Module] ( [ID] ), CONSTRAINT [FK_t_ModuleResRef_t_ResRef] FOREIGN KEY ( [ResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_ModuleResRefVersion] ADD CONSTRAINT [FK_t_ModuleResRefVersion_t_Module] FOREIGN KEY ( [OwnerModuleID] ) REFERENCES [dbo].[t_Module] ( [ID] ), CONSTRAINT [FK_t_ModuleResRefVersion_t_ModuleResRef] FOREIGN KEY ( [ModuleID], [ResRefID] ) REFERENCES [dbo].[t_ModuleResRef] ( [ModuleID], [ResRefID] ) GO ALTER TABLE [dbo].[t_Placeable] ADD CONSTRAINT [FK_t_Conversation_t_ResRef2] FOREIGN KEY ( [ConversationResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Placeable_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Placeable_t_ResRef] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Placeable_t_ResRef1] FOREIGN KEY ( [CharacterResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Placeable_t_String] FOREIGN KEY ( [NameStringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_Plot] ADD CONSTRAINT [FK_t_Plot_ParentPlotResRefID_t_ResRef] FOREIGN KEY ( [ParentPlotResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Plot_ScriptResRefID_t_ResRef] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Plot_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Plot_t_ResRef] FOREIGN KEY ( [ParentPlotResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Plot_t_String] FOREIGN KEY ( [NameStringID] ) REFERENCES [dbo].[t_String] ( [ID] ) GO ALTER TABLE [dbo].[t_PlotStatus] ADD CONSTRAINT [FK_t_PlotStatus_Journal_t_String] FOREIGN KEY ( [JournalTextStringID] ) REFERENCES [dbo].[t_String] ( [ID] ), CONSTRAINT [FK_t_PlotStatus_t_Plot] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Plot] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_Script] ADD CONSTRAINT [FK_t_Script_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ) GO ALTER TABLE [dbo].[t_Script_Reference] ADD CONSTRAINT [FK_t_Script_Reference_t_ResRef] FOREIGN KEY ( [ReferencedResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Script_Reference_t_Script] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Script] ( [ModuleResRefVersionID] ) ON DELETE CASCADE GO ALTER TABLE [dbo].[t_Stage] ADD CONSTRAINT [FK_t_Stage_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Stage_t_ResRef] FOREIGN KEY ( [AreaResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_StringLanguage] ADD CONSTRAINT [FK_StringLanguage_StringLanguageTag] FOREIGN KEY ( [DefaultStringLanguageTagID] ) REFERENCES [dbo].[t_StringLanguageTag] ( [ID] ) GO ALTER TABLE [dbo].[t_StringLanguageTag] ADD CONSTRAINT [FK_StringLanguageTag_StringLanguage] FOREIGN KEY ( [StringLanguageID] ) REFERENCES [dbo].[t_StringLanguage] ( [ID] ) GO ALTER TABLE [dbo].[t_StringLanguageVariant] ADD CONSTRAINT [FK_StringLanguageVariant_StringLanguageVariantVersion_1] FOREIGN KEY ( [CurrentStringLanguageVariantVersionID] ) REFERENCES [dbo].[t_StringLanguageVariantVersion] ( [ID] ), CONSTRAINT [FK_StringLanguageVariant_StringLanguageVariantVersion_2] FOREIGN KEY ( [ScratchStringLanguageVariantVersionID] ) REFERENCES [dbo].[t_StringLanguageVariantVersion] ( [ID] ), CONSTRAINT [FK_t_StringLanguageVariant_t_StringLanguage] FOREIGN KEY ( [StringLanguageID] ) REFERENCES [dbo].[t_StringLanguage] ( [ID] ), CONSTRAINT [FK_t_StringLanguageVariant_t_StringVariant] FOREIGN KEY ( [StringVariantID] ) REFERENCES [dbo].[t_StringVariant] ( [ID] ) GO ALTER TABLE [dbo].[t_StringLanguageVariantVersion] ADD CONSTRAINT [FK_StringLanguageVariantVersion_StringImportSession] FOREIGN KEY ( [StringImportSessionID] ) REFERENCES [dbo].[t_StringImportSession] ( [ID] ), CONSTRAINT [FK_StringLanguageVariantVersion_StringLanguageVariant] FOREIGN KEY ( [StringLanguageVariantID] ) REFERENCES [dbo].[t_StringLanguageVariant] ( [ID] ), CONSTRAINT [FK_StringLanguageVariantVersion_StringLanguageVariantVersion] FOREIGN KEY ( [PreviousStringLanguageVariantVersionID] ) REFERENCES [dbo].[t_StringLanguageVariantVersion] ( [ID] ) GO ALTER TABLE [dbo].[t_StringText] ADD CONSTRAINT [FK_t_StringText_t_StringLanguageVariant] FOREIGN KEY ( [StringLanguageVariantID] ) REFERENCES [dbo].[t_StringLanguageVariant] ( [ID] ), CONSTRAINT [FK_t_StringText_t_StringVersion] FOREIGN KEY ( [StringID], [ModuleResRefVersionID] ) REFERENCES [dbo].[t_StringVersion] ( [StringID], [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_StringVersion] ADD CONSTRAINT [FK_t_StringVersion_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_StringVersion_t_ResRef] FOREIGN KEY ( [OwnerResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_StringVersion_t_String] FOREIGN KEY ( [StringID] ) REFERENCES [dbo].[t_String] ( [ID] ), CONSTRAINT [FK_t_StringVersion_t_StringType] FOREIGN KEY ( [StringTypeID] ) REFERENCES [dbo].[t_StringType] ( [ID] ) GO ALTER TABLE [dbo].[t_Trigger] ADD CONSTRAINT [FK_t_Trigger_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Trigger_t_ResRef] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_VOScript] ADD CONSTRAINT [FK_t_VOScript_t_ModuleResRef_Character] FOREIGN KEY ( [CharacterModuleID], [CharacterResRefID] ) REFERENCES [dbo].[t_ModuleResRef] ( [ModuleID], [ResRefID] ), CONSTRAINT [FK_t_VOScript_t_ModuleResRef_Resource] FOREIGN KEY ( [ResourceModuleID], [ResourceResRefID] ) REFERENCES [dbo].[t_ModuleResRef] ( [ModuleID], [ResRefID] ) GO ALTER TABLE [dbo].[t_AreaAudioVolume] ADD CONSTRAINT [FK_t_AreaAudioVolume_t_Area] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Area] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_AreaAudioVolumeGeometry] ADD CONSTRAINT [FK_t_AreaAudioVolumeGeometry_t_AreaAudioVolume] FOREIGN KEY ( [ModuleResRefVersionID], [AreaAudioVolumeInstanceID] ) REFERENCES [dbo].[t_AreaAudioVolume] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_AreaAudioVolumeSound] ADD CONSTRAINT [FK_t_AreaAudioVolumeSound_t_AreaAudioVolume] FOREIGN KEY ( [ModuleResRefVersionID], [AudioVolumeInstanceID] ) REFERENCES [dbo].[t_AreaAudioVolume] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_AreaInstanceAssociations] ADD CONSTRAINT [FK_t_AreaInstanceAssociations_t_Area] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Area] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_AreaMusicVolumeGeometry] ADD CONSTRAINT [FK_t_AreaMusicVolumeGeometry_t_AreaMusicVolume] FOREIGN KEY ( [ModuleResRefVersionID], [AreaMusicVolumeInstanceID] ) REFERENCES [dbo].[t_AreaMusicVolume] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_AreaObjectGeometry] ADD CONSTRAINT [FK_t_AreaObjectGeometry_t_AreaObject] FOREIGN KEY ( [ModuleResRefVersionID], [AreaObjectInstanceID] ) REFERENCES [dbo].[t_AreaObject] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_AreaObjectVariable] ADD CONSTRAINT [FK_t_AreaObjectVariable_t_AreaObject] FOREIGN KEY ( [ModuleResRefVersionID], [AreaObjectInstanceID] ) REFERENCES [dbo].[t_AreaObject] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_AreaReverbVolume] ADD CONSTRAINT [FK_t_AreaReverbVolume_t_Area] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Area] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_AreaReverbVolumeGeometry] ADD CONSTRAINT [FK_t_AreaReverbVolumeGeometry_t_AreaReverbVolume] FOREIGN KEY ( [ModuleResRefVersionID], [AreaReverbVolumeInstanceID] ) REFERENCES [dbo].[t_AreaReverbVolume] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_AreaSound] ADD CONSTRAINT [FK_t_AreaSound_t_Area] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Area] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_AreaWaypoint] ADD CONSTRAINT [FK_t_AreaWaypoint_t_Area] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Area] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_ConversationAnimations] ADD CONSTRAINT [FK_t_ConversationAnimations_t_ConversationLine] FOREIGN KEY ( [ModuleResRefVersionID], [LineIndex] ) REFERENCES [dbo].[t_ConversationLine] ( [ModuleResRefVersionID], [Index] ) GO ALTER TABLE [dbo].[t_CreatureAbility] ADD CONSTRAINT [FK_t_CreatureAbility_t_Creature] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Creature] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_CutsceneActionFBEParameter] ADD CONSTRAINT [FK_t_CutsceneActionFBEParameter_t_CutsceneAction] FOREIGN KEY ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceID], [CutsceneActionInstanceID] ) REFERENCES [dbo].[t_CutsceneAction] ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceID], [InstanceID] ) GO ALTER TABLE [dbo].[t_CutsceneActionTransition] ADD CONSTRAINT [FK_t_CutsceneActionTransition_t_CutsceneAction] FOREIGN KEY ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceIDA], [CutsceneActionInstanceIDA] ) REFERENCES [dbo].[t_CutsceneAction] ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceID], [InstanceID] ), CONSTRAINT [FK_t_CutsceneActionTransition_t_CutsceneAction1] FOREIGN KEY ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceIDB], [CutsceneActionInstanceIDB] ) REFERENCES [dbo].[t_CutsceneAction] ( [ModuleResRefVersionID], [CutsceneObjectInstanceID], [CutsceneTrackInstanceID], [InstanceID] ) GO ALTER TABLE [dbo].[t_ItemProperty] ADD CONSTRAINT [FK_t_ItemProperty_t_Item] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Item] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_MapPin] ADD CONSTRAINT [FK_t_MapPin_t_Map] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Map] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_MapTrail] ADD CONSTRAINT [FK_t_MapTrail_t_Map] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Map] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_MapTrailPoint] ADD CONSTRAINT [FK_t_MapTrailPoint_t_MapTrail] FOREIGN KEY ( [ModuleResRefVersionID], [MapTrailInstanceID] ) REFERENCES [dbo].[t_MapTrail] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_MerchantRestrictedItem] ADD CONSTRAINT [FK_t_MerchantRestrictedItem_t_Merchant] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Merchant] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_PlotAssist] ADD CONSTRAINT [FK_t_PlotAssist_t_PlotStatus] FOREIGN KEY ( [ModuleResRefVersionID], [Flag] ) REFERENCES [dbo].[t_PlotStatus] ( [ModuleResRefVersionID], [Flag] ) GO ALTER TABLE [dbo].[t_StageFBEParameter] ADD CONSTRAINT [FK_t_StageFBEParameter_t_StageObject] FOREIGN KEY ( [ModuleResRefVersionID], [StageObjectInstanceID] ) REFERENCES [dbo].[t_StageObject] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_StageObjectReference] ADD CONSTRAINT [FK_t_StageObjectReference_t_StageObject] FOREIGN KEY ( [ModuleResRefVersionID], [SourceInstanceID] ) REFERENCES [dbo].[t_StageObject] ( [ModuleResRefVersionID], [InstanceID] ) GO ALTER TABLE [dbo].[t_VOSessionInstanceVersion] ADD CONSTRAINT [FK_t_VOSessionInstanceVersion_t_VOScriptInstance] FOREIGN KEY ( [VOScriptInstanceID] ) REFERENCES [dbo].[t_VOScriptInstance] ( [ID] ), CONSTRAINT [FK_t_VOSessionInstanceVersion_t_VOSession] FOREIGN KEY ( [VOSessionID] ) REFERENCES [dbo].[t_VOSession] ( [ID] ), CONSTRAINT [FK_t_VOSessionInstanceVersion_t_VOSessionInstance] FOREIGN KEY ( [VOSessionInstanceID] ) REFERENCES [dbo].[t_VOSessionInstance] ( [ID] ) GO ALTER TABLE [dbo].[t_VOSessionVersion] ADD CONSTRAINT [FK_t_VOSessionVersion_t_VOSession] FOREIGN KEY ( [VOSessionID] ) REFERENCES [dbo].[t_VOSession] ( [ID] ) GO ALTER TABLE [dbo].[t_Variable] ADD CONSTRAINT [FK_t_Variable_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ) GO ALTER TABLE [dbo].[t_AreaList] ADD CONSTRAINT [FK_t_AreaList_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ) GO ALTER TABLE [dbo].[t_AreaMusicVolume] ADD CONSTRAINT [FK_t_AreaMusicVolume_t_Area] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Area] ( [ModuleResRefVersionID] ), CONSTRAINT [FK_t_AreaMusicVolume_t_ResRef] FOREIGN KEY ( [ScriptResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_AreaObject] ADD CONSTRAINT [FK_t_AreaObject_t_Area] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Area] ( [ModuleResRefVersionID] ), CONSTRAINT [FK_t_AreaObject_t_ResRef] FOREIGN KEY ( [ObjectResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_AssociatedResource] ADD CONSTRAINT [FK_t_AssociatedResource_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_AssociatedResource_t_ResRef] FOREIGN KEY ( [ResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_Character] ADD CONSTRAINT [FK_t_Character_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Character_t_ResRef] FOREIGN KEY ( [SoundSetResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ), CONSTRAINT [FK_t_Character_t_ResRef2] FOREIGN KEY ( [RoleResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_ConversationCinematics] ADD CONSTRAINT [FK_t_ConversationCinematics_t_Conversation] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Conversation] ( [ModuleResRefVersionID] ), CONSTRAINT [FK_t_ConversationCinematics_t_ResRef] FOREIGN KEY ( [FunctionalShotResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_ConversationTagMap] ADD CONSTRAINT [FK_t_ConversationTagMap_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_ConversationTagMap_t_ResRef] FOREIGN KEY ( [ValueResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_ConversationTransition] ADD CONSTRAINT [FK_t_ConversationTransit_t_Conversation] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Conversation] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_Inventory] ADD CONSTRAINT [FK_t_Inventory_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ), CONSTRAINT [FK_t_Inventory_t_ResRef] FOREIGN KEY ( [ItemResRefID] ) REFERENCES [dbo].[t_ResRef] ( [ID] ) GO ALTER TABLE [dbo].[t_Map] ADD CONSTRAINT [FK_t_Map_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ) GO ALTER TABLE [dbo].[t_Role] ADD CONSTRAINT [FK_t_Role_t_ModuleResRefVersion] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_ModuleResRefVersion] ( [ID] ) GO ALTER TABLE [dbo].[t_StageObject] ADD CONSTRAINT [FK_t_StageObject_t_Stage] FOREIGN KEY ( [ModuleResRefVersionID] ) REFERENCES [dbo].[t_Stage] ( [ModuleResRefVersionID] ) GO ALTER TABLE [dbo].[t_StringLanguageVariantText] ADD CONSTRAINT [FK_StringLanguageVariantText_StringImportSession] FOREIGN KEY ( [StringImportSessionID] ) REFERENCES [dbo].[t_StringImportSession] ( [ID] ), CONSTRAINT [FK_StringLanguageVariantText_StringLanguageVariantVersion] FOREIGN KEY ( [StringLanguageVariantVersionID] ) REFERENCES [dbo].[t_StringLanguageVariantVersion] ( [ID] ) GO ALTER TABLE [dbo].[t_VOScriptBatchPrint] ADD CONSTRAINT [FK_t_VOScriptBatchPrint_t_VOScript] FOREIGN KEY ( [VOScriptID] ) REFERENCES [dbo].[t_VOScript] ( [ID] ), CONSTRAINT [FK_t_VOScriptBatchPrint_t_VOScriptInstance] FOREIGN KEY ( [VOScriptInstanceID] ) REFERENCES [dbo].[t_VOScriptInstance] ( [ID] ), CONSTRAINT [FK_t_VOScriptBatchPrint_t_VOScriptInstanceString] FOREIGN KEY ( [VOScriptInstanceStringID] ) REFERENCES [dbo].[t_VOScriptInstanceString] ( [ID] ) GO ALTER TABLE [dbo].[t_VOScriptInstance] ADD CONSTRAINT [FK_t_VOScriptInstance_t_StringLanguage] FOREIGN KEY ( [StringLanguageID] ) REFERENCES [dbo].[t_StringLanguage] ( [ID] ), CONSTRAINT [FK_t_VOScriptInstance_t_VOScript] FOREIGN KEY ( [VOScriptID] ) REFERENCES [dbo].[t_VOScript] ( [ID] ) GO ALTER TABLE [dbo].[t_VOScriptInstanceString] ADD CONSTRAINT [FK_t_VOScriptInstanceString_t_StringLanguageVariantVersion] FOREIGN KEY ( [StringLanguageVariantVersionID] ) REFERENCES [dbo].[t_StringLanguageVariantVersion] ( [ID] ), CONSTRAINT [FK_t_VOScriptInstanceString_t_StringText] FOREIGN KEY ( [StringID], [ModuleResRefVersionID], [StringLanguageVariantID] ) REFERENCES [dbo].[t_StringText] ( [StringID], [ModuleResRefVersionID], [StringLanguageVariantID] ), CONSTRAINT [FK_t_VOScriptInstanceString_t_VOScriptInstance] FOREIGN KEY ( [VOScriptInstanceID] ) REFERENCES [dbo].[t_VOScriptInstance] ( [ID] ), CONSTRAINT [FK_t_VOScriptInstanceString_t_VOScriptInstanceString] FOREIGN KEY ( [PreviousVOScriptInstanceStringID] ) REFERENCES [dbo].[t_VOScriptInstanceString] ( [ID] ) GO ALTER TABLE [dbo].[t_VOScriptInstanceStringStatus] ADD CONSTRAINT [FK_t_VOScriptInstanceStringStatus_t_VOScriptInstanceString] FOREIGN KEY ( [VOScriptInstanceStringID] ) REFERENCES [dbo].[t_VOScriptInstanceString] ( [ID] ) GO ALTER TABLE [dbo].[t_VOScriptStringRevision] ADD CONSTRAINT [FK_t_VOScriptStringRevision_t_StringLanguageVariant] FOREIGN KEY ( [StringLanguageID], [StringVariantID] ) REFERENCES [dbo].[t_StringLanguageVariant] ( [StringLanguageID], [StringVariantID] ) GO ALTER TABLE [dbo].[t_VOSession] ADD CONSTRAINT [FK_t_VOSession_t_StringLanguage] FOREIGN KEY ( [LanguageID] ) REFERENCES [dbo].[t_StringLanguage] ( [ID] ) GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE VIEW dbo.v_ModuleTree AS select moduleid, associatedmoduleid, max(level) as level from ( select distinct ma1.childmoduleid ModuleID, ma2.childmoduleid AssociatedModuleID, ma2.Level from t_moduleassociation ma1 join t_moduleassociation ma2 on ma1.fullpath like ma2.fullpath + '%' ) s1 group by moduleid, associatedmoduleid GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[v_ModuleTree] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- VIEW: v_ConversationLineSpeakerTag ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 14, 2007 -- Description: Lists all lines of conversation and their speaker -- tags. This is used to resolve the lines that are blank and -- require a lookup on the DefaultNPCSpeaker field. -- -- NOTE: If player lines EVER stop having a tag of 'PLAYER', this -- View will be incorrect for player lines and will require fixing. ------------------------------------------------------------------------ CREATE VIEW [dbo].[v_ConversationLineSpeakerTag] AS SELECT cl.[ModuleResRefVersionID], cl.[TextStringID], CASE cl.[Speaker] WHEN '' THEN c.[DefaultNPCSpeaker] ELSE cl.[Speaker] END AS [Speaker] FROM t_ConversationLine cl JOIN t_Conversation c ON cl.[ModuleResRefVersionID] = c.[ModuleResRefVersionID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[v_ConversationLineSpeakerTag] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE VIEW dbo.v_StringVersionText AS select s1.ID, s1.StringTableID, sv.ModuleResRefVersionID, sv.StringTypeID, sv.OwnerresRefID, st.StringLanguageVariantID, st.Text, st.Description FROM t_String s1 join t_StringVersion sv on s1.id = sv.stringid join t_StringText st on sv.stringid = st.stringid and sv.moduleresrefversionid = st.moduleresrefversionid and st.stringlanguagevariantid = 1 GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[v_StringVersionText] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- VIEW: v_StringsRequiringTranslation ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 20, 2006 -- Description: Shows all strings belonging to current versions -- of resources that need to be translated. -- This query has to search for strings that have never been -- exported, as well as strings that have been updated since -- the last time they were exported. ------------------------------------------------------------------------ CREATE VIEW [dbo].[v_StringsRequiringTranslation] AS SELECT t.[StringID], t.[ModuleResRefVersionID], CASE WHEN t.[LastMajorUpdateOn] > ISNULL(seh.[CompareDate], '1/1/2000') THEN 1 ELSE 0 END [IsMajorChange], CASE WHEN seh.[StringID] IS NULL THEN 1 ELSE 0 END [IsNew] FROM t_StringText t JOIN t_ModuleResRefVersion mrv ON t.[ModuleResRefVersionID] = mrv.[ID] LEFT OUTER JOIN t_StringExportHistory seh ON t.[StringID] = seh.[StringID] AND seh.[Status] = 'A' WHERE mrv.[Status] = 'C' -- Ensures that we only care about current version strings AND t.[LastMinorUpdateOn] > ISNULL(seh.[CompareDate], '1/1/2000') -- Ensures that strings never exported, and strings updated since last export are included GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[v_StringsRequiringTranslation] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- VIEW: v_StringsRequiringTranslationByResourceVersion ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 20, 2006 -- Description: Shows all strings belonging to all versions -- of resources that need to be translated. -- This query has to search for strings that have never been -- exported, as well as strings that have been updated since -- the last time they were exported. -- NOTE: We want this view to show all versions because -- there are times where this list is checked against a -- particular version. When a string is exported, all -- prior versions are intentionally no longer shown in this view. ------------------------------------------------------------------------ CREATE VIEW [dbo].[v_StringsRequiringTranslationByResourceVersion] AS SELECT mrv.[ModuleID], mrv.[ResRefID], t.[ModuleResRefVersionID], t.[StringID], CASE WHEN t.[LastMajorUpdateOn] > ISNULL(seh.[CompareDate], '1/1/2000') THEN 1 ELSE 0 END [IsMajorChange], CASE WHEN seh.[ID] IS NULL THEN 1 ELSE 0 END [IsNew] FROM t_StringText t JOIN t_ModuleResRefVersion mrv ON t.[ModuleResRefVersionID] = mrv.[ID] LEFT OUTER JOIN t_StringExportHistory seh ON t.[StringID] = seh.[StringID] AND seh.[Status] = 'A' WHERE t.[LastMinorUpdateOn] > ISNULL(seh.[CompareDate], '1/1/2000') -- Ensures that strings never exported, and strings updated since last export are included GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[v_StringsRequiringTranslationByResourceVersion] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE VIEW dbo.v_UserResourceInfo AS select CASE isnull(mrrv2.id,-1) when -1 then mrrv1.id else case mrrv2.username when suser_sname() then mrrv2.id else mrrv1.id end end as ModuleResRefVersionID, mrr.moduleid as ModuleID, mrr.ResRefID as ResRefID, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.name else case mrrv2.username when suser_sname() then mrrv2.name else mrrv1.name end end as ResRefName, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.folder else case mrrv2.username when suser_sname() then mrrv2.folder else mrrv1.folder end end as Folder, mrr.createdby as CreatedBy, mrr.createdon as CreatedOn, case isnull(mrrv2.id,-1) when -1 then 0 else 1 end as IsCheckedOut, mrrv2.username as CheckedOutBy, mrrv2.date as CheckedOutOn, mrrv1.username as LastCheckInBy, mrrv1.date as LastCheckInOn, mrrv1.comment as Comment from t_moduleresref mrr join t_moduleresrefversion mrrv1 on mrr.currentmoduleresrefversionid = mrrv1.id left outer join t_moduleresrefversion mrrv2 on mrr.scratchmoduleresrefversionid = mrrv2.id GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[v_UserResourceInfo] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- VIEW: v_VOScriptStringLanguageVariant ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 21, 2007 -- Description: Displays the Language ID and Variant ID that each -- VOScriptInstanceString belong to. This is meant to be a -- convenience lookup for use with several stored procedures. -- ------------------------------------------------------------------------ CREATE VIEW [dbo].[v_VOScriptStringLanguageVariant] AS SELECT vosis.[ID] as [VOScriptInstanceStringID], vosi.[StringLanguageID], vosis.[StringVariantID] FROM t_VOScriptInstanceString vosis JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT SELECT ON [dbo].[v_VOScriptStringLanguageVariant] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_CreateNewResourceVersion] @a_iCurrentVersionID int, @a_iNewVersionID int, @a_sTableName varchar(128) AS declare @sql nvarchar(4000) set @sql = '' declare @columns nvarchar(4000) set @columns = '' SELECT @columns = CASE @columns WHEN '' THEN '[' + sc.name + ']' ELSE @columns + ', [' + sc.name + ']' END from sysobjects so join syscolumns sc on so.id = sc.id where lower(so.name) = lower(@a_sTableName) and lower(sc.name) <> 'moduleresrefversionid' order by colid if (@@ERROR <> 0) GOTO ON_ERROR set @sql = 'insert into ' + @a_sTableName + '(ModuleResRefVersionID, ' + @columns + ') ' + ' select ' + convert(varchar(10),@a_iNewVersionID) + ', ' + @columns + ' from ' + @a_sTableName + ' where moduleresrefversionid = ' + convert(varchar(10),@a_iCurrentVersionID) exec sp_executesql @sql if (@@ERROR <> 0) GOTO ON_ERROR return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- return @@ERROR GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CreateNewResourceVersion] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_GetLocalizationStatisticsVerbose ------------------------------------------------------------------------ -- Owned By: Chris Mihalick -- Created On: January 31, 2008 -- Description: Loads Localization Statistics -- Parameters: -- @a_bCountMajorChanges - set to true if you want to get stats -- for Major Text Changes (strings that are being re-translated) -- @a_bCountMinorChanges - set to true if you want to get stats -- for Minor Text Changes (strings that are being re-translated) -- @a_bGetResourceCounts: -- o 1 - include stats by resource in the result set -- o 0 - exclude stats by resource in the result set -- @a_bGetStringTypeCounts: -- o 1 - include stats by string type in the result set -- o 0 - exclude stats by string type in the result set -- -- Returns: -- 0 on success, non-zero on error (error-code @@ERROR is returned) ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetLocalizationStatisticsVerbose] @a_bCountMajorChanges bit, @a_bCountMinorChanges bit, @a_bGetResourceCounts bit, @a_bGetStringTypeCounts bit AS SET NOCOUNT ON DECLARE @iError int -- Create a temp table to store the stored procedure results CREATE TABLE #Stats ( ModuleID INT, OwnerModuleID INT, ResRefID INT, ResType VARCHAR(4), StringTypeID INT, IsResource BIT, NewWordsReq INT, UpdWordsReq INT, Words INT, NewLinesReq INT, UpdLinesReq INT, Lines INT, NewNonBlankLinesReq INT, UpdNonBlankLinesReq INT, NonBlankLines INT ) -- Run the stored procedure and store the results in the temp table INSERT #Stats EXEC [dbo].[bsp_GetLocalizationStatistics] @a_bCountMajorChanges, @a_bCountMinorChanges, @a_bGetResourceCounts, @a_bGetStringTypeCounts -- Return the stats SELECT S.[ModuleID], S.[OwnerModuleID], S.[ResRefID], S.[ResType], S.[StringTypeID], S.[IsResource], S.[NewWordsReq], S.[UpdWordsReq], S.[Words], S.[NewLinesReq], S.[UpdLinesReq], S.[Lines], S.[NewNonBlankLinesReq], S.[UpdNonBlankLinesReq], S.[NonBlankLines], m.[Name] as [Module], mOwner.[Name] as [OwnerModule], MRRV.[Folder], MRRV.[Name] as [Name] FROM #Stats S JOIN t_ModuleResRef MRR ON S.[ModuleID] = MRR.[ModuleID] AND S.[ResRefID] = MRR.[ResRefID] JOIN t_ModuleResRefVersion MRRV ON MRR.[CurrentModuleResRefVersionID] = MRRV.[ID] JOIN t_Module m ON mrr.[ModuleID] = m.[ID] JOIN t_Module mOwner ON s.[OwnerModuleID] = mOwner.[ID] WHERE @a_bGetResourceCounts = 1 UNION ALL SELECT S.[ModuleID], S.[OwnerModuleID], S.[ResRefID], S.[ResType], S.[StringTypeID], S.[IsResource], S.[NewWordsReq], S.[UpdWordsReq], S.[Words], S.[NewLinesReq], S.[UpdLinesReq], S.[Lines], S.[NewNonBlankLinesReq], S.[UpdNonBlankLinesReq], S.[NonBlankLines], m.[Name] as [Module], mOwner.[Name] as [OwnerModule], '' AS [Folder], ST.[Name] as [Name] FROM #Stats S JOIN t_StringType ST ON S.[StringTypeID] = ST.[ID] JOIN t_Module m ON S.[ModuleID] = m.[ID] JOIN t_Module mOwner ON s.[OwnerModuleID] = mOwner.[ID] WHERE @a_bGetStringTypeCounts = 1 ORDER BY [Module], [Folder], [Name] -- Drop the temp table DROP TABLE #Stats SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetLocalizationStatisticsVerbose] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_CreateStringExportLabel ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 29, 2006 -- Description: Creates a new Export Label and returns the -- resultant ID ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_CreateStringExportLabel] @a_sName text, @a_sComment ntext, @a_iExportContent int, @a_riNewSessionID int OUTPUT AS DECLARE @iError int BEGIN TRANSACTION tranCreateStringExportLabel -- Create a new ExpoerLabel Record. Get the new ID INSERT INTO t_StringExportLabel ([Name], [Comment], [Status], [ExportContent]) VALUES (@a_sName, @a_sComment, 'N', @a_iExportContent) SELECT @iError = @@ERROR, @a_riNewSessionID = SCOPE_IDENTITY() if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranCreateStringExportLabel return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CreateStringExportLabel] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_CreateStringImportSession ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 21, 2006 -- Description: Creates a new ImportSession and returns the -- resultant ID ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_CreateStringImportSession] @a_sComment ntext, @a_riNewSessionID int OUTPUT AS DECLARE @iError int BEGIN TRANSACTION tranCreateStringImportSession -- Create a new Session Record. Get the new ID INSERT INTO t_StringImportSession ([Status], [Comment]) VALUES ('N', @a_sComment) SELECT @iError = @@ERROR, @a_riNewSessionID = SCOPE_IDENTITY() if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranCreateStringImportSession return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CreateStringImportSession] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_CreateVOSessionInstance ------------------------------------------------------------------------ -- Owned By: Chris Mihalick -- Created On: May 15, 2008 -- Description: Creates a VO Session Instance, returns the ID -- -- Parameters -- @a_iNewVOSessionInstanceID - OUT - ID of created VO Session -- -- Returns -- o 0 = success -- o else = error code -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_CreateVOSessionInstance] @a_iNewVOSessionInstanceID int OUTPUT AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tran_CreateVOSessionInstance INSERT t_VOSessionInstance ([Unused]) VALUES (1) SELECT @a_iNewVOSessionInstanceID = SCOPE_IDENTITY() , @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tran_CreateVOSessionInstance SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET @a_iNewVOSessionInstanceID = -1 SET NOCOUNT OFF RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CreateVOSessionInstance] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetResourceLineCharacters ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 28, 2007 -- Description: For a resource, returns the character owner of each -- line, where available. Lines that do not resolve to characters -- will not be returned. -- Parameters -- a_iModuleResRefVersionID - IN -- - Version of ModResRef to look up the line owners for. -- Currently only conversation types are supported -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetResourceLineCharacters] @a_iModuleResRefVersionID int AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranResourceLineCharacters ------------------------------------------------------------------------ -- Map the resource lines to Characters ------------------------------------------------------------------------ -- First ensure that our table space is clear DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Then do the mapping EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] NULL, @a_iModuleResRefVersionID IF (@iError <> 0) GOTO ON_ERROR -- return the data SELECT [StringID], [CharacterModuleID], [CharacterResRefID] FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID AND [CharacterModuleID] IS NOT NULL AND [CharacterResRefID] IS NOT NULL SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Clear our temp table space DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranResourceLineCharacters SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetResourceLineCharacters] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_SetCurrentStringImportSession ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 21, 2006 -- Description: Marks the indicated session 'C'urrent -- and sets the other 'C'urrent record as 'I'mport (ie: not Undo) ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_SetCurrentStringImportSession] @a_iStringImportSessionID int AS DECLARE @iError int BEGIN TRANSACTION tranSetCurrentStrImportSession ------------------------------------------------------------------------ -- Check that given Session Exists ------------------------------------------------------------------------ IF NOT EXISTS (SELECT 1 FROM t_StringImportSession WHERE [ID] = @a_iStringImportSessionID) BEGIN SET @iError = -1 GOTO ON_ERROR END ------------------------------------------------------------------------ -- Set any 'C'urrent records to 'H'istory ------------------------------------------------------------------------ UPDATE t_StringImportSession SET [Status] = 'H' WHERE [Status] = 'C' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Set the desired record to 'C'urrent ------------------------------------------------------------------------ UPDATE t_StringImportSession SET [Status] = 'C' WHERE [ID] = @a_iStringImportSessionID SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranSetCurrentStrImportSession return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_SetCurrentStringImportSession] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_AddStringTable] @a_iModuleID int, @a_sName varchar(128), @a_iStringTableID int OUTPUT AS DECLARE @RC int declare @iResRefID int -- Start the main transaction BEGIN TRANSACTION tran_bsp_AddStringTable INSERT INTO t_StringTable ([Name]) values (@a_sName) IF (@@ERROR <> 0) GOTO ON_ERROR SET @a_iStringTableID = SCOPE_IDENTITY() IF (@a_iModuleID > 0) BEGIN UPDATE t_Module SET StringTableID = @a_iStringTableID WHERE id = @a_iModuleID IF (@@ERROR <> 0) GOTO ON_ERROR END COMMIT TRANSACTION tran_bsp_AddStringTable return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- set @RC = @@ERROR ROLLBACK TRANSACTION return @RC GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_AddStringTable] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetNextStringID] @a_iModuleID int, @a_iNewID INT OUTPUT AS declare @l_iError int declare @l_iInitialTransactionCount int declare @l_iRangeBegin int declare @l_iRangeEnd int set @l_iError = 0 -- Start the main transaction set @l_iInitialTransactionCount = @@TranCount BEGIN TRANSACTION tran_bsp_GetNextStringID -- Find the start / end range for the current module SELECT @l_iRangeBegin = [StringIDBegin], @l_iRangeEnd = [StringIDEnd] FROM t_Module WHERE ID = @a_iModuleID IF (@l_iRangeBegin < 0) BEGIN -- Do it the old non-module way: This is for BioWare internal workflow. UPDATE t_KeyGenStringID SET @a_iNewID = LastUsedID = LastUsedID + 1 SET @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR END ELSE BEGIN -- Get the next valid stringID inside the module's ID range -- first check the next one SELECT @a_iNewID = StringIDLastUsed + 1 FROM t_Module WHERE [ID] = @a_iModuleID SET @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR -- If the new ID is in use, or it is outside the valid range, try to find a new one IF ( EXISTS (SELECT 1 FROM t_String WHERE [ID] = @a_iNewID) OR (@a_iNewID NOT BETWEEN @l_iRangeBegin AND @l_iRangeEnd) ) BEGIN SET @a_iNewID = NULL -- Find the lowest ID in our range that is unused SELECT TOP 1 @a_iNewID = X.[ID]+1 FROM ( SELECT [ID] FROM t_String WHERE [ID]+1 BETWEEN @l_iRangeBegin AND @l_iRangeEnd UNION SELECT @l_iRangeBegin-1 ) AS X LEFT OUTER JOIN t_String AS existID ON X.[ID] + 1 = existID.[ID] WHERE existID.[ID] IS NULL ORDER BY X.[ID] ASC SET @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR -- throw error: no available StringIDs! IF (@a_iNewID is NULL) BEGIN SET @l_iError = -100 GOTO ON_ERROR END END UPDATE t_Module SET StringIDLastUsed = @a_iNewID WHERE [ID] = @a_iModuleID SET @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR END COMMIT TRANSACTION tran_bsp_GetNextStringID return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- IF @@TranCount > @l_iInitialTransactionCount ROLLBACK TRANSACTION return @l_iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetNextStringID] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------ -- bsp_AddModuleAssociation -- Steven Hand -- July 25, 2008 ------------------------------------------------------------------------------------------ -- Add a direct dependency between two modules. -- Creates all necessary module association lines to satisfy all possible full paths. -- -- Params: @a_iChildModuleID -- the child module (inherits resources from parent) -- Params: @a_iParentModuleID -- the parent module -- ------------------------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_AddModuleAssociation] @a_iChildModuleID INT, @a_iParentModuleID INT AS BEGIN INSERT INTO [dbo].[t_ModuleAssociation] ([ParentModuleID], [ChildModuleID], [FullPath], [Level]) VALUES ( @a_iParentModuleID, @a_iChildModuleID, CONVERT(varchar, @a_iParentModuleID) + '.' + CONVERT(varchar, @a_iChildModuleID) + '.', 2 ) INSERT INTO [dbo].[t_ModuleAssociation] ([ParentModuleID], [ChildModuleID], [FullPath], [Level]) SELECT t1.ChildModuleID, @a_iChildModuleID, ISNULL(t1.FullPath, CONVERT(varchar, t1.ChildModuleID) + '.') + CONVERT(varchar, @a_iChildModuleID) + '.', t1.Level + 1 FROM [dbo].[t_ModuleAssociation] t1 WHERE t1.ChildModuleID = @a_iParentModuleID AND t1.ChildModuleID <> t1.ParentModuleID INSERT INTO [dbo].[t_ModuleAssociation] ([ParentModuleID], [ChildModuleID], [FullPath], [Level]) SELECT t1.ParentModuleID, t1.ChildModuleID, t2.FullPath + SUBSTRING(t1.FullPath,LEN(CONVERT(varchar,t2.ChildModuleID) + '.')+1,LEN(t1.FullPath)), t1.Level + t2.Level - 1 FROM [dbo].[t_ModuleAssociation] t1 JOIN [dbo].[t_ModuleAssociation] t2 ON t2.ParentModuleID = @a_iParentModuleID AND t2.ChildModuleID = @a_iChildModuleID AND t1.[FullPath] LIKE CONVERT(varchar,@a_iChildModuleID) + '.%' END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_AddModuleAssociation] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_AddNewModule] @a_sName VARCHAR (64), @a_sUID VARCHAR(32), @a_iParentModuleID INT, @a_bIsCore BIT, @a_sDirectory VARCHAR (64), @a_iScriptResRefID int, @a_iClientScriptResRefID int, @a_sVariable2da varchar(32), @a_iStringTableID int, @a_sStartTag varchar(32), @a_iStartAreaResRefID int, @a_bIncludeInResBuild BIT, @a_iType INT, @a_iExtendedModuleID INT, @a_iDisplayNameStringID int, @a_iDescriptionStringID int, @a_iPriority int, @a_sIconImage varchar(32), @a_dtReleaseDate DATETIME, @a_sVersion varchar(32), @a_sGameVersion varchar(32), @a_iRatingStringID int, @a_iRatingDescriptionStringID int, @a_iURLStringID int, @a_iPublisherStringID int, @a_iProductID int, @a_iPrice int, @a_iPresentation int, @a_iContentModuleID INT, @a_bRequiresLocalization bit, @a_bRequiresVO bit, @a_iStringIDBegin int, @a_iStringIDEnd int, @a_iModuleID INT OUTPUT AS DECLARE @iError int BEGIN TRANSACTION tran_bsp_AddNewModule INSERT INTO t_Module ([Name], [UID], [IsCore], [Directory], [ScriptResRefID], [ClientScriptResRefID], [Variable2da], [StringTableID], [StartTag], [StartAreaResRefID], [IncludeInResBuild], [Type], [ExtendedModuleID], [DisplayNameStringID], [DescriptionStringID], [Priority], [IconImage], [ReleaseDate], [Version], [GameVersion], [RatingStringID], [RatingDescriptionStringID], [URLStringID], [PublisherStringID], [ProductID], [Price], [Presentation], [ContentModuleID], [RequiresLocalization], [RequiresVO], [StringIDBegin], [StringIDEnd], [StringIDLastUsed] ) VALUES(@a_sName, @a_sUID, @a_bIsCore, @a_sDirectory, @a_iScriptResRefID, @a_iClientScriptResRefID, @a_sVariable2da, @a_iStringTableID, @a_sStartTag, @a_iStartAreaResRefID, @a_bIncludeInResBuild, @a_iType, @a_iExtendedModuleID, @a_iDisplayNameStringID, @a_iDescriptionStringID, @a_iPriority, @a_sIconImage, @a_dtReleaseDate, @a_sVersion, @a_sGameVersion, @a_iRatingStringID, @a_iRatingDescriptionStringID, @a_iURLStringID, @a_iPublisherStringID, @a_iProductID, @a_iPrice, @a_iPresentation, @a_iContentModuleID, @a_bRequiresLocalization, @a_bRequiresVO, @a_iStringIDBegin, @a_iStringIDEnd, @a_iStringIDBegin-1) IF (@@ERROR <> 0) GOTO ON_ERROR SET @a_iModuleID = SCOPE_IDENTITY() if @a_iParentModuleID = -1 INSERT INTO [dbo].[t_ModuleAssociation]([ParentModuleID], [ChildModuleID], [FullPath], [Level]) VALUES (@a_iModuleID, @a_iModuleID, CONVERT(varchar, @a_iModuleID) + '.', 1) else INSERT INTO [dbo].[t_ModuleAssociation]([ParentModuleID], [ChildModuleID], [FullPath], [Level]) SELECT t1.ChildModuleID, @a_iModuleID, ISNULL(t1.FullPath, CONVERT(varchar, t1.ChildModuleID) + '.') + CONVERT(varchar, @a_iModuleID) + '.', t1.Level + 1 FROM [dbo].[t_ModuleAssociation] t1 WHERE t1.ChildModuleID = @a_iParentModuleID IF (@@ERROR <> 0) GOTO ON_ERROR IF (@a_iStringTableID IS NULL) BEGIN DECLARE @sStringTableName VARCHAR(64) SET @sStringTableName = @a_sName + ' Talk Table' EXEC @iError = dbo.bsp_AddStringTable @a_iModuleID,@sStringTableName , @a_iStringTableID OUTPUT IF (@iError <> 0) GOTO ON_ERROR END COMMIT TRANSACTION tran_bsp_AddNewModule RETURN 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- SET @iError = @@ERROR ROLLBACK TRANSACTION tran_bsp_AddNewModule RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_AddNewModule] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------ -- bsp_DeleteModuleAssociations -- Steven Hand -- July 25, 2008 ------------------------------------------------------------------------------------------ -- Delete all of a module's associations (where child module id = given module id) -- Ensures all indirect associations are deleted as well even if they are not direct -- associations of the module given. -- -- Params: @a_iModuleID -- the module (all associations to parents will be deleted) -- ------------------------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_DeleteModuleAssociations] @a_iModuleID INT AS BEGIN DELETE FROM [dbo].[t_ModuleAssociation] WHERE [FullPath] IN ( SELECT t1.FullPath FROM [dbo].[t_ModuleAssociation] t1 JOIN [dbo].[t_ModuleAssociation] t2 ON t1.FullPath LIKE t2.FullPath + '%' WHERE t2.ChildModuleID = @a_iModuleID ) END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_DeleteModuleAssociations] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_AddResRef] @a_iModuleID int, @a_iOwnerModuleID int, @a_sName varchar(32), @a_sFolder varchar(128), @a_sResType varchar(4), @a_iState int, @a_iResRefID int OUTPUT, @a_iVersionID int OUTPUT AS declare @l_iError int declare @bInValid bit set @l_iError = 0 -- Start the main transaction BEGIN TRANSACTION tran_bsp_AddResRef exec @l_iError = dbo.bsp_ValidateResRefName null, null, @a_sResType, 0, @a_sName, @bInValid OUTPUT if (@@ERROR <> 0) GOTO ON_ERROR if (@bInValid = 1) GOTO ON_ERROR INSERT INTO t_ResRef ([ResType]) VALUES (@a_sResType) if (@@ERROR <> 0) GOTO ON_ERROR SET @a_iResRefID = SCOPE_IDENTITY() INSERT INTO t_ModuleResRef ([ModuleID], [ResRefID]) VALUES (@a_iModuleID, @a_iResRefID) if (@@ERROR <> 0) GOTO ON_ERROR INSERT INTO t_ModuleResRefVersion ([ModuleID], [ResRefID], [OwnerModuleID], [Name], [Folder], [RevisionID], [State]) VALUES (@a_iModuleID, @a_iResRefID, @a_iOwnerModuleID, @a_sName, @a_sFolder, 1, @a_iState) IF (@@ERROR <> 0) GOTO ON_ERROR SET @a_iVersionID = SCOPE_IDENTITY() update t_ModuleResRef set currentmoduleresrefversionid = @a_iVersionID where moduleid = @a_iModuleID and resrefid = @a_iResRefID IF (@@ERROR <> 0) GOTO ON_ERROR COMMIT TRANSACTION tran_bsp_AddResRef return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- set @l_iError = @@ERROR ROLLBACK TRANSACTION return @l_iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_AddResRef] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_AddString] @a_iModuleResRefVersionID int, @a_iStringLanguageVariantID int, @a_iStringTableID int, @a_iOwnerModuleID int, @a_iUseStringID int, @a_iStringTypeID int, @a_sText text, @a_sDescription text, @a_iOwnerResRefID int, @a_iStringID int OUTPUT, @a_iNewVersionID int OUTPUT AS declare @l_iError int declare @l_iInitialTransactionCount int declare @iModuleID int declare @iResRefID int declare @sName varchar(128) set @l_iError = 0 -- Start the main transaction set @l_iInitialTransactionCount = @@TranCount BEGIN TRANSACTION tran_bsp_AddString -- Check to see if we have specified a stringid to use IF (@a_iUseStringID > 0) BEGIN -- Check to make sure it isn't in use IF exists (select 1 from t_string where id = @a_iUseStringID) BEGIN set @l_iError = -101 IF (@l_iError <> 0) GOTO ON_ERROR END SET @a_iStringID = @a_iUseStringID END ELSE BEGIN -- Grab the new StringID if one isn't specified EXEC @l_iError = dbo.bsp_GetNextStringID @a_iOwnerModuleID, @a_iStringID OUTPUT IF (@l_iError <> 0) GOTO ON_ERROR END -- Add a t_String record here INSERT INTO t_String ([ID], [StringTableID]) VALUES (@a_iStringID, @a_iStringTableID) set @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR -- Finish the transaction -- If we do not have a version passed in then we need to create a new resource IF (@a_iModuleResRefVersionID IS NULL or @a_iModuleResRefVersionID <= 0) BEGIN SELECT DISTINCT @iModuleID = [ID] FROM t_Module WHERE StringTableID = @a_iStringTableID set @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR -- if the module is empty then we default to the core module IF (@iModuleID IS NULL or @iModuleID <= 0) BEGIN SELECT @iModuleID = [ID] FROM t_Module WHERE IsCore = 1 END SET @sName = 'String' + convert(varchar(10),@a_iStringID) EXEC @l_iError = dbo.[bsp_AddResRef] @iModuleID, @a_iOwnerModuleID, @sName, '', 'str', 0, @iResRefID OUTPUT , @a_iNewVersionID OUTPUT if (@l_iError <> 0) GOTO ON_ERROR END ELSE BEGIN SET @a_iNewVersionID = @a_iModuleResRefVersionID END INSERT INTO t_StringVersion ([StringID], [ModuleResRefVersionID], [StringTypeID], [OwnerResRefID]) VALUES (@a_iStringID, @a_iNewVersionID, @a_iStringTypeID, @a_iOwnerResRefID) set @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR -- Insert the record into the text table INSERT INTO t_StringText ([StringID], [ModuleResRefVersionID], [StringLanguageVariantID], [Text], [Description]) VALUES (@a_iStringID, @a_iNewVersionID, @a_iStringLanguageVariantID, @a_sText, @a_sDescription) set @l_iError = @@ERROR IF (@l_iError <> 0) GOTO ON_ERROR IF @@TranCount > @l_iInitialTransactionCount COMMIT TRANSACTION tran_bsp_AddString return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- IF @@TranCount > @l_iInitialTransactionCount ROLLBACK TRANSACTION return @l_iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_AddString] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_AdjustVOScriptLineCharacterInternalForStats ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: April 22, 2008 -- -- Description: Adjusts data in t_VOScriptLineCharacterInternal -- (keyed on @@SPID) to reflect character line count stats -- more accurately. -- -- Given how SoundSets are set up on Dragon Age, we wish to -- remove character association from select lines, so that -- they are not considered as lines owned and spoken by -- that (or any) character. -- -- NOTE: Callers should use this bsp after t_VOScriptLineCharacterInternal -- is populated, likely from a call to bsp_DetermineVOScriptLineCharacters. -- -- Parameters: -- -- None -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_AdjustVOScriptLineCharacterInternalForStats] AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranAdjustForStats ------------------------------------------------------------------------ -- Cache the SoundSet ResRefVersionIDs that we wish to use -- in our processing. This is considerably faster. ------------------------------------------------------------------------ DECLARE @SoundSetVersion TABLE ( [ModuleResRefVersionID] int ) ------------------------------------------------------------------------ -- Look up Sound Set resource versions of interest. ------------------------------------------------------------------------ INSERT @SoundSetVersion SELECT DISTINCT ResourceModuleResRefVersionID FROM t_VOScriptLineCharacterInternal voslci JOIN t_ModuleResRefVersion mrv ON voslci.[ResourceModuleResRefVersionID] = mrv.[ID] AND LEFT(mrv.[Name], 3) = 'ss_' WHERE voslci.[SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- SoundSet Culling: -- If a soundset section has been declared void, remove all of its -- placeholder and child (NPC) lines. -- -- Definition: a section is declared void if it is a top-level NPC -- line, where the [Comment] field contains 'VOID' in it. -- -- Note: Child NPC lines are only removed one level deep. -- -- This is how the project has decided to do soundsets. ------------------------------------------------------------------------ DELETE voslci FROM @SoundSetVersion ssVersion JOIN t_ConversationTransition ct ON ct.[ModuleResRefVersionID] = ssVersion.[ModuleResRefVersionID] JOIN t_ConversationLine clStart ON clStart.[ModuleResRefVersionID] = ct.[ModuleResRefVersionID] AND ct.[FromIndex] = -1 AND ct.[ToIndex] = clStart.[Index] AND clStart.[Comment] LIKE '%void%' JOIN t_ConversationTransition ctStartToPC ON clStart.[ModuleResRefVersionID] = ctStartToPC.[ModuleResRefVersionID] AND ctStartToPC.[FromIndex] = clStart.[Index] JOIN t_ConversationTransition ctPCToNPC ON ctPCToNPC.[ModuleResRefVersionID] = ctStartToPC.[ModuleResRefVersionID] AND ctPCToNPC.[FromIndex] = ctStartToPC.[ToIndex] JOIN t_ConversationLine clNPCLevel2 ON ctPCToNPC.[ModuleResRefVersionID] = clNPCLevel2.[ModuleResRefVersionID] AND ctPCToNPC.[ToIndex] = clNPCLevel2.[Index] JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND voslci.[StringID] = clNPCLevel2.[TextStringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- SoundSet Culling: -- The root level NPC lines are all section headings. -- We wish to remove all these so that they are considered to have -- no mapped character, when we are performing line counts per -- character. ------------------------------------------------------------------------ DELETE voslci FROM @SoundSetVersion ssVersion JOIN t_ConversationTransition ct ON ct.[ModuleResRefVersionID] = ssVersion.[ModuleResRefVersionID] JOIN t_ConversationLine clStart ON clStart.[ModuleResRefVersionID] = ct.[ModuleResRefVersionID] AND ct.[FromIndex] = -1 AND ct.[ToIndex] = clStart.[Index] JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND voslci.[StringID] = clStart.[TextStringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Finished ------------------------------------------------------------------------ COMMIT TRANSACTION tranAdjustForStats SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------------------------ -- bsp_AreaObjectInstanceChanges -- Curtis Onuczko -- May 9, 2008 ------------------------------------------------------------------------------------------ -- Given a start date, end date, and a module ID all area objects that have been added/removed -- between the current version as of the start date and the current version as of the end date. -- -- Params: @a_sFolder -- t_ModuleResRefVersion.Folder value -- Selects: Area object instance changes. -- ------------------------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_AreaObjectInstanceChanges] @a_dateStart DATETIME, @a_dateEnd DATETIME, @a_iModuleID INT AS BEGIN -- Get all of the changed areas into a table DECLARE @t_ChangedAreas TABLE ( Name VARCHAR(32), ResRefID INT, IDBeforeStart INT, IDBeforeEnd INT ) INSERT INTO @t_ChangedAreas (Name, ResRefID, IDBeforeStart, IDBeforeEnd) SELECT mrrv.Name, mrrv.ResRefID, ( SELECT MAX (mrrv1.id) FROM t_ModuleResRefVersion mrrv1 WHERE mrrv1.ResRefID = mrrv.ResRefID AND mrrv1.moduleID = mrrv.moduleID AND mrrv1.Status <> 'S' AND mrrv1.Date <= @a_dateStart ), MAX (mrrv.ID) FROM t_Area t1 JOIN t_ModuleResRefVersion mrrv ON t1.ModuleResRefVersionID = mrrv.ID WHERE mrrv.Status <> 'S' AND mrrv.ModuleID = @a_iModuleID AND mrrv.Date > @a_dateStart AND mrrv.Date <= @a_dateEnd GROUP BY mrrv.Name, mrrv.ResRefID, mrrv.moduleID -- Add all changed area objects before the start time to a table DECLARE @t_AreaObjectsBeforeStart TABLE ( AreaName VARCHAR(32), ResRefName VARCHAR(32), ResRefID INT, CurrentResRefMRRVID INT, Tag VARCHAR(32), InstanceCount INT ) INSERT INTO @t_AreaObjectsBeforeStart (AreaName, ResRefName, ResRefID, CurrentResRefMRRVID, Tag, InstanceCount) SELECT t2.Name, t3.Name, t3.ResRefID, t3.ID, CASE WHEN t1.tag = '' THEN ISNULL(dbo.udf_GetResourceTag (t3.ID), t3.Name) ELSE t1.tag END, COUNT (*) FROM t_AreaObject t1 JOIN @t_ChangedAreas t2 ON t1.ModuleResRefVersionID = t2.IDBeforeStart JOIN t_ModuleResRefVersion t3 ON t1.ObjectResRefID = t3.ResRefID AND t3.Status = 'C' GROUP BY t2.Name, t3.Name, t3.ResRefID, t3.ID, t1.Tag -- -- Add all changed area objects before the end time to a table DECLARE @t_AreaObjectsBeforeEnd TABLE ( AreaName VARCHAR(32), ResRefName VARCHAR(32), ResRefID INT, CurrentResRefMRRVID INT, Tag VARCHAR(32), InstanceCount INT ) INSERT INTO @t_AreaObjectsBeforeEnd (AreaName, ResRefName, ResRefID, CurrentResRefMRRVID, Tag, InstanceCount) SELECT t2.Name, t3.Name, t3.ResRefID, t3.ID, CASE WHEN t1.tag = '' THEN ISNULL(dbo.udf_GetResourceTag (t3.ID), t3.Name) ELSE t1.tag END, COUNT (*) FROM t_AreaObject t1 JOIN @t_ChangedAreas t2 ON t1.ModuleResRefVersionID = t2.IDBeforeEnd JOIN t_ModuleResRefVersion t3 ON t1.ObjectResRefID = t3.ResRefID AND t3.Status = 'C' GROUP BY t2.Name, t3.Name, t3.ResRefID, t3.ID, t1.Tag SELECT ISNULL (t1.AreaName, t2.AreaName) as AreaName, t3.ResType as ResType, ISNULL (t1.ResRefName, t2.ResRefName) as ResRefName, ISNULL (t1.Tag, t2.Tag) as Tag, ISNULL (t2.InstanceCount, 0) - ISNULL (t1.InstanceCount, 0) as InstanceDelta FROM @t_AreaObjectsBeforeStart t1 FULL JOIN @t_AreaObjectsBeforeEnd t2 ON t1.AreaName = t2.AreaName AND t1.ResRefName = t2.ResRefName AND t1.Tag = t2.Tag JOIN t_ResRef t3 ON ISNULL(t1.ResRefID, t2.ResRefID) = t3.ID WHERE ISNULL (t2.InstanceCount, 0) - ISNULL (t1.InstanceCount, 0) <> 0 ORDER BY AreaName, ResType, ResRefName, Tag END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_AreaObjectInstanceChanges] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_BatchPrintVOScriptLines ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: April 11, 2007 -- Description: Performs batch processing of VO Script Lines -- Lines that are batch processed are logged to the database as -- having been recorded. All the other data such as audio filenames, -- and status record manipulation happens here as well. -- -- Parameters: -- None. All data is processed from the t_VOScriptBatchPrint table -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_BatchPrintVOScriptLines] AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranVOBatchPrint ------------------------------------------------------------------------ -- Determine the String Revision Numbers ------------------------------------------------------------------------ -- Increment the Revisions of existing StringIDs UPDATE vosr SET vosr.[Revision] = 1 + vosr.[Revision] FROM t_VOScriptStringRevision vosr JOIN t_VOScriptBatchPrint vobp ON vobp.[SPID] = @@SPID AND vobp.[StringID] = vosr.[StringID] AND vobp.[StringLanguageID] = vosr.[StringLanguageID] AND vobp.[StringVariantID] = vosr.[StringVariantID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Grab these new revisions UPDATE vobp SET vobp.[Revision] = vosr.[Revision] FROM t_VOScriptBatchPrint vobp JOIN t_VOScriptStringRevision vosr ON vobp.[SPID] = @@SPID AND vobp.[StringID] = vosr.[StringID] AND vobp.[StringLanguageID] = vosr.[StringLanguageID] AND vobp.[StringVariantID] = vosr.[StringVariantID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Insert strings never before revisioned INSERT t_VOScriptStringRevision ([StringID], [StringLanguageID], [StringVariantID], [Revision]) SELECT [StringID], [StringLanguageID], [StringVariantID], 1 FROM t_VOScriptBatchPrint vobp WHERE vobp.[SPID] = @@SPID AND vobp.[Revision] IS NULL AND vobp.[StringID] IS NOT NULL SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Set the revision data UPDATE vobp SET vobp.[Revision] = 1 FROM t_VOScriptBatchPrint vobp WHERE vobp.[SPID] = @@SPID AND vobp.[Revision] IS NULL SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- END Determine the String Revision Numbers ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- Create the Script Instances ------------------------------------------------------------------------ -- Make Instances INSERT t_VOScriptInstance ([VOScriptID], [Active], [StringLanguageID], [PrintedOn], [ScriptType], [ScriptParent]) SELECT DISTINCT [VOScriptID], 'A', [StringLanguageID], [PrintedOn], [ScriptType], [ScriptParent] FROM t_VOScriptBatchPrint WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Get these Instance IDs UPDATE vobp SET [VOScriptInstanceID] = vosi.[ID] FROM t_VOScriptBatchPrint vobp JOIN t_VOScriptInstance vosi ON vobp.[SPID] = @@SPID AND vobp.[VOScriptID] = vosi.[VOScriptID] AND vosi.[Active] = 'A' AND vobp.[StringLanguageID] = vosi.[StringLanguageID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Update the Comments and the OutputFolders UPDATE vosi SET [Comment] = vobp.[Comment], [OutputFolder] = vobp.[OutputFolder] FROM t_VOScriptInstance vosi JOIN t_VOScriptBatchPrint vobp ON vobp.[SPID] = @@SPID AND vobp.[VOScriptInstanceID] = vosi.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- END Create the Script Instances ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- Create the Script Instance Strings ------------------------------------------------------------------------ -- Look up the current Instance Strings (these will become PreviousVOScriptInstanceStringID) UPDATE vobp SET [PreviousVOScriptInstanceStringID] = vosis.[ID] FROM t_VOScriptBatchPrint vobp JOIN t_VOScriptInstanceString vosis ON vosis.[StringID] = vobp.[StringID] AND vosis.[Active] = 'A' AND vosis.[StringVariantID] = vobp.[StringVariantID] JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] AND vosi.[StringLanguageID] = vobp.[StringLanguageID] WHERE vobp.[SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Look up the English CompareDate values UPDATE vobp SET vobp.[CompareDate] = st.[VORequestOn] FROM t_VOScriptBatchPrint vobp JOIN t_StringText st ON vobp.[SPID] = @@SPID AND vobp.[IsForeign] = 0 -- English only AND vobp.[StringID] = st.[StringID] AND vobp.[ModuleResRefVersionID] = st.[ModuleResRefVersionID] AND st.[StringLanguageVariantID] = 1 SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Perform Foreign VO Script Processing, only -- if there is foreign VO Script data to process. IF (EXISTS( SELECT 1 FROM t_VOScriptBatchPrint WHERE [SPID] = @@SPID AND [IsForeign] = 1)) BEGIN -- Look up the Foreign CompareDate values -- TODO : Verify this UPDATE uvobp SET uvobp.[StringLanguageVariantVersionID] = tMaxSLVVID.[MasStringLanguageVariantVersionID] FROM t_VOScriptBatchPrint uvobp JOIN ( SELECT vobp.[ID], MAX(slvv.[ID]) as [MasStringLanguageVariantVersionID] FROM t_VOScriptBatchPrint vobp JOIN t_StringLanguageVariant slv ON vobp.[SPID] = @@SPID AND vobp.[StringLanguageID] = slv.[StringLanguageID] AND vobp.[StringVariantID] = slv.[StringVariantID] JOIN t_StringLanguageVariantVersion slvv ON slv.[ID] = slvv.[StringLanguageVariantID] AND (slvv.[Status] = 'C' OR slvv.[Status] = 'H') JOIN t_StringImportSession sis ON slvv.[StringImportSessionID] = sis.[ID] AND vobp.[PrintedOn] > sis.[ImportedOn] GROUP BY vobp.[ID] ) tMaxSLVVID ON uvobp.[SPID] = @@SPID AND uvobp.[IsForeign] = 1 AND uvobp.[ID] = tMaxSLVVID.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Apply Foreign CompareDate values UPDATE vobp SET vobp.[CompareDate] = sis.[ImportedOn] FROM t_VOScriptBatchPrint vobp JOIN t_StringLanguageVariantText slvt ON vobp.[SPID] = @@SPID AND vobp.[StringLanguageVariantVersionID] = slvt.[StringLanguageVariantVersionID] AND vobp.[StringID] = slvt.[StringID] JOIN t_StringImportSession sis ON slvt.[StringImportSessionID] = sis.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END -- END Foreign VO Script Processing -- Make new Script Instance String Records INSERT INTO t_VOScriptInstanceString ([VOScriptInstanceID], [Active], [Status], [Revision], [CompareDate], [PreviousVOScriptInstanceStringID], [IsForeign], [StringID], [ModuleResRefVersionID], [StringLanguageVariantID], [StringLanguageVariantVersionID], [AudioFileName], [StringVariantID]) SELECT [VOScriptInstanceID], 'A', 'P', [Revision], [CompareDate], [PreviousVOScriptInstanceStringID], [IsForeign], [StringID], [ModuleResRefVersionID], 1, [StringLanguageVariantVersionID], [AudioFileName], [StringVariantID] FROM t_VOScriptBatchPrint vobp WHERE vobp.[SPID] = @@SPID AND vobp.[StringID] IS NOT NULL SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Grab the new VOScriptInstanceStringIDs UPDATE vobp SET [VOScriptInstanceStringID] = vosis.[ID] FROM t_VOScriptBatchPrint vobp JOIN t_VOScriptInstanceString vosis ON vobp.[SPID] = @@SPID AND vobp.[VOScriptInstanceID] = vosis.[VOScriptInstanceID] AND vobp.[StringID] = vosis.[StringID] AND ( (vobp.[StringLanguageVariantVersionID] = vosis.[StringLanguageVariantVersionID]) or (vosis.[IsForeign] = 0 and vobp.[IsForeign] = 0) ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Create new Script Instance String Status Records INSERT INTO t_VOScriptInstanceStringStatus ([VOScriptInstanceStringID], [Active], [Action], [CompareDate], [Revision], [Comment]) SELECT vosis.[ID], 'A', 'P', vosis.[CompareDate], vosis.[Revision], vobp.[Comment] FROM t_VOScriptInstanceString vosis JOIN t_VOScriptBatchPrint vobp ON vobp.[SPID] = @@SPID AND vosis.[ID] = vobp.[VOScriptInstanceStringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- END Create the Script Instance Strings ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- Remove our temp data ------------------------------------------------------------------------ DELETE FROM t_VOScriptBatchPrint WHERE [SPID] = @@SPID COMMIT TRANSACTION tranVOBatchPrint SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_BatchPrintVOScriptLines] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_CheckinResource] @a_iModuleID int, @a_iResRefID int, @a_iVersionID int, @a_sComment text AS declare @iModuleID int declare @iResRefID int declare @iError int declare @iRowCount int set @iError = 0 -- Start the main transaction BEGIN TRANSACTION tran_bsp_CheckinResource -- Get the Module and ResRef ID's if we have passed in the Version IF (@a_iVersionID IS NULL or @a_iVersionID <= 0) BEGIN SET @iModuleID = @a_iModuleID SET @iResRefID = @a_iResRefID END ELSE BEGIN SELECT @iModuleID = ModuleID , @iResRefID = ResRefID FROM t_ModuleResRefVersion WHERE ID = @a_iVersionID END -- Archive the current version update t_ModuleResRefVersion set status = 'H' from t_ModuleResRef mrr where t_ModuleResRefVersion.id = mrr.CurrentModuleResRefVersionID and mrr.ModuleId = @iModuleID and mrr.ResRefID = @iResRefID SELECT @iRowCount = @@ROWCOUNT, @iError = @@ERROR IF (@iError <> 0 or @iRowCount = 0) GOTO ON_ERROR -- Update the scratch version that will become the current version update t_ModuleResRefVersion set status = 'C', comment = case DATALENGTH(@a_sComment) WHEN 0 THEN NULL ELSE @a_sComment END, date = getdate() from t_ModuleResRef mrr where t_ModuleResRefVersion.id = mrr.ScratchModuleResRefVersionID and mrr.ModuleId = @iModuleID and mrr.ResRefID = @iResRefID SELECT @iRowCount = @@ROWCOUNT, @iError = @@ERROR IF (@iError <> 0 or @iRowCount = 0) GOTO ON_ERROR -- Update the current and scratch references update t_ModuleResRef set CurrentModuleResRefVersionID = ScratchModuleResRefVersionID , ScratchModuleResRefVersionID = null where ModuleId = @iModuleID and ResRefID = @iResRefID and ScratchModuleResRefVersionID IS NOT NULL SELECT @iRowCount = @@ROWCOUNT, @iError = @@ERROR IF (@iError <> 0 or @iRowCount = 0) GOTO ON_ERROR COMMIT TRANSACTION tran_bsp_CheckinResource return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- if (@iError = 0) set @iError = @@ERROR ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CheckinResource] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_CheckoutResource] @a_iModuleID int, @a_iResRefID int, @a_iCurrentVersionID int, @a_iNewVersionID int OUTPUT AS declare @iModuleID int declare @iResRefID int declare @iCurrentVersionID int declare @iRevisionID int declare @iError int declare @sTableName varchar(128) DECLARE @iCounter int declare @iTotalCount int declare @iRowCount int Declare @tResourceTables table (TID int IDENTITY, TableName varchar(128)) set @iError = 0 -- Start the main transaction BEGIN TRANSACTION tran_bsp_CheckoutResource IF (@a_iCurrentVersionID IS NULL or @a_iCurrentVersionID <= 0) BEGIN select @iCurrentVersionID = CurrentModuleResRefVersionID , @iModuleID = @a_iModuleID , @iResRefID = @a_iResRefID from t_ModuleResRef mrr where ModuleId = @a_iModuleID and ResRefID = @a_iResRefID and ScratchModuleResRefVersionID IS NULL END ELSE BEGIN SELECT @iCurrentVersionID = @a_iCurrentVersionID , @iModuleID = ModuleID , @iResRefID = ResRefID FROM t_ModuleResRefVersion WHERE ID = @a_iCurrentVersionID END IF (@iCurrentVersionID IS NULL or @iCurrentVersionID <= 0) BEGIN SET @iError = -1 GOTO ON_ERROR END SELECT @iRevisionID = mrrv.RevisionID + 1 FROM t_ModuleResRefVersion mrrv JOIN t_ModuleResRef mrr on mrrv.ID = mrr.CurrentModuleResRefVersionID AND mrr.ModuleID = @iModuleID AND mrr.ResRefID = @iResRefID AND mrr.ScratchModuleResRefVersionID IS NULL select @iRowCount = @@ROWCOUNT, @iError = @@ERROR IF (@iError <> 0 or @iRowCount = 0) GOTO ON_ERROR insert into t_ModuleResRefVersion (ModuleID, OwnerModuleID, ResRefID, Name, Folder, Status, RevisionID, State) select mrrv.ModuleID, mrrv.OwnerModuleID, mrrv.ResRefID, mrrv.Name, mrrv.Folder, 'S', @iRevisionID, mrrv.State from t_ModuleResRefVersion mrrv where mrrv.id = @iCurrentVersionID select @iRowCount = @@ROWCOUNT, @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR SET @a_iNewVersionID = SCOPE_IDENTITY() INSERT INTO @tResourceTables(TableName) select lower(rt.name) from t_ResourceDefinition rd join t_ResRef rr on rd.ResType = rr.ResType and rr.id = @iResRefID join t_ResourceTableRelationship rtr1 on rtr1.FullPath like convert(varchar(10),rd.BaseResourceTableID) + '.%' join t_ResourceTables rt on rt.id = rtr1.ChildResourceTableID order by level select @iTotalCount = @@ROWCOUNT, @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR SET @iCounter = 1 WHILE @iCounter <= @iTotalCount BEGIN SELECT @sTableName = TableName FROM @tResourceTables WHERE TID = @iCounter exec @iError = dbo.bsp_CreateNewResourceVersion @iCurrentVersionID, @a_iNewVersionID, @sTableName if (@iError <> 0) GOTO ON_ERROR SET @iCounter = @iCounter + 1 END -- We now do the string tables exec @iError = dbo.bsp_CreateNewStringVersion @iCurrentVersionID, @a_iNewVersionID if (@iError <> 0) GOTO ON_ERROR update t_ModuleResRef set scratchmoduleresrefversionid = @a_iNewVersionID where moduleid = @iModuleID and resrefid = @iResRefID and scratchmoduleresrefversionid is null SELECT @iRowCount = @@ROWCOUNT, @iError = @@ERROR IF (@iError <> 0 or @iRowCount = 0) GOTO ON_ERROR COMMIT TRANSACTION tran_bsp_CheckoutResource return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- if (@iError = 0) set @iError = -1 ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CheckoutResource] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Alter bsp_CreateNewStringVersion to incorporate the VORequestOn flag ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_CreateNewStringVersion] @a_iCurrentVersionID int, @a_iNewVersionID int AS INSERT INTO t_StringVersion (StringID, ModuleResRefVersionID, StringTypeID, OwnerResRefID, Define) SELECT StringID, @a_iNewVersionID, StringTypeID, OwnerResRefID, Define FROM t_StringVersion sv1 WHERE sv1.ModuleResRefVersionID = @a_iCurrentVersionID if (@@ERROR <> 0) GOTO ON_ERROR INSERT INTO t_StringText (StringID, ModuleResRefVersionID, StringLanguageVariantID, [Text], [Description], [LastMinorUpdateOn], [LastMinorUpdateBy], [LastMajorUpdateOn], [LastMajorUpdateBy], [StringIsCopy], [MinorUpdateCount], [VORequestOn]) SELECT StringID, @a_iNewVersionID, StringLanguageVariantID, [Text], [Description], [LastMinorUpdateOn], [LastMinorUpdateBy], [LastMajorUpdateOn], [LastMajorUpdateBy], 1, [MinorUpdateCount], [VORequestOn] FROM t_StringText st1 WHERE st1.ModuleResRefVersionID = @a_iCurrentVersionID if (@@ERROR <> 0) GOTO ON_ERROR return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- return @@ERROR GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CreateNewStringVersion] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- bsp_CreateScratchStringLanguageVariantVersion ------------------------------------------------------------------------ -- Owned By: Kris Tan -- Created On: 09-21-2006 -- Description: This method creates a new Scratch entry and updates -- t_StringLanguageVariant ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_CreateScratchStringLanguageVariantVersion] @a_iStringLanguageVariantID INT, @a_iStringImportSessionID INT, @a_inewStringLanguageVariantVersionID INT OUTPUT AS BEGIN TRANSACTION tranCreateScratchLangVarVer DECLARE @iError INT -- First check to see if a scratch already exists for this language variant version IF EXISTS ( SELECT 1 FROM [dbo].[t_StringLanguageVariant] WHERE [ID] = @a_iStringLanguageVariantID AND [ScratchStringLanguageVariantVersionID] IS NULL ) BEGIN -- Create the new StringLanguageVariantVersion INSERT INTO [dbo].[t_StringLanguageVariantVersion] ( [StringLanguageVariantID], [Status], [PreviousStringLanguageVariantVersionID], [StringImportSessionID] ) SELECT [ID], 'S', [CurrentStringLanguageVariantVersionID], @a_iStringImportSessionID FROM [dbo].[t_StringLanguageVariant] WHERE [ID] = @a_iStringLanguageVariantID -- Retrieve the newly created ID SELECT @iError = @@ERROR, @a_inewStringLanguageVariantVersionID = SCOPE_IDENTITY() if (@iError <> 0) GOTO ON_ERROR -- Update the scratch id in t_StringLanguageVariant to the new ID we just created UPDATE [dbo].[t_StringLanguageVariant] SET [ScratchStringLanguageVariantVersionID] = @a_inewStringLanguageVariantVersionID WHERE [ID] = @a_iStringLanguageVariantID SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR END ELSE BEGIN SET @iError = -1 GOTO ON_ERROR END COMMIT TRANSACTION tranCreateScratchLangVarVer return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CreateScratchStringLanguageVariantVersion] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_CreateVOSession ------------------------------------------------------------------------ -- Owned By: Chris Mihalick -- Created On: May 15, 2008 -- Description: Creates a VO Session, returns the ID -- -- Parameters -- @a_iLanguageID - Language -- @a_iNewVOSessionID - OUT - ID of created VO Session -- -- Returns -- o 0 = success -- o else = error code -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_CreateVOSession] @a_iLanguageID int, @a_iNewVOSessionID int OUTPUT AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tran_CreateVOSession INSERT t_VOSession ([LanguageID]) VALUES (@a_iLanguageID) SELECT @a_iNewVOSessionID = SCOPE_IDENTITY() , @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tran_CreateVOSession SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET @a_iNewVOSessionID = -1 SET NOCOUNT OFF RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_CreateVOSession] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_DeleteResource] @a_iID int, @a_bDelete bit, @a_bReWrite bit, @a_bUndoCheckOut bit AS declare @iError int declare @iRowCount int declare @iID int declare @sTableName varchar(128) DECLARE @iCounter int declare @iTotalCount int Declare @tResourceTables table (TID int IDENTITY, TableName varchar(128)) declare @sql nvarchar(4000) set @iError = 0 set @sql = '' set @iID = @a_iID -- Start the main transaction BEGIN TRANSACTION tran_bsp_DeleteResource if (@a_bDelete = 1) BEGIN update t_ModuleResRefVersion set status = 'H' where id = @iID and state <> -1 SELECT @iError = @@ERROR, @iRowCount = @@ROWCOUNT IF @iRowCount = 0 AND @iError = 0 SET @iError = -1 IF (@iError <> 0) GOTO ON_ERROR update t_ModuleResRef set CurrentModuleResRefVersionID = NULL from t_ModuleResRefVersion mrrv where mrrv.id = @iID and t_ModuleResRef.ModuleID = mrrv.ModuleID and t_ModuleResRef.ResRefID = mrrv.ResRefID set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR END ELSE BEGIN IF (@a_bReWrite = 1) BEGIN -- We do not delete the main table INSERT INTO @tResourceTables(TableName) select lower(rt.name) from t_ResourceDefinition rd join t_ResRef rr on rd.ResType = rr.ResType join t_ModuleResRefVersion mrrv on rr.id = mrrv.resrefid and mrrv.id = @iID join t_ResourceTableRelationship rtr1 on rtr1.FullPath like convert(varchar(10),rd.BaseResourceTableID) + '.%' and rtr1.FullPath <> convert(varchar(10),rd.BaseResourceTableID) + '.' join t_ResourceTables rt on rt.id = rtr1.ChildResourceTableID order by level desc END ELSE BEGIN -- We are performing an undo checkout at this point -- We have to delete the string tables INSERT INTO @tResourceTables(TableName) VALUES ('t_stringtext') INSERT INTO @tResourceTables(TableName) VALUES ('t_stringversion') -- We delete all the tables INSERT INTO @tResourceTables(TableName) select lower(rt.name) from t_ResourceDefinition rd join t_ResRef rr on rd.ResType = rr.ResType join t_ModuleResRefVersion mrrv on rr.id = mrrv.resrefid and mrrv.id = @iID join t_ResourceTableRelationship rtr1 on rtr1.FullPath like convert(varchar(10),rd.BaseResourceTableID) + '.%' join t_ResourceTables rt on rt.id = rtr1.ChildResourceTableID order by level desc END set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR select @iTotalCount = count(*) from @tResourceTables SET @iCounter = 1 WHILE @iCounter <= @iTotalCount BEGIN SELECT @sTableName = TableName FROM @tResourceTables WHERE TID = @iCounter set @sql = 'delete from ' + @sTableName + ' where moduleresrefversionid = ' + convert(varchar(10),@iID) exec sp_executesql @sql set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR SET @iCounter = @iCounter + 1 END IF (@a_bUndoCheckOut = 1) BEGIN -- Now we clean up the version records UPDATE t_ModuleResRef SET ScratchModuleResRefVersionID = NULL FROM t_ModuleResRefVersion mrrv WHERE mrrv.ModuleID = t_ModuleResRef.ModuleID AND mrrv.ResRefID = t_ModuleResRef.ResRefID AND mrrv.id = @iID set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR DELETE FROM t_ModuleResRefVersion WHERE ID = @iID set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR -- Now we can cleanup any strings that were created in scratch DELETE FROM t_String WHERE not exists (SELECT 'x' FROM t_StringVersion sv JOIN t_ModuleResRefVersion mrrv on sv.ModuleResRefVersionID = mrrv.ID where sv.stringid = t_String.id) set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR END END COMMIT TRANSACTION tran_bsp_DeleteResource return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- if (@iError = 0) set @iError = -1 ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_DeleteResource] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_DeleteString] @a_iID int, @a_iModuleResRefVersionID int, @a_iStringLanguageVariantID int AS declare @iError int set @iError = 0 -- Start the main transaction BEGIN TRANSACTION tran_bsp_DeleteString DELETE FROM t_StringText WHERE StringID = @a_iID AND ModuleResRefVersionID = @a_iModuleResRefVersionID AND StringLanguageVariantID = @a_iStringLanguageVariantID set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR DELETE FROM t_StringVersion WHERE StringID = @a_iID AND ModuleResRefVersionID = @a_iModuleResRefVersionID set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR DELETE FROM t_String WHERE id = @a_iID AND not exists (SELECT 1 FROM t_moduleresrefversion mrrv1 JOIN t_ModuleResRefVersion mrrv on mrrv.moduleid = mrrv1.moduleid and mrrv.resrefid = mrrv1.resrefid JOIN t_StringVersion sv on sv.ModuleResRefVersionID = mrrv.ID and sv.stringid = t_String.id WHERE mrrv1.id = @a_iModuleResRefVersionID) set @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tran_bsp_DeleteString return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- if (@iError = 0) set @iError = -1 ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_DeleteString] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_DetermineVOScriptLineCharacters ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 22, 2007 -- -- Description: Determines the Character that is mapped to every line -- that appears in a Conversation. Lines that could not be mapped -- to a character are not returned. -- -- NOTE: data is placed in t_VOScriptLineCharacterInternal, keyed on -- @@SPID. The caller is responsible for cleaning up this data. -- -- NOTE: When a VOScriptID is not specified, the result set includes -- resources that do not have a t_VOScript entry. When a VOScriptID -- is specified, the result set only includes the resource that -- corresponds to that VOScript. -- -- Parameters: -- -- a_iVOScriptID - Set as follows: -- o NULL when looking up characters for lines on all VO Scripts -- o VOScriptID of a specific VOScript -- a_iModuleResRefVersionID - Set as follows: -- o NULL will use the live/current version of needed resources -- o MRRVersionID will use that specific version of a resource. -- Only set a versionID when using a specific VOScriptID. -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_DetermineVOScriptLineCharacters] @a_iVOScriptID int, @a_iModuleResRefVersionID int AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranDetermineVOScriptChars CREATE TABLE #tblDLGTagCharacter ( [ModuleID] int, [ResRefID] int, [ModuleResRefVersionID] int, [Tag] varchar(32), [CharacterModuleID] int, [CharacterResRefID] int ) ------------------------------------------------------------------------ -- Ensure the process-key space we will be using is empty. ------------------------------------------------------------------------ DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Look up the Tags - Character ------------------------------------------------------------------------ INSERT INTO #tblDLGTagCharacter ([ModuleID], [ResRefID], [ModuleResRefVersionID], [Tag], [CharacterModuleID], [CharacterResRefID]) EXEC @iError = [dbo].[bsp_GetConversationTagToCharacterList] @a_iModuleResRefVersionID, 1, 0 IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Thin out tag-character information belonging to resources for -- scripts that we are not interested in. If @a_iVOScriptID is NULL, -- leave all this data alone. ------------------------------------------------------------------------ IF (@a_iVOScriptID IS NOT NULL) BEGIN DELETE t FROM #tblDLGTagCharacter t WHERE NOT EXISTS ( SELECT 1 FROM t_VOScript vos WHERE vos.[ResourceModuleID] = t.[ModuleID] AND vos.[ResourceResRefID] = t.[ResRefID] AND @a_iVOScriptID = vos.[ID] ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Prepare a list of conversation lines and their resolved Speaker -- tags. -- Add the information into our table. This is the lines and -- associated character for every line of vo script resource. ------------------------------------------------------------------------ -- NOTE: April 23, 2008, Chris Christou -- With the Exception of SoundSets, we will strip all Character -- mappings from blank lines. There are issues with scripting -- conditional lines being mapped to multiple (or none) characters, -- but since these lines are blank, no character is necessary. -- -- Soundsets will be excluded from this -- many of the soundset lines -- are blank to denote that they are placeholder lines. We want -- these to be mapped to the soundset owner so that the line counts -- will be properly reflected. ------------------------------------------------------------------------ INSERT INTO t_VOScriptLineCharacterInternal ( [SPID], [ResourceModuleID], [ResourceResRefID], [ResourceModuleResRefVersionID], [StringID], [CharacterModuleID], [CharacterResRefID] ) SELECT @@SPID, t.[ModuleID], t.[ResRefID], t.[ModuleResRefVersionID], cl.[TextStringID], t.[CharacterModuleID], t.[CharacterResRefID] FROM #tblDLGTagCharacter t JOIN t_Conversation c WITH ( NOLOCK ) ON t.[ModuleResRefVersionID] = c.[ModuleResRefVersionID] JOIN t_ConversationLine cl WITH ( NOLOCK ) ON c.[ModuleResRefVersionID] = cl.[ModuleResRefVersionID] AND t.[Tag] = CASE WHEN cl.[Speaker] = '' THEN c.[DefaultNPCSpeaker] ELSE cl.[Speaker] END JOIN t_StringText st WITH ( NOLOCK ) ON st.[ModuleResRefVersionID] = cl.[ModuleResRefVersionID] AND st.[StringID] = cl.[TextStringID] JOIN t_ModuleResRefVersion mrv WITH ( NOLOCK ) ON st.[ModuleResRefVersionID] = mrv.[ID] WHERE ( st.[WordCount] > 0 OR (LEFT(mrv.[Name], 3) = 'ss_' AND cl.[IsPC] = 0) ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Dump our temp objects ------------------------------------------------------------------------ DROP TABLE #tblDLGTagCharacter COMMIT TRANSACTION tranDetermineVOScriptChars SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_DetermineVOScriptLineCharacters] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_DoNotReRecordVOScriptString ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 21, 2007 -- Description: Marks an InstanceString so that it does not indicate -- that it requires recording. Call this on active strings only. -- If the string is modified after this datetime, it will once -- again require recording. -- -- Parameters -- a_iVOScriptInstanceStringID - InstanceStringID to mark as -- presently not requiring recording. -- a_sComment - User comment to associate with the ReRecord action ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_DoNotReRecordVOScriptString] @a_iVOScriptInstanceStringID int, @a_sComment nText AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranDoNotReRecord ------------------------------------------------------------------------ -- Update the CompareDate on the record of interest -- Set it to the current DateTime so that the string -- will not indicate it needs recording unless somebody -- changes it after this point. ------------------------------------------------------------------------ UPDATE vosis SET [CompareDate] = GetDate() FROM t_VOScriptInstanceString vosis WHERE [ID] = @a_iVOScriptInstanceStringID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Add new InstanceStringStatus record ------------------------------------------------------------------------ INSERT INTO t_VOScriptInstanceStringStatus ([VOScriptInstanceStringID], [Active], [Action], [CompareDate], [Revision], [Comment]) SELECT vosis.[ID], 'A', 'D', vosis.[CompareDate], vosis.[Revision], @a_sComment FROM t_VOScriptInstanceString vosis WHERE [ID] = @a_iVOScriptInstanceStringID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranDoNotReRecord SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_DoNotReRecordVOScriptString] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetAllStringsRequiringRecording ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: June 15, 2007 -- Description: Returns all strings requiring VO Recording -- per Character/Resource. -- -- Used by Web Report. -- -- Parameters -- a_iStringLanguageID - IN -- The Language that the script data should be retrieved for. -- a_bIncludeBlankLines - IN -- - set to 1 (true) to include blank lines in the count -- - set to 0 (false) to exclude blank lines in the count -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetAllStringsRequiringRecording] @a_iStringLanguageID int, @a_bIncludeBlankLines bit AS SET NOCOUNT ON DECLARE @iError int ------------------------------------------------------------------------ -- Map the resource lines to Characters ------------------------------------------------------------------------ -- Then do the mapping EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] NULL, NULL IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Look up the Requires Recording datetimestamp for each of these -- character strings. For english this is VORequestOn, and for -- foreign, this is ImportedOn. Store this data locally for now. ------------------------------------------------------------------------ DECLARE @tblStringVORequest TABLE ( [StringID] int, [StringVariantID] int, [VORequestOn] datetime NOT NULL, [VORecordedOn] datetime NULL, [Text] nText) IF (@a_iStringLanguageID = dbo.udf_GetProjectStringLanguageID()) BEGIN -- Load English strings + VORequestOn dates INSERT INTO @tblStringVORequest ([StringID], [StringVariantID], [VORequestOn], [Text]) SELECT st.[StringID], 1, st.[VORequestOn], st.[Text] FROM t_StringText st JOIN t_VOScriptLineCharacterInternal voslci ON [SPID] = @@SPID AND st.[StringID] = voslci.[StringID] AND st.[ModuleResRefVersionID] = voslci.[ResourceModuleResRefVersionID] AND st.[StringLanguageVariantID] = 1 AND (@a_bIncludeBlankLines = 1 OR st.[WordCount] > 0) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR UPDATE voRequest SET voRequest.[VORecordedOn] = vosis.[CompareDate] FROM @tblStringVORequest voRequest JOIN t_VOScriptInstanceString vosis ON voRequest.[StringID] = vosis.[StringID] AND vosis.[Active] = 'A' AND vosis.[Status] = 'P' AND vosis.[IsForeign] = 0 SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ELSE BEGIN -- Load Foreign strings (all variants) + ImportedOn dates INSERT INTO @tblStringVORequest ([StringID], [StringVariantID], [VORequestOn], [Text]) SELECT slvt.[StringID], slv.[StringVariantID], sis.[ImportedOn], slvt.[Text] FROM t_StringLanguageVariantText slvt JOIN t_StringImportSession sis ON slvt.[StringImportSessionID] = sis.[ID] AND (@a_bIncludeBlankLines = 1 OR slvt.[IsBlank] = 0) JOIN t_StringLanguageVariant slv ON slvt.[StringLanguageVariantVersionID] = slv.[CurrentStringLanguageVariantVersionID] AND slv.[StringLanguageID] = @a_iStringLanguageID JOIN t_VOScriptLineCharacterInternal voslci ON [SPID] = @@SPID AND slvt.[StringID] = voslci.[StringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR UPDATE voRequest SET voRequest.[VORecordedOn] = vosis.[CompareDate] FROM @tblStringVORequest voRequest JOIN t_VOScriptInstanceString vosis ON voRequest.[StringID] = vosis.[StringID] AND vosis.[Active] = 'A' AND vosis.[Status] = 'P' JOIN t_StringLanguageVariantVersion slvv ON vosis.[StringLanguageVariantVersionID] = slvv.[ID] JOIN t_StringLanguageVariant slv ON slvv.[StringLanguageVariantID] = slv.[ID] AND slv.[StringLanguageID] = @a_iStringLanguageID AND slv.[StringVariantID] = voRequest.[StringVariantID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Make the Requires Recording Comparison ------------------------------------------------------------------------ SELECT voChar.[Name] as [CharacterName], mrvRes.[Name] as [ResourceResRef], voslci.[ResourceModuleResRefVersionID], voRequest.[StringID], sv.[Name] as [Variant], voRequest.[Text] FROM @tblStringVORequest voRequest JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND voRequest.[StringID] = voslci.[StringID] JOIN t_ModuleResRef mrChar ON voslci.[CharacterModuleID] = mrChar.[ModuleID] AND voslci.[CharacterResRefID] = mrChar.[ResRefID] JOIN t_Character voChar ON mrChar.[CurrentModuleResRefVersionID] = voChar.[ModuleResRefVersionID] JOIN t_ModuleResRefVersion mrvRes ON voslci.[ResourceModuleResRefVersionID] = mrvRes.[ID] JOIN t_StringVariant sv ON voRequest.[StringVariantID] = sv.[ID] WHERE ( voRequest.[VORecordedOn] IS NULL OR voRequest.[VORequestOn] > voRequest.[VORecordedOn] ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Remove the temp data DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetAllStringsRequiringRecording] TO [bw_db_read] GO GRANT EXECUTE ON [dbo].[bsp_GetAllStringsRequiringRecording] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetAreaList] @a_iModuleID INT, @a_bUseModuleTree BIT AS DECLARE @iReturn INT SELECT c.ModuleResRefVersionID, mrrv1.Name as Name, c.Comments, c.AreaListResRefID, CASE isnull(mrrv2.ID, -1) WHEN -1 THEN 0 ELSE 1 END as CheckedOut FROM dbo.udf_GetModuleHierarchy(@a_iModuleID, @a_bUseModuleTree) mt JOIN t_ModuleResRef mrr ON mt.ModuleID = mrr.ModuleID JOIN t_ModuleResRefVersion mrrv1 ON mrr.CurrentModuleResRefVersionID = mrrv1.ID LEFT JOIN t_ModuleResRefVersion mrrv2 ON mrr.ScratchModuleResRefVersionID = mrrv2.ID JOIN t_Area c ON mrrv1.ID = c.ModuleResRefVersionID SELECT @iReturn = @@ERROR IF (@iReturn != 0) GOTO ON_ERROR --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- RETURN @iReturn GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetAreaList] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetAreaListList] @a_iModuleID INT, @a_bUseModuleTree BIT AS DECLARE @iReturn INT SELECT mrr.ResRefID, mrrv1.Name, r.Description FROM dbo.udf_GetModuleHierarchy(@a_iModuleID, @a_bUseModuleTree) mt JOIN t_ModuleResRef mrr ON mt.ModuleID = mrr.ModuleID JOIN t_ModuleResRefVersion mrrv1 ON mrr.CurrentModuleResRefVersionID = mrrv1.ID JOIN t_AreaList r ON mrrv1.ID = r.ModuleResRefVersionID SELECT @iReturn = @@ERROR IF (@iReturn != 0) GOTO ON_ERROR --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- RETURN @iReturn GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetAreaListList] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetCharacterLineCountsPerResource ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: June 19, 2007 -- Description: Returns a count of each Character's -- Lines per VO Script. -- -- This procedure was developed for use with a VO Related Web Report. -- -- Parameters -- a_bIncludeBlankLines - set as follows: -- o 1: includes blank lines -- o 0: excludes them -- -- Result Set: -- CharacterName - Name field from the Character Table -- CharacterResRef - Character ResRef name -- Resource - ResRef of Resource (typically a dlg resource) -- ResourceFolder - Folder of Resource -- Line Count - Total line count for this character -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetCharacterLineCountsPerResource] @a_bIncludeBlankLines bit AS SET NOCOUNT ON DECLARE @iError int ------------------------------------------------------------------------ -- Load the Resources/Strings/Characters for our data of interest ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] NULL, NULL IF (@iError <> 0) GOTO ON_ERROR SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Return results ------------------------------------------------------------------------ SELECT c.[Name] as [CharacterName], mrvChar.[Name] as [CharacterResRef], mrvRes.[Name] as [Resource], mrvRes.[Folder] as [ResourceFolder], COUNT(*) as [LineCount] FROM t_VOScriptLineCharacterInternal voslci JOIN t_ModuleResRef mrChar ON voslci.CharacterModuleID = mrChar.ModuleID AND voslci.CharacterResRefID = mrChar.ResRefID JOIN t_ModuleResRefVersion mrvChar ON mrChar.[CurrentModuleResRefVersionID] = mrvChar.[ID] JOIN t_ModuleResRefVersion mrvRes ON voslci.[ResourceModuleResRefVersionID] = mrvRes.[ID] JOIN t_Character c ON c.[ModuleResRefVersionID] = mrvChar.[ID] JOIN t_StringText st ON voslci.[StringID] = st.[StringID] AND voslci.[ResourceModuleResRefVersionID] = st.[ModuleResRefVersionID] AND ( (@a_bIncludeBlankLines = 1) OR (st.[WordCount] > 0) ) WHERE voslci.SPID = @@SPID GROUP BY mrvChar.[Name], c.[Name], mrvRes.[Name], mrvRes.[Folder] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Remove our temp data ------------------------------------------------------------------------ DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetCharacterLineCountsPerResource] TO [bw_db_read] GO GRANT EXECUTE ON [dbo].[bsp_GetCharacterLineCountsPerResource] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetCharacterList] @a_iModuleID INT, @a_bUseModuleTree BIT AS DECLARE @iReturn INT SELECT c.ModuleResRefVersionID, CASE c.Name WHEN '' THEN mrrv1.Name ELSE c.Name END as Name, c.Description, c.RoleResRefID, CASE isnull(mrrv2.ID, -1) WHEN -1 THEN 0 ELSE 1 END as CheckedOut FROM dbo.udf_GetModuleHierarchy(@a_iModuleID, @a_bUseModuleTree) mt JOIN t_ModuleResRef mrr ON mt.ModuleID = mrr.ModuleID JOIN t_ModuleResRefVersion mrrv1 ON mrr.CurrentModuleResRefVersionID = mrrv1.ID LEFT JOIN t_ModuleResRefVersion mrrv2 ON mrr.ScratchModuleResRefVersionID = mrrv2.ID JOIN t_Character c ON mrrv1.ID = c.ModuleResRefVersionID SELECT @iReturn = @@ERROR IF (@iReturn != 0) GOTO ON_ERROR --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- RETURN @iReturn GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetCharacterList] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetCharacterWordAndLineCounts ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: June 14, 2007 -- Description: Returns a count of each Character's -- Words and Lines across the VO Scripts. -- -- This procedure was developed for use with a VO Related Web Report. -- -- Parameters -- - None -- -- Result Set: -- For each Character, a Word and Line count of every conversation -- it is known to have VO Participation in. -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetCharacterWordAndLineCounts] AS SET NOCOUNT ON DECLARE @iError int ------------------------------------------------------------------------ -- Load the Resources/Strings/Characters for our data of interest ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] NULL, NULL IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Prep the data for stats aggregation ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_AdjustVOScriptLineCharacterInternalForStats] IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Return results ------------------------------------------------------------------------ SELECT mChar.[ID] as [CharacterModuleID], mChar.[Name] as [CharacterModule], [dbo].[udf_GetTopLevelFolder](mrvChar.[Folder]) as [CharacterTopFolder], mrvChar.[Folder] as [CharacterFolder], mrvChar.[Name] as [CharacterResRef], c.[Name] as [CharacterName], CASE c.[CharacterType] WHEN 0 THEN 'Major' WHEN 1 THEN 'Medium' WHEN 2 THEN 'Minor' ELSE 'UNKNOWN' END AS [CharacterType], mRes.[ID] as [ResourceModuleID], mRes.[Name] as [ResourceModule], [dbo].[udf_GetTopLevelFolder](mrvRes.[Folder]) as [ResourceTopFolder], mrvRes.[Folder] as [ResourceFolder], mrvRes.[Name] as [ResourceResRef], SUM(st.[WordCount]) as [WordCount], COUNT(*) as [LineCount] FROM t_VOScriptLineCharacterInternal voslci JOIN t_ModuleResRefVersion mrvChar ON voslci.CharacterModuleID = mrvChar.ModuleID AND voslci.CharacterResRefID = mrvChar.ResRefID AND mrvChar.[Status] = 'C' JOIN t_Character c ON c.[ModuleResRefVersionID] = mrvChar.[ID] JOIN t_ModuleResRefVersion mrvRes on mrvRes.[ID] = voslci.[ResourceModuleResRefVersionID] JOIN t_StringText st ON voslci.[StringID] = st.[StringID] AND voslci.[ResourceModuleResRefVersionID] = st.[ModuleResRefVersionID] JOIN t_Module mRes on mRes.[ID] = mrvRes.[ModuleID] JOIN t_Module mChar on mChar.[ID] = mrvChar.[ModuleID] WHERE voslci.SPID = @@SPID GROUP BY mChar.[ID], mChar.[Name], mrvChar.[Folder], mrvChar.[Name], c.[Name], c.[CharacterType], mRes.[ID], mRes.[Name], mrvRes.[Folder], mrvRes.[Name] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Remove our temp data ------------------------------------------------------------------------ DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetCharacterWordAndLineCounts] TO [bw_db_read] GO GRANT EXECUTE ON [dbo].[bsp_GetCharacterWordAndLineCounts] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_GetConversationTagToCharacterList ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: December 13, 2006 -- Returns: -- 0 = success -- non-zero = error code -- -- Parameters: -- @a_iDLGModuleResRefVersionID: set as follows: -- o NULL to list data from all current conversations -- o else use a ModResRefVersionID for a specific conversation. -- @a_bLoadSpeakerTags: set as follows: -- o 1 (true) loads Speaker Tags -- o 0 (false) does not load Speaker Tags -- @a_bLoadListenerTags: set as follows: -- o 1 (true) loads Listener Tags -- o 0 (false) does not load Listener Tags -- -- Description: Gets all Speaker or Listener Tags for Conversation(s) -- and looks up the corresponding Character for those tags. -- -- NOTE: if a Tag maps to more than one Character, its an error, but -- all of the Characters are listed from this stored procedure. -- -- NOTE: Lines that do not map to a character are not returned at all ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetConversationTagToCharacterList] @a_iDLGModuleResRefVersionID int, @a_bLoadSpeakerTags bit, @a_bLoadListenerTags bit AS SET NOCOUNT ON DECLARE @iError INT declare @tblLiveTags TABLE ( [ModuleResRefVersionID] int NOT NULL, [Listener] varchar(32) NOT NULL, [Speaker] varchar(32) NOT NULL ) ------------------------------------------------------------------------ -- Collect all LISTENER and SPEAKER TAGS from current conversations ------------------------------------------------------------------------ INSERT @tblLiveTags ([ModuleResRefVersionID], [Listener], [Speaker]) SELECT DISTINCT cl.[ModuleResRefVersionID], CASE cl.[Listener] WHEN '' THEN CASE cl.[IsPC] WHEN 0 THEN c.[DefaultNPCListener] ELSE c.[DefaultPCListener] END ELSE cl.[Listener] END AS [Listener], CASE cl.[Speaker] WHEN '' THEN c.[DefaultNPCSpeaker] ELSE cl.[Speaker] END AS [Speaker] FROM t_ConversationLine cl WITH ( NOLOCK ) join t_Conversation c WITH ( NOLOCK ) -- c is needed for the DEFAULT Speaker/Listener resolution on cl.[ModuleResRefVersionID] = c.[ModuleResRefVersionID] join t_ModuleResRefVersion mrv -- mrv is used for Status on mrv.[ID] = c.[ModuleResRefVersionID] and ( (@a_iDLGModuleResRefVersionID IS NULL AND mrv.[Status] = 'C') OR (@a_iDLGModuleResRefVersionID IS NOT NULL AND mrv.[ID] = @a_iDLGModuleResRefVersionID) ) SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Make a distinct list of tags, removing PLAYER and PREVSPEAKER tags ------------------------------------------------------------------------ DECLARE @tTags TABLE ( [DlgModuleResRefVersionID] int NOT NULL, [Tag] varchar(32) NOT NULL ) INSERT @tTags SELECT * FROM (SELECT ModuleResRefVersionID, Listener as [Tag] from @tblLiveTags where @a_bLoadListenerTags = 1 UNION SELECT ModuleResRefVersionID, Speaker as [Tag] from @tblLiveTags where @a_bLoadSpeakerTags = 1 ) x WHERE x.[Tag] != 'PLAYER' AND x.[Tag] != 'PREVSPEAKER' AND x.[Tag] != '' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Make a collection of what Characters belong to what -- Creatures and Placeables. We make this here for the following -- reasons: -- * This is used more than once in following queries -- * The older version of this BSP did not use the Module Tree, and -- it is now necessary to use the module tree (example: CRE in -- Single Player references CHR in Core Module). -- NOTES: -- - This only shows the CRE/PLA that have character associations -- (this is what we are presently interested in) -- - This will break if the project allows the same ResRefID to -- exist in several Modules. Currently this does not happen with -- Characters. ------------------------------------------------------------------------ DECLARE @tObjectToCharacter TABLE ( [ObjectModuleResRefVersionID] int NOT NULL, [ConversationResRefID] int NULL, [Tag] varchar(32) NOT NULL, [CharacterModuleID] int NOT NULL, [CharacterResRefID] int NOT NULL ) INSERT @tObjectToCharacter SELECT currentObject.[ModuleResRefVersionID], currentObject.[ConversationResRefID], currentObject.[Tag], mt.[AssociatedModuleID] as [CharacterModuleID], currentObject.[CharacterResRefID] FROM ( SELECT [ModuleResRefVersionID], mrv.[ModuleID], [ConversationResRefID], [CharacterResRefID], c.[Tag] FROM t_Creature c WITH ( NOLOCK ) JOIN t_ModuleResRefVersion mrv ON mrv.[ID] = c.[ModuleResRefVersionID] AND mrv.[Status] = 'C' UNION ALL SELECT [ModuleResRefVersionID], mrv.[ModuleID], [ConversationResRefID], [CharacterResRefID], p.[Tag] FROM t_Placeable p WITH ( NOLOCK ) JOIN t_ModuleResRefVersion mrv ON mrv.[ID] = p.[ModuleResRefVersionID] AND mrv.[Status] = 'C' ) currentObject JOIN v_ModuleTree mt ON currentObject.[ModuleID] = mt.[ModuleID] JOIN t_ModuleResRefVersion mrvChar ON mrvChar.[ModuleID] = mt.AssociatedModuleID AND mrvChar.[ResRefID] = currentObject.[CharacterResRefID] AND mrvChar.Status = 'C' OPTION ( FORCE ORDER ) -- April 20, 2009: Chris Christou -- This OPTION FORCE ORDER is important for that query's performance. The difference goes from 23 seconds to 2.5 seconds. -- In the worse execution, the MRVs being looked up for Characters are being calculated first, which returns too much volume to filter against. SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Start joining Conversation Tags to Characters ------------------------------------------------------------------------ DECLARE @tTagCharacter TABLE ( [ModuleResRefVersionID] int NOT NULL, [Tag] varchar(32) NOT NULL, [CharacterModuleID] int NOT NULL, [CharacterResRefID] int NOT NULL ) ------------------------------------------------------------------------ -- Join Non-OWNER Tags to Creatures and Placeables -- to derive the Character resource -- -- NOTE: This does not take into consideration a scenario -- where conversations are in one module and the CRE/PLA tags -- are in another module which may not be in the module tree -- of the conversation. ------------------------------------------------------------------------ INSERT @tTagCharacter ([ModuleResRefVersionID], [Tag], [CharacterModuleID], [CharacterResRefID]) SELECT tags.[DlgModuleResRefVersionID], tags.[Tag], otc.[CharacterModuleID], otc.[CharacterResRefID] FROM @tTags tags JOIN @tObjectToCharacter otc ON tags.[Tag] = otc.[Tag] -- NOTE: CASE INSENSITIVE CURRENTLY! AND tags.[Tag] != 'OWNER' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- JOIN OWNER TAGS to Creatures and Placeables based on -- CONVERSATION field, to get the Character resource ------------------------------------------------------------------------ INSERT @tTagCharacter ([ModuleResRefVersionID], [Tag], [CharacterModuleID], [CharacterResRefID]) SELECT tags.[DlgModuleResRefVersionID], tags.Tag, otc.CharacterModuleID, otc.CharacterResRefID FROM @tObjectToCharacter otc JOIN t_ModuleResRefVersion mrvObject ON mrvObject.[ID] = otc.[ObjectModuleResRefVersionID] JOIN v_ModuleTree mt ON mt.[ModuleID] = mrvObject.[ModuleID] JOIN t_ModuleResRefVersion mrvDlg ON mrvDlg.[ModuleID] = mt.[AssociatedModuleID] AND mrvDlg.[ResRefID] = otc.[ConversationResRefID] JOIN @tTags tags ON tags.[DlgModuleResRefVersionID] = mrvDlg.[ID] AND tags.[Tag] = 'OWNER' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- SOUND SETS: -- Look up Conversation tags to Characters for Sound Sets. -- NOTE: This wouldn't be in here normally, but since sound sets -- are using the conversation system, this is as good a place as -- any, and integrates into the system well. -- -- Only use Characters that are not referencing a soundset that is -- owned by another Character (when SharedLink is set to 0) ------------------------------------------------------------------------ INSERT @tTagCharacter ([ModuleResRefVersionID], [Tag], [CharacterModuleID], [CharacterResRefID]) SELECT DISTINCT mrvConv.[ID] as [ConversationMRRVID], CASE cLine.[Speaker] WHEN '' THEN conv.[DefaultNPCSpeaker] ELSE cLine.[Speaker] END AS [Speaker], mrvChar.[ModuleID] as [CharacterModuleID], mrvChar.[ResRefID] as [CharacterResRefID] FROM t_Character ch JOIN t_ModuleResRefVersion mrvChar ON ch.[ModuleResRefVersionID] = mrvChar.[ID] AND mrvChar.[Status] = 'C' -- Only current Characters JOIN v_ModuleTree vmt ON mrvChar.[ModuleID] = vmt.[ModuleID] JOIN t_ModuleResRefVersion mrvConv ON mrvConv.[ModuleID] = vmt.[AssociatedModuleID] AND mrvConv.[ResRefID] = ch.[SoundSetResRefID] AND ( ( (@a_iDLGModuleResRefVersionID IS NULL) AND (mrvConv.[Status] = 'C') ) OR ( mrvConv.[ID] = @a_iDLGModuleResRefVersionID ) ) JOIN t_Conversation conv ON mrvConv.[ID] = conv.[ModuleResRefVersionID] JOIN t_ConversationLine cLine ON mrvConv.[ID] = cLine.[ModuleResRefVersionID] WHERE ch.[SoundsetResRefIDIsSharedLink] = 0 option (force order) SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Return Result Set ------------------------------------------------------------------------ SELECT DISTINCT mrvResource.[ModuleID], mrvResource.[ResRefID], dtc.[ModuleResRefVersionID], dtc.[Tag], dtc.[CharacterModuleID], dtc.[CharacterResRefID] FROM @tTagCharacter dtc JOIN t_ModuleResRefVersion mrvResource ON dtc.[ModuleResRefVersionID] = mrvResource.[ID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetConversationTagToCharacterList] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetForeignText ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: March 21, 2007 -- Description: Load Foreign Text (with its accompanying information) -- All Variants of a language are loaded. -- -- Parameters -- a_iStringTableID - StringTableID to load data for -- o NULL loads from all tables -- o StringTableID loads text from a particular table -- a_iOwnerModuleID - OwnerModuleID to load data for, used with StringTableID -- o NULL loads all strings from the table -- o OwnerModuleID loads text for a particular owner module from a string table -- a_iStringLanguageID - StringLanguageID of Text to Load. Set as follows: -- o NULL to load all languages -- o StringLanguageID to load one language only -- a_iStringTypeID - StringTypeID of text to load. Set as follows: -- o NULL to load for all StringTypes -- o StringTypeID to load text from one Stringtype -- a_iModuleResRefVersionID - ModuleResRefVersionID of resource to load data for -- o NULL loads from current version of all resources -- o ModuleResRefVersionID loads text from a particular -- version of one resource. -- a_dtImportedBefore: -- o NULL or 0 - strings returned are the current (live) snapshot -- o Any date - strings returned are the most recent -- versions Imported before this time -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetForeignText] @a_iStringTableID int, @a_iOwnerModuleID int, @a_iStringLanguageID int, @a_iStringTypeID int, @a_iModuleResRefVersionID int, @a_dtImportedBefore datetime AS SET NOCOUNT ON DECLARE @iError int ------------------------------------------------------------------------ -- We documented that @a_dtImportedBefore could be 0 but this isn't -- supported unless we set it to NULL ------------------------------------------------------------------------ IF (@a_dtImportedBefore = 0) BEGIN SET @a_dtImportedBefore = NULL END ------------------------------------------------------------------------ -- Determine the StringLanguageVariantVersions that contain -- the text we wish to return. -- (Also serves as the Language Filter) ------------------------------------------------------------------------ DECLARE @tVariantVersionsToUse TABLE ( [StringLanguageVariantID] int, [StringLanguageVariantVersionID] int ) INSERT INTO @tVariantVersionsToUse SELECT slv.[ID] as [StringLanguageVariantID], MAX(slvv.[ID]) AS [StringLanguageVariantVersionID] FROM t_StringLanguageVariant slv with ( nolock ) JOIN t_StringLanguageVariantVersion slvv with ( nolock ) ON slv.[ID] = slvv.[StringLanguageVariantID] AND (slvv.[Status] = 'C' OR slvv.[Status] = 'H') JOIN t_StringImportSession sis with ( nolock ) ON slvv.[StringImportSessionID] = sis.[ID] AND (@a_dtImportedBefore IS NULL OR sis.[ImportedOn] < @a_dtImportedBefore) WHERE (@a_iStringLanguageID IS NULL OR @a_iStringLanguageID = slv.[StringLanguageID]) GROUP BY slv.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Create the ModuleResRefVersionID Filter -- Determine which ModuleResRefVersionIDs we will use ------------------------------------------------------------------------ DECLARE @tResourceVersionIDsToUse TABLE ( [ModuleResRefVersionID] int ) IF (@a_iModuleResRefVersionID IS NULL) BEGIN INSERT @tResourceVersionIDsToUse SELECT [ID] FROM t_ModuleResRefVersion WHERE [Status] = 'C' END ELSE BEGIN INSERT @tResourceVersionIDsToUse VALUES (@a_iModuleResRefVersionID) END SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Create the StringID Filter -- Determine which StringIDs we will use based on the -- StringType and String Table parameters. -- -- NOTE: We break this stuff up very explicitly in order to -- avoid hitting tables that are not indexed very well for this -- type of data. ------------------------------------------------------------------------ -- Use a temp table -- we could have in the hundreds of thousands of values in there CREATE TABLE #tStringIDFilter ( [StringID] int ) IF (@a_iStringTypeID IS NULL) AND (@a_iStringTableID IS NULL) BEGIN -- There is no filter by StringType or StringTable -- Use StringText to look up StringIDs by Module INSERT #tStringIDFilter SELECT st.[StringID] FROM t_StringText st with ( nolock ) JOIN @tResourceVersionIDsToUse mrv ON st.[ModuleResRefVersionID] = mrv.[ModuleResRefVersionID] END ELSE IF (@a_iStringTableID IS NULL) BEGIN -- Filter by StringType only INSERT #tStringIDFilter SELECT sv.[StringID] FROM t_StringVersion sv with ( nolock ) JOIN @tResourceVersionIDsToUse mrv ON sv.[ModuleResRefVersionID] = mrv.[ModuleResRefVersionID] AND sv.StringTypeID = @a_iStringTypeID END ELSE BEGIN -- Filter by StringType (optional) and StringTable (always present here) INSERT #tStringIDFilter SELECT sv.[StringID] FROM t_StringVersion sv with ( nolock ) JOIN @tResourceVersionIDsToUse mrv ON sv.[ModuleResRefVersionID] = mrv.[ModuleResRefVersionID] AND sv.StringTypeID = ISNULL(@a_iStringTypeID, sv.StringTypeID) JOIN t_String s with ( nolock ) ON sv.[StringID] = s.[ID] AND s.[StringTableID] = @a_iStringTableID JOIN t_ModuleResRefVersion mrrv with ( nolock ) ON mrv.[ModuleResRefVersionID] = mrrv.[ID] AND (@a_iOwnerModuleID IS NULL OR mrrv.[OwnerModuleID] = @a_iOwnerModuleID) END SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Look up the particular Versioned Text, and return the data ------------------------------------------------------------------------ SELECT slvvt.[StringID], slv.[StringLanguageID], slv.[StringVariantID], slv.[ID] as [StringLanguageVariantID], slvvt.[Text] FROM #tStringIDFilter s JOIN t_StringLanguageVariantText slvvt with ( nolock ) ON s.[StringID] = slvvt.[StringID] JOIN @tVariantVersionsToUse slvvToUse ON slvvt.[StringLanguageVariantVersionID] = slvvToUse.[StringLanguageVariantVersionID] JOIN t_StringLanguageVariant slv with ( nolock ) ON slvvToUse.[StringLanguageVariantID] = slv.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR DROP TABLE #tStringIDFilter SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetForeignText] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_GetInvalidConversationTagCharacters ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: April 23, 2007 -- Returns: -- 0 = success -- non-zero = error code -- -- Parameters: -- none -- -- Description: Gets all Speaker and Listener Tags for Conversation(s) -- and reports the following validation errors: -- - Tags mapping to more than one Character -- - Tags that do not map to any Characters -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetInvalidConversationTagCharacters] AS SET NOCOUNT ON DECLARE @iError INT -- @tblDlgSpkrListener = The Resolved Speaker and Listener of Conversation Lines, by resource DECLARE @tblDlgSpkrListener TABLE ( [ModuleID] int, [ResRefID] int, [Speaker] varchar(32), [Listener] varchar(32) ) -- @ictcDlgTags = Flat listing of all used Spkr/Listener tags in conversations, by resource DECLARE @ictcDlgTags TABLE ( [ModuleID] int NOT NULL, [ResRefID] int NOT NULL, [Tag] varchar(32) NOT NULL ) -- #ictcDlgTagCharacter = calculated conversation tags and the characters they map to CREATE TABLE #ictcDlgTagCharacter ( [ModuleID] int NOT NULL, [ResRefID] int NOT NULL, [ModuleResRefVersionID] int NOT NULL, [Tag] varchar(32) NOT NULL, [CharacterModuleID] int NOT NULL, [CharacterResRefID] int NOT NULL ) -- #ictcResults = Result set to return CREATE TABLE #ictcResults ( [ModuleID] int, [ResRefID] int, [Tag] varchar(32), [Error] varchar(256) ) ------------------------------------------------------------------------ -- First we get the directory of tags that are mapped to characters ------------------------------------------------------------------------ insert #ictcDlgTagCharacter exec @iError = [dbo].[bsp_GetConversationTagToCharacterList] null, 1, 1 if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- List all the current speaker and listener tags on all -- live conversation strings. ------------------------------------------------------------------------ INSERT @tblDlgSpkrListener select DISTINCT mrv.[ModuleID], mrv.[ResRefID], CASE cl.[Speaker] WHEN '' THEN c.[DefaultNPCSpeaker] ELSE cl.[Speaker] END AS [Speaker], CASE WHEN cl.[Listener] != '' THEN cl.[Listener] WHEN cl.[IsPC] = 1 THEN c.[DefaultPCListener] ELSE c.[DefaultNPCListener] END AS [Listener] from t_ConversationLine cl join t_Conversation c -- c is needed for the DEFAULT Listener resolution on cl.[ModuleResRefVersionID] = c.[ModuleResRefVersionID] join t_ModuleResRefVersion mrv -- mrv is used to return ModuleID/ResRefID info on mrv.[ID] = c.[ModuleResRefVersionID] and mrv.[Status] = 'C' join t_StringText st -- thin out blank lines (continue/conditional/... lines) -- the Speaker and Listener are irrelevant on these lines on st.[StringID] = cl.[TextStringID] and st.[ModuleResRefVersionID] = cl.[ModuleResRefVersionID] and st.[WordCount] > 0 SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Collect our Tags together, excluding -- PLAYER and PREVSPEAKER tags ------------------------------------------------------------------------ INSERT @ictcDlgTags ([ModuleID], [ResRefID], [Tag]) SELECT [ModuleID], [ResRefID], [Tag] FROM (SELECT [ModuleID], [ResRefID], [Speaker] as [Tag] FROM @tblDlgSpkrListener UNION SELECT [ModuleID], [ResRefID], [Listener] as [Tag] FROM @tblDlgSpkrListener) x WHERE x.[Tag] != 'PLAYER' AND x.[Tag] != 'PREVSPEAKER' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Build up the results to return ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- Validation: Find lines where tags map to Characters with blank names ------------------------------------------------------------------------ INSERT #ictcResults SELECT distinct chars.[ModuleID], chars.[ResRefID], chars.[Tag], 'Tag maps to Character with blank name' FROM #ictcDlgTagCharacter chars JOIN t_ModuleResRef mr ON chars.[ModuleID] = mr.[ModuleID] AND chars.[ResRefID] = mr.[ResRefID] JOIN t_Character c ON mr.[CurrentModuleResRefVersionID] = c.[ModuleResRefVersionID] AND c.[Name] like '' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Validation: Find lines where tags do not map to any characters ------------------------------------------------------------------------ INSERT #ictcResults SELECT distinct lines.[ModuleID], lines.[ResRefID], lines.[Tag], 'Tag does not map to any character' FROM @ictcDlgTags lines LEFT OUTER JOIN #ictcDlgTagCharacter chars ON lines.[ModuleID] = chars.[ModuleID] AND lines.[ResRefID] = chars.[ResRefID] AND lines.[Tag] = chars.[Tag] WHERE chars.[ModuleID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Validation: Find lines that map to more than one character ------------------------------------------------------------------------ DECLARE @tblMultipleCharacterTags TABLE ( [ModuleID] int, [ResRefID] int, [Tag] varchar(32) ) INSERT @tblMultipleCharacterTags SELECT dtc.[ModuleID], dtc.[ResRefID], dtc.[Tag] FROM #ictcDlgTagCharacter dtc JOIN @ictcDlgTags dt ON dtc.[ModuleID] = dt.[ModuleID] AND dtc.[ResRefID] = dt.[ResRefID] AND dtc.[Tag] = dt.[Tag] GROUP BY dtc.[ModuleID], dtc.[ResRefID], dtc.[Tag] having count(*) > 1 SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR INSERT #ictcResults SELECT tc.[ModuleID], tc.[ResRefID], tc.[Tag], 'Multiple Characters: ' + mrv.[Folder] + '\' + mrv.[Name] FROM #ictcDlgTagCharacter tc JOIN @tblMultipleCharacterTags mct ON tc.[ModuleID] = mct.[ModuleID] AND tc.[ResRefID] = mct.[ResRefID] AND tc.[Tag] = mct.[Tag] JOIN t_ModuleResRefVersion mrv ON mrv.[ModuleID] = tc.[CharacterModuleID] AND mrv.[ResRefID] = tc.[CharacterResRefID] AND mrv.[Status] = 'C' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Validation: Find lines where a Listener tag of PREVSPEAKER -- refers to the root node (who is the previous speaker in this -- case???) ------------------------------------------------------------------------ INSERT #ictcResults SELECT DISTINCT mrv.[ModuleID], mrv.[ResRefID], 'PREVSPEAKER' as [Tag], 'One or more PREVSPEAKER Listener tags reference the root node' as [Error] FROM t_ModuleResRefVersion mrv JOIN t_ConversationTransition ct on ct.[ModuleResRefVersionID] = mrv.[ID] and mrv.[Status] = 'C' and ct.[FromIndex] = -1 JOIN t_ConversationLine cl ON cl.[ModuleResRefVersionID] = mrv.[ID] AND cl.[Index] = ct.[ToIndex] JOIN t_Conversation c ON c.[ModuleResRefVersionID] = mrv.[ID] WHERE CASE WHEN cl.[Listener] != '' THEN cl.[Listener] ELSE c.[DefaultNPCListener] END = 'PREVSPEAKER' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Return Results ------------------------------------------------------------------------ SELECT m.[Name] as [Module], mrv.[Name] as [Conversation], iResults.[ModuleID], iResults.[ResRefID], [Tag], [Error] FROM #ictcResults iResults JOIN t_Module m ON iResults.[ModuleID] = m.[ID] JOIN t_ModuleResRefVersion mrv ON iResults.[ModuleID] = mrv.[ModuleID] AND iResults.[ResRefID] = mrv.[ResRefID] AND mrv.[Status] = 'C' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR drop table #ictcDlgTagCharacter drop table #ictcResults SET NOCOUNT OFF return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetInvalidConversationTagCharacters] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_GetLocalizationStatistics ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: November 27, 2006 -- Description: Loads Localization Statistics -- Resource/StringType Word & Line Counts -- Text Requiring Translation Word & Line Counts -- Text Requiring Re-Translation Word & Line Counts -- Parameters: -- @a_bCountMajorChanges - set to true if you want to get stats -- for Major Text Changes (strings that are being re-translated) -- @a_bCountMinorChanges - set to true if you want to get stats -- for Minor Text Changes (strings that are being re-translated) -- @a_bGetResourceCounts: -- o 1 - include stats by resource in the result set -- o 0 - exclude stats by resource in the result set -- @a_bGetStringTypeCounts: -- o 1 - include stats by string type in the result set -- o 0 - exclude stats by string type in the result set -- -- Returns: -- 0 on success, non-zero on error (error-code @@ERROR is returned) ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetLocalizationStatistics] @a_bCountMajorChanges bit, @a_bCountMinorChanges bit, @a_bGetResourceCounts bit, @a_bGetStringTypeCounts bit AS SET NOCOUNT ON DECLARE @iError int ------------------------------------------------------------------------ -- Make a listing of all text, and their translation status. -- The translation status works as follows: -- o 0 = string does not need translation -- o 1 = string needs translation, never before translated -- o 2 = string needs translation, has been translated before ------------------------------------------------------------------------ declare @results TABLE ( [ModuleID] int, [OwnerModuleID] int, [ResRefID] int, [StringID] int, [WordCount] int, [StringTypeID] int, [TransStatus] int, [MRVID] int, [LastMajorUpdateOn] datetime, [LastMinorUpdateOn] datetime ); insert into @results ( [ModuleID], [OwnerModuleID], [ResRefID], [StringID], [WordCount], [StringTypeID], [TransStatus], [MRVID], [LastMajorUpdateOn], [LastMinorUpdateOn] ) select mrv.[ModuleID], mrv.[OwnerModuleID], mrv.[ResRefID], st.[StringID], st.[WordCount], sv.[StringTypeID], 1, -- defaults to 1==new if next update doesn't change the line. mrv.[ID], st.[LastMajorUpdateOn], st.[LastMinorUpdateOn] FROM t_ModuleResRefVersion mrv JOIN t_StringText st ON st.[ModuleResRefVersionID] = mrv.[ID] JOIN t_StringVersion sv ON sv.[ModuleResRefVersionID] = mrv.[ID] AND st.[StringID] = sv.[StringID] where mrv.[Status] = 'C' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR update @results set [TransStatus] = CASE WHEN (@a_bCountMajorChanges = 1) AND (r.[LastMajorUpdateOn] > seh.[CompareDate]) THEN 2 -- 2 = updated translation WHEN (@a_bCountMinorChanges = 1) AND (r.[LastMinorUpdateOn] > seh.[CompareDate]) THEN 2 -- 2 = updated translation ELSE 0 -- 0 = no translation END from @results r JOIN t_StringExportHistory seh ON seh.[Status] = 'A' -- Only use strings exported before (Active Entries) AND seh.[StringID] = r.[StringID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Tally up the Localization statistics. -- Two result sets are combined: -- Loc Stats by Resource, and Loc Stats by String Type -- The result sets are returned based on the parameters. -- The statistics are grouped by Module, to allow the caller -- to filter out data from unneeded Modules. ------------------------------------------------------------------------ SELECT sts.[ModuleID], sts.[OwnerModuleID], sts.[ResRefID], r.[ResType], NULL as [StringTypeID], 1 as [IsResource], SUM(CASE [TransStatus] WHEN 1 THEN [WordCount] ELSE 0 END) as [NewWordsReq], SUM(CASE [TransStatus] WHEN 2 THEN [WordCount] ELSE 0 END) as [UpdWordsReq], SUM(WordCount) as [Words], COUNT(CASE [TransStatus] WHEN 1 THEN 1 ELSE NULL END) as [NewLinesReq], COUNT(CASE [TransStatus] WHEN 2 THEN 1 ELSE NULL END) as [UpdLinesReq], COUNT(*) as [Lines], COUNT(CASE WHEN [TransStatus] = 1 AND [WordCount] > 0 THEN 1 ELSE NULL END) as [NewNonBlankLinesReq], COUNT(CASE WHEN [TransStatus] = 2 AND [WordCount] > 0 THEN 1 ELSE NULL END) as [UpdNonBlankLinesReq], COUNT(CASE WHEN [WordCount] > 0 THEN 1 ELSE NULL END) as [NonBlankLines] FROM @results sts JOIN t_ResRef r ON sts.[ResRefID] = r.[ID] AND (r.[ResType] = 'dlg' OR r.[ResType] = 'plo') WHERE @a_bGetResourceCounts = 1 GROUP BY [ModuleID], sts.[OwnerModuleID], [ResRefID], r.[ResType] UNION ALL SELECT sts.[ModuleID], sts.[OwnerModuleID], NULL AS [ResRefID], NULL AS [ResType], sts.[StringTypeID], 0 AS [IsResource], SUM(CASE [TransStatus] WHEN 1 THEN [WordCount] ELSE 0 END) as [NewWordsReq], SUM(CASE [TransStatus] WHEN 2 THEN [WordCount] ELSE 0 END) as [UpdWordsReq], SUM(WordCount) as [Words], COUNT(CASE [TransStatus] WHEN 1 THEN 1 ELSE NULL END) as [NewLinesReq], COUNT(CASE [TransStatus] WHEN 2 THEN 1 ELSE NULL END) as [UpdLinesReq], COUNT(*) as [Lines], COUNT(CASE WHEN [TransStatus] = 1 AND [WordCount] > 0 THEN 1 ELSE NULL END) as [NewNonBlankLinesReq], COUNT(CASE WHEN [TransStatus] = 2 AND [WordCount] > 0 THEN 1 ELSE NULL END) as [UpdNonBlankLinesReq], COUNT(CASE WHEN [WordCount] > 0 THEN 1 ELSE NULL END) as [NonBlankLines] FROM @results sts WHERE @a_bGetStringTypeCounts = 1 GROUP BY [ModuleID], sts.[OwnerModuleID], sts.[StringTypeID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetLocalizationStatistics] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetMostRecentLocalizationDatesForVOScript ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: August 29, 2007 -- Description: For all the strings that currently belong to a -- VO Script, the most recent export and import date of these -- strings is shown for a given language per VO Script. -- -- These used to be two separate queries, but since we have to -- look up the VOScriptLineCharacters, we might as well do them -- both at the same time to save time. -- -- Export data is language independent, Import data is not. -- -- Parameters -- a_iVOScriptID - VOScript ID to look up data on, set as follows: -- o NULL: Gets data for All VO Scripts -- o VOScriptID: Gets data for one VO Script -- a_iStringLanguageID - Language to look up Import data on -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetMostRecentLocalizationDatesForVOScript] @a_iVOScriptID int, @a_iStringLanguageID int AS SET NOCOUNT ON DECLARE @iError int ------------------------------------------------------------------------ -- Load the Resources/Strings/Characters for our data of interest ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] @a_iVOScriptID, NULL IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Return results ------------------------------------------------------------------------ SELECT vs.[ID] as [VOScriptID], voExport.[RecentlyExportedOn], voImport.[RecentlyImportedOn] FROM t_VOScript vs LEFT OUTER JOIN ( -- Calculate the most recent import date for a string belonging to -- each script SELECT vos.[ID] as [VOScriptID], MAX(sis.[ImportedOn]) as [RecentlyImportedOn] FROM t_VOScript vos JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND vos.[ResourceModuleID] = voslci.[ResourceModuleID] AND vos.[ResourceResRefID] = voslci.[ResourceResRefID] AND vos.[CharacterModuleID] = voslci.[CharacterModuleID] AND vos.[CharacterResRefID] = voslci.[CharacterResRefID] JOIN t_StringLanguageVariantText slvt ON voslci.[StringID] = slvt.[StringID] JOIN t_StringImportSession sis ON slvt.[StringImportSessionID] = sis.[ID] JOIN t_StringLanguageVariant slv ON slvt.[StringLanguageVariantVersionID] = slv.[CurrentStringLanguageVariantVersionID] AND slv.[StringLanguageID] = @a_iStringLanguageID WHERE ISNULL(@a_iVOScriptID, vos.[ID]) = vos.[ID] GROUP BY vos.[ID] ) voImport ON vs.[ID] = voImport.[VOScriptID] LEFT OUTER JOIN ( -- Calculate the most recent export date for a string belonging to -- each script SELECT vos.[ID] as [VOScriptID], MAX(sel.[CreatedOn]) as [RecentlyExportedOn] FROM t_VOScript vos JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND vos.[ResourceModuleID] = voslci.[ResourceModuleID] AND vos.[ResourceResRefID] = voslci.[ResourceResRefID] AND vos.[CharacterModuleID] = voslci.[CharacterModuleID] AND vos.[CharacterResRefID] = voslci.[CharacterResRefID] JOIN t_StringExportHistory seh ON voslci.[StringID] = seh.[StringID] AND seh.[Status] = 'A' JOIN t_StringExportLabel sel ON seh.[StringExportLabelID] = sel.[ID] WHERE ISNULL(@a_iVOScriptID, vos.[ID]) = vos.[ID] GROUP BY vos.[ID] ) voExport ON vs.[ID] = voExport.[VOScriptID] ------------------------------------------------------------------------ -- Remove our temp data ------------------------------------------------------------------------ DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetMostRecentLocalizationDatesForVOScript] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetResourceHistoryListByID] @a_iResRefID int AS declare @iResRefID int set @iResRefID = @a_iResRefID select mrrv.resrefid, null, mrrv.moduleid, mrrv.ownermoduleid, mrrv.id, mrrv.RevisionID, rr1.restype, mrrv.name, mrrv.folder, cast( dbo.udf_GetResourceName(mrrv.id) as varchar(64) ) , mrrv.username, mrrv.date, null, null, null, null, null, mrrv.state, mrrv.comment, case mrrv.status when 'H' then 1 else 0 end from t_moduleresrefversion mrrv join t_ResRef rr1 on mrrv.resrefid = rr1.id where mrrv.ResRefid = @iResRefID and (mrrv.status in ('H', 'C') or (mrrv.status = 'S' and mrrv.username = suser_sname()) ) order by mrrv.RevisionID IF (@@ERROR <> 0) GOTO ON_ERROR return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- return @@ERROR GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetResourceHistoryListByID] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetResourceInfoByID] @a_iModuleID int, @a_iResRefID int, @a_iVersionID int, @a_bUseModuleTree bit, @a_bReturnVersionInfo bit, @a_dtCheckedInBefore datetime, @a_bIncludeDeletedResources bit AS SET NOCOUNT ON DECLARE @iError INT declare @iModuleID int declare @iResRefID int declare @iVersionID int set @iModuleID = @a_iModuleID set @iResRefID = @a_iResRefID set @iVersionID = @a_iVersionID ------------------------------------------------------------------------ -- If the user is not passing in a time, they want the current data. -- Set it to a point far in the future. ------------------------------------------------------------------------ IF (ISNULL(@a_dtCheckedInBefore, 0) != 0) AND (@iVersionID = 0) BEGIN SET @iVersionID = -1 -- This ensures that if the date is too old, there is no version returned SELECT @iVersionID = omrrv.[ID] FROM t_ModuleResRefVersion omrrv WHERE omrrv.[ModuleID] = @iModuleID AND omrrv.[ResRefID] = @iResRefID AND ([Status] = 'C' OR [Status] = 'H') AND omrrv.[Date] = ( SELECT MAX([Date]) FROM t_ModuleResRefVersion WHERE [Date] < @a_dtCheckedInBefore AND [ModuleID] = omrrv.[ModuleID] AND [ResRefID] = omrrv.[ResRefID] AND ([Status] = 'C' OR [Status] = 'H') -- scratch records do not count here ) END ------------------------------------------------------------------------ -- If we are looking for the deleted resources, -- find the head version id of the resource in question ------------------------------------------------------------------------ IF ((@a_bIncludeDeletedResources = 1) AND (ISNULL (@a_dtCheckedInBefore, 0) = 0) AND (@a_iVersionID = 0)) BEGIN -- Get the module resref version id SELECT @iVersionID = MAX (omrrv.[ID]) FROM dbo.udf_GetModuleHierarchy(@iModuleID, @a_bUseModuleTree) mt JOIN t_ModuleResRefVersion omrrv ON mt.ModuleID = omrrv.[ModuleID] AND omrrv.[ResRefID] = @iResRefID AND ([Status] = 'C' OR [Status] = 'H') END if (@iVersionID != 0) select rr1.id, 1, mrr.moduleid, CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.ownermoduleid ELSE case mrrv2.username when suser_sname() then mrrv2.ownermoduleid else mrrv1.ownermoduleid end end, CASE @a_bReturnVersionInfo WHEN 1 THEN CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.[ID] ELSE CASE mrrv2.username WHEN suser_sname() then mrrv2.[ID] ELSE mrrv1.[ID] END END ELSE NULL END, -- Version (by @a_bReturnVersionInfo) CASE @a_bReturnVersionInfo WHEN 1 THEN CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.[RevisionID] ELSE CASE mrrv2.username WHEN suser_sname() then mrrv2.[RevisionID] ELSE mrrv1.[RevisionID] END END ELSE NULL END, -- RevisionID (by @a_bReturnVersionInfo) rr1.restype, CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.name ELSE case mrrv2.username when suser_sname() then mrrv2.name else mrrv1.name end end, CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.folder ELSE case mrrv2.username when suser_sname() then mrrv2.folder else mrrv1.folder end end, cast( CASE isnull(mrrv2.id,-1) when -1 THEN dbo.udf_GetResourceName(mrrv1.id) else case mrrv2.username when suser_sname() then dbo.udf_GetResourceName(mrrv2.id) else dbo.udf_GetResourceName(mrrv1.id) end END as varchar(64) ) , mrr.createdby, mrr.createdon, case isnull(mrrv2.id,-1) when -1 then 0 else 1 end, mrrv2.username, mrrv2.date, mrrv1.username, mrrv1.date, mrrv1.state, mrrv1.comment, case isnull(mrr.[CurrentModuleResRefVersionID], -1) when -1 then 1 else 0 end from t_moduleresrefversion mrrv1 join t_moduleresref mrr on mrrv1.moduleid = mrr.moduleid and mrrv1.resrefid = mrr.resrefid join t_resref rr1 on mrr.resrefid = rr1.id left outer join t_moduleresrefversion mrrv2 on mrr.scratchmoduleresrefversionid = mrrv2.id where mrrv1.id = @iVersionID order by rr1.id else select rr1.id, 1, mrr.moduleid, CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.ownermoduleid ELSE case mrrv2.username when suser_sname() then mrrv2.ownermoduleid else mrrv1.ownermoduleid end end, CASE @a_bReturnVersionInfo WHEN 0 THEN NULL ELSE CASE isnull(mrrv2.id,-1) when -1 then mrrv1.[ID] else case mrrv2.username WHEN suser_sname() then mrrv2.[ID] else mrrv1.[ID] end end END, CASE @a_bReturnVersionInfo WHEN 0 THEN NULL ELSE CASE isnull(mrrv2.id,-1) when -1 then mrrv1.[RevisionID] else case mrrv2.username WHEN suser_sname() then mrrv2.[RevisionID] else mrrv1.[RevisionID] end end END, rr1.restype, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.name else case mrrv2.username WHEN suser_sname() then mrrv2.name else mrrv1.name end end, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.folder else case mrrv2.username WHEN suser_sname() then mrrv2.folder else mrrv1.folder end end, cast( CASE isnull(mrrv2.id,-1) when -1 THEN dbo.udf_GetResourceName(mrrv1.id) else case mrrv2.username when suser_sname() then dbo.udf_GetResourceName(mrrv2.id) else dbo.udf_GetResourceName(mrrv1.id) end END as varchar(64) ) , mrr.createdby, mrr.createdon, case isnull(mrrv2.id,-1) when -1 then 0 else 1 end, mrrv2.username, mrrv2.date, mrrv1.username, mrrv1.date, mrrv1.state, mrrv1.comment, case isnull(mrr.[CurrentModuleResRefVersionID], -1) when -1 then 1 else 0 end from dbo.udf_GetModuleHierarchy(@iModuleID, @a_bUseModuleTree) mt join t_moduleresref mrr on mt.ModuleID = mrr.moduleid join t_resref rr1 on mrr.resrefid = rr1.id join t_moduleresrefversion mrrv1 on mrr.currentmoduleresrefversionid = mrrv1.id left outer join t_moduleresrefversion mrrv2 on mrr.scratchmoduleresrefversionid = mrrv2.id where mrr.resrefid = @iResRefID order by rr1.id SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetResourceInfoByID] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetResourceInfoByName] @a_iModuleID int, @a_sResRefName varchar(128), @a_sResType varchar(4), @a_bUseModuleTree bit AS declare @iModuleID int declare @sResRefName varchar(128) declare @sResType varchar(4) set @iModuleID = @a_iModuleID set @sResRefName = @a_sResRefName set @sResType = @a_sResType DECLARE @iError INT select rr1.id, 1, mrr.moduleid, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.ownermoduleid else case mrrv2.username when suser_sname() then mrrv2.ownermoduleid else mrrv1.ownermoduleid end end, null, null, rr1.restype, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.name else case mrrv2.username when suser_sname() then mrrv2.name else mrrv1.name end end, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.folder else case mrrv2.username when suser_sname() then mrrv2.folder else mrrv1.folder end end, cast( CASE isnull(mrrv2.id,-1) when -1 THEN dbo.udf_GetResourceName(mrrv1.id) else case mrrv2.username when suser_sname() then dbo.udf_GetResourceName(mrrv2.id) else dbo.udf_GetResourceName(mrrv1.id) end END as varchar(64) ) , mrr.createdby, mrr.createdon, case isnull(mrrv2.id,-1) when -1 then 0 else 1 end, mrrv2.username, mrrv2.date, mrrv1.username, mrrv1.date, mrrv1.State, mrrv1.comment, case isnull(mrr.[CurrentModuleResRefVersionID], -1) when -1 then 1 else 0 end from dbo.udf_GetModuleHierarchy(@iModuleID, @a_bUseModuleTree) mt join t_moduleresref mrr on mt.ModuleID = mrr.ModuleID join t_resref rr1 on mrr.resrefid = rr1.id and rr1.restype = @sResType join t_moduleresrefversion mrrv on mrr.moduleid = mrrv.moduleid and mrr.resrefid = mrrv.resrefid and mrrv.name = @sResRefName and mrrv.status in ('C', 'S') join t_moduleresrefversion mrrv1 on mrr.currentmoduleresrefversionid = mrrv1.id left outer join t_moduleresrefversion mrrv2 on mrr.scratchmoduleresrefversionid = mrrv2.id order by rr1.id SELECT @iError = @@ERROR IF (@iError != 0) GOTO ON_ERROR return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- return @@ERROR GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetResourceInfoByName] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_GetResourceListByModuleAndType ------------------------------------------------------------------------ -- Owned By: Scott Meadows -- Created On: 2005? -- Description: This prodecure returns a list of ModuleResRefs -- and various auditing information based on type. User Options -- include loading deleted/current/scratch resources and by ResType. -- NOTES: -- * Procedure is built for use with CDBResRef common loading -- functionality. -- * When searching Scratch records, only current user's scratch -- records are returned. -- -- Returns: -- 0 = success -- non-zero = error code -- Parameters: -- @a_iModuleID: Module to look up resources in -- @a_sResType: ResType of Resources to return, blank for all types -- @a_bUseCurrent: -- 1 = result set includes resources with a current version (ie: not deleted) -- 0 = result set will not include anything with a current version -- @a_bUseScratch: -- 1 = result set includes records current user has checked out as scratch -- 0 = result set will not have any scratch records, only Current and History (where applicable) -- @a_bUseDeleted: -- 1 = result set includes deleted resources (have no current version) -- 0 = result set will not include deleted resources -- * This will also force the return of the Version Info as well -- @a_bUseModuleTree: -- 1 = use module tree -- 0 = does not use module tree (only load resources from indicated module) -- @a_bReturnVersionInfo: -- 1 = returns Version and Revision information -- 0 = Version/Revision information is set to zero (unless trumped by use deleted) -- @a_dtCheckedInBefore: -- NULL or 0 = resources returned are the current (live) snapshot -- Any date = resources returned are the most recent -- versions checked in before this time -- When a date is set: -- - a_bUseCurrent returns resource/versions that were -- current at this point in time (even if they are -- presently deleted. Anything deleted prior to this -- time is not shown. -- - a_bUseScratch is ignored and should not be used -- - a_bUseDeleted will include in the result set -- all resources that have been deleted anytime -- prior to the indicated datetime. ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetResourceListByModuleAndType] @a_iModuleID int, @a_sResType varchar(4), @a_bUseCurrent bit, @a_bUseScratch bit, @a_bUseDeleted bit, @a_bUseModuleTree bit, @a_bReturnVersionInfo bit, @a_dtCheckedInBefore datetime AS SET NOCOUNT ON DECLARE @iError INT DECLARE @iModuleID int DECLARE @sResType varchar(4) DECLARE @dtCheckedInBefore datetime DECLARE @bReturnVersionInfo bit DECLARE @bUseHistoryRecords bit ------------------------------------------------------------------------ -- If the user is not passing in a time, they want the current data. -- Set it to a point far in the future. -- -- Also, force @a_dtCheckedInBefore to NULL, just so that we don't -- have to compare against NULL and 0 for the rest of this BSP. ------------------------------------------------------------------------ IF ISNULL(@a_dtCheckedInBefore, 0) = 0 BEGIN SET @a_dtCheckedInBefore = NULL SET @dtCheckedInBefore = '9999-12-31' END ELSE BEGIN SET @dtCheckedInBefore = @a_dtCheckedInBefore END SELECT @iError = @@ERROR IF (@iError != 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Determine if we can return data based on 'H'istory records -- as opposed to just 'C'urrent records. ------------------------------------------------------------------------ IF ( (@a_bUseDeleted = 1) OR (@a_dtCheckedInBefore IS NOT NULL) ) BEGIN SET @bUseHistoryRecords = 1 END ELSE BEGIN SET @bUseHistoryRecords = 0 END ------------------------------------------------------------------------ -- If the user is using deleted records then we have to return the -- version info as well ------------------------------------------------------------------------ IF (@a_bUseDeleted = 1) SET @bReturnVersionInfo = 1 ELSE SET @bReturnVersionInfo = @a_bReturnVersionInfo SELECT @iError = @@ERROR IF (@iError != 0) GOTO ON_ERROR set @iModuleID = @a_iModuleID set @sResType = @a_sResType IF (@a_dtCheckedInBefore IS NULL) BEGIN SELECT rr1.ID , 1 , mrr.ModuleID , CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.ownermoduleid ELSE case mrrv2.username when suser_sname() then mrrv2.ownermoduleid else mrrv1.ownermoduleid end end else mrrv1.ownermoduleid end, CASE @bReturnVersionInfo WHEN 1 THEN mrrv1.[ID] ELSE 0 END, -- Version (if requested) CASE @bReturnVersionInfo WHEN 1 THEN mrrv1.[RevisionID] ELSE 0 END, -- RevisionID (if requested) rr1.[ResType], CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.name ELSE case mrrv2.username when suser_sname() then mrrv2.name else mrrv1.name end end else mrrv1.name end, CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) when -1 THEN mrrv1.folder else case mrrv2.username when suser_sname() then mrrv2.folder else mrrv1.folder end end else mrrv1.folder end, cast(CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) when -1 THEN dbo.udf_GetResourceName(mrrv1.id) else case mrrv2.username when suser_sname() then dbo.udf_GetResourceName(mrrv2.id) else dbo.udf_GetResourceName(mrrv1.id) end end else dbo.udf_GetResourceName(mrrv1.id) END as varchar(64) ) , CASE @a_bUseDeleted when 1 THEN mrr.lastmodifiedby ELSE mrr.createdby END, CASE @a_bUseDeleted when 1 THEN mrr.lastmodifiedon ELSE mrr.createdon END, CASE isnull(mrrv2.id,-1) when -1 then 0 else 1 end, mrrv2.[Username], mrrv2.[Date], mrrv1.[Username], mrrv1.[Date], mrrv1.[State], mrrv1.[Comment], CASE isnull (mrr.[CurrentModuleResRefVersionID], -1) WHEN -1 THEN 1 ELSE 0 END FROM t_resref rr1 join t_ModuleResRef mrr on rr1.restype = case @sResType when '' then rr1.restype else @sResType end and mrr.resrefid = rr1.id LEFT OUTER JOIN t_moduleresrefversion mrrv2 on mrr.scratchmoduleresrefversionid = mrrv2.id -- This is only here to report if/who has resource checked out join t_moduleresrefversion mrrv1 -- this one should be current when applicable on mrrv1.[ModuleID] = mrr.[ModuleID] AND mrrv1.[ResRefID] = mrr.[ResRefID] and (mrrv1.[Status] = 'C' OR ( (@bUseHistoryRecords = 1) AND mrrv1.[Status] = 'H') ) -- scratch records do not count here join dbo.udf_GetModuleHierarchy(@iModuleID, @a_bUseModuleTree) mt on mt.[ModuleID] = mrrv1.[OwnerModuleID] WHERE ( ( (@a_dtCheckedInBefore IS NULL) AND ( (@a_bUseCurrent = 1 and mrr.CurrentModuleResRefVersionID IS NOT NULL) OR (@a_bUseDeleted = 1 and mrr.CurrentModuleResRefVersionID IS NULL) ) ) OR ( (@a_dtCheckedInBefore IS NOT NULL) AND ( ( (@a_bUseCurrent = 1) AND (@a_bUseDeleted = 0) AND ( (mrr.[CurrentModuleResRefVersionID] IS NOT NULL) OR (mrr.[LastModifiedOn] >= @a_dtCheckedInBefore) ) ) OR ( (@a_bUseCurrent = 0) AND (@a_bUseDeleted = 1) AND (mrr.[CurrentModuleResRefVersionID] IS NULL) ) OR ( (@a_bUseCurrent = 1) AND (@a_bUseDeleted = 1) ) ) ) ) option (force order) END ELSE BEGIN SELECT rr1.ID , 1 , mrr.ModuleID , CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.ownermoduleid ELSE case mrrv2.username when suser_sname() then mrrv2.ownermoduleid else mrrv1.ownermoduleid end end else mrrv1.ownermoduleid end, CASE @bReturnVersionInfo WHEN 1 THEN mrrv1.[ID] ELSE 0 END, -- Version (if requested) CASE @bReturnVersionInfo WHEN 1 THEN mrrv1.[RevisionID] ELSE 0 END, -- RevisionID (if requested) rr1.[ResType], CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) WHEN -1 THEN mrrv1.name ELSE case mrrv2.username when suser_sname() then mrrv2.name else mrrv1.name end end else mrrv1.name end, CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) when -1 THEN mrrv1.folder else case mrrv2.username when suser_sname() then mrrv2.folder else mrrv1.folder end end else mrrv1.folder end, cast(CASE @a_bUseScratch when 1 THEN CASE isnull(mrrv2.id,-1) when -1 THEN dbo.udf_GetResourceName(mrrv1.id) else case mrrv2.username when suser_sname() then dbo.udf_GetResourceName(mrrv2.id) else dbo.udf_GetResourceName(mrrv1.id) end end else dbo.udf_GetResourceName(mrrv1.id) END as varchar(64) ) , CASE @a_bUseDeleted when 1 THEN mrr.lastmodifiedby ELSE mrr.createdby END, CASE @a_bUseDeleted when 1 THEN mrr.lastmodifiedon ELSE mrr.createdon END, CASE isnull(mrrv2.id,-1) when -1 then 0 else 1 end, mrrv2.[Username], mrrv2.[Date], mrrv1.[Username], mrrv1.[Date], mrrv1.[State], mrrv1.[Comment], CASE isnull (mrr.[CurrentModuleResRefVersionID], -1) WHEN -1 THEN 1 ELSE 0 END FROM t_resref rr1 join t_ModuleResRef mrr ON mrr.resrefid = rr1.id AND rr1.restype = case @sResType when '' then rr1.restype else @sResType end LEFT OUTER JOIN t_moduleresrefversion mrrv2 on mrr.scratchmoduleresrefversionid = mrrv2.id -- This is only here to report if/who has resource checked out join t_moduleresrefversion mrrv1 -- this one should be current when applicable on mrrv1.[ModuleID] = mrr.[ModuleID] AND mrrv1.[ResRefID] = mrr.[ResRefID] join dbo.udf_GetModuleHierarchy(@iModuleID, @a_bUseModuleTree) mt ON mt.[ModuleID] = mrrv1.[OwnerModuleID] JOIN (SELECT [ModuleID], [ResRefID], MAX([Date]) AS [Date] FROM t_ModuleResRefVersion WHERE [Date] < @dtCheckedInBefore AND ([Status] = 'C' OR ( (@bUseHistoryRecords = 1) AND [Status] = 'H') ) -- scratch records do not count here GROUP BY moduleid, resrefid) mrrvDate ON mrrv1.[ModuleID] = mrrvDate.[ModuleID] AND mrrv1.[ResRefID] = mrrvDate.[ResRefID] AND mrrv1.[Date] = mrrvDate.[Date] WHERE ( ( (@a_dtCheckedInBefore IS NULL) AND ( (@a_bUseCurrent = 1 and mrr.CurrentModuleResRefVersionID IS NOT NULL) OR (@a_bUseDeleted = 1 and mrr.CurrentModuleResRefVersionID IS NULL) ) ) OR ( (@a_dtCheckedInBefore IS NOT NULL) AND ( ( (@a_bUseCurrent = 1) AND (@a_bUseDeleted = 0) AND ( (mrr.[CurrentModuleResRefVersionID] IS NOT NULL) OR (mrr.[LastModifiedOn] >= @a_dtCheckedInBefore) ) ) OR ( (@a_bUseCurrent = 0) AND (@a_bUseDeleted = 1) AND (mrr.[CurrentModuleResRefVersionID] IS NULL) ) OR ( (@a_bUseCurrent = 1) AND (@a_bUseDeleted = 1) ) ) ) ) option (force order) END SELECT @iError = @@ERROR IF (@iError != 0) GOTO ON_ERROR return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetResourceListByModuleAndType] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetResourceReferenceList] @a_iModuleID int, @a_iResRefID int, @a_iVersionID int, @a_bUseModuleTree bit, @a_bUseCurrent bit, @a_bUseScratch bit, @a_bGetDeleted bit, @a_bGetReferences bit AS SET NOCOUNT ON declare @iModuleID int declare @iResRefID int declare @iVersionID int set @iModuleID = @a_iModuleID set @iResRefID = @a_iResRefID set @iVersionID = @a_iVersionID DECLARE @tStatusTable TABLE (Status varchar(1)) DECLARE @tResRefTable TABLE (ResRefID INT) DECLARE @tResourceTable TABLE (ResRefID INT, Level INT, ModuleID INT, OwnerModuleID INT, VersionID INT, RevisionID INT, ResType VARCHAR(4), ResRefName VARCHAR(32), Folder VARCHAR(128), ObjectName VARCHAR(64), CreatedBy VARCHAR(32), CreatedOn DATETIME, IsCheckedOut BIT, CheckedOutBy VARCHAR(32), CheckedOutOn DATETIME, LastCheckInBy VARCHAR(32), LastCheckInOn DATETIME, State INT, Comment TEXT, IsDeleted BIT) ------------------------------------------------------------------------ -- Get the Module list to use ------------------------------------------------------------------------ if @a_bUseCurrent = 1 BEGIN INSERT INTO @tStatusTable(Status) VALUES ('C') END if @a_bUseScratch = 1 BEGIN INSERT INTO @tStatusTable(Status) VALUES ('S') END if @a_bGetReferences = 1 BEGIN -- These are the resources that I am referencing INSERT INTO @tResRefTable SELECT distinct vrr.ResRefID FROM ( SELECT DISTINCT rr1.SrcResRefID as ResRefID , mrrv.[ResRefID] as ReferencedByResRefID , mrrv.[ID] as ReferencedByVersionID , mrrv.[Status] as ReferencedByStatus , rr1.notes as Note -- Area FROM ( SELECT t1.[ScriptResRefID] as SrcResRefID, t1.[ModuleResRefVersionID], 'Area Script' as notes FROM t_Area t1 UNION ALL SELECT t1.[AreaListResRefID], t1.[ModuleResRefVersionID], 'Area List' FROM t_Area t1 UNION ALL SELECT t1.[ObjectResRefID], t1.[ModuleResRefVersionID], 'Area Object' FROM t_AreaObject t1 UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Area Music Volume Script' FROM t_AreaMusicVolume t1 -- Area Map UNION ALL SELECT t1.[ParentMapResRefID], t1.[ModuleResRefVersionID], 'Area Map Parent' FROM t_Map t1 -- Associated Resource UNION ALL SELECT t1.[ResRefID], t1.[ModuleResRefVersionID], 'Associated Resource' FROM t_AssociatedResource t1 -- Character UNION ALL SELECT t1.[RoleResRefID], t1.[ModuleResRefVersionID], 'Character Role' FROM t_Character t1 UNION ALL SELECT t1.[SoundsetResRefID], t1.[ModuleResRefVersionID], 'Sound Set' FROM t_Character t1 -- Conversation UNION ALL SELECT t1.[EndConversationPlotResRefID], t1.[ModuleResRefVersionID], 'End Conversation Plot' FROM t_Conversation t1 UNION ALL SELECT t1.[EndConversationScriptResRefID], t1.[ModuleResRefVersionID], 'End Conversation Script' FROM t_Conversation t1 UNION ALL SELECT t1.[StageResRefID], t1.[ModuleResRefVersionID], 'Conversation Root Stage' FROM t_Conversation t1 UNION ALL SELECT t1.[PreviewAreaResRefID], t1.[ModuleResRefVersionID], 'Conversation Root Preview Area' FROM t_Conversation t1 UNION ALL SELECT t1.[ActionPlotResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Action Plot' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ActionScriptResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Action Script' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ConditionPlotResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Condition Plot' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ConditionScriptResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Condition Script' FROM t_ConversationLine t1 UNION ALL SELECT t1.[StageResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Stage' FROM t_ConversationLine t1 UNION ALL SELECT t1.[CameraFunctionalShotResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Camera Functional Shot' FROM t_ConversationLine t1 UNION ALL SELECT t1.[CustomCutsceneResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Custom Cutscene' FROM t_ConversationLine t1 UNION ALL SELECT t1.[FunctionalShotResRefID], t1.[ModuleResRefVersionID], 'Conversation Cinematics Functional Shot' FROM t_ConversationCinematics t1 UNION ALL SELECT t1.[PreviewAreaResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Preview Area' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ValueResRefID], t1.[ModuleResRefVersionID], 'Conversation Tag Map' FROM t_ConversationTagMap t1 -- Creature UNION ALL SELECT t1.[ConversationResRefID], t1.[ModuleResRefVersionID], 'Creature Conversation' FROM t_Creature t1 UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Creature Script' FROM t_Creature t1 UNION ALL SELECT t1.[CharacterResRefID], t1.[ModuleResRefVersionID], 'Creature Character' FROM t_Creature t1 -- Cutscene UNION ALL SELECT t1.[EndScriptResRefID], t1.[ModuleResRefVersionID], 'Cutscene End Script' FROM t_Cutscene t1 UNION ALL SELECT t1.[StageResRefID], t1.[ModuleResRefVersionID], 'Cutscene Stage' FROM t_Cutscene t1 UNION ALL SELECT t1.[ResRefID], t1.[ModuleResRefVersionID], 'Cutscene Object' FROM t_CutsceneObject t1 UNION ALL SELECT t1.[AreaResRefID], t1.[ModuleResRefVersionID], 'Cutscene Area' FROM t_Cutscene t1 UNION ALL SELECT t1.[ResRefID1], t1.[ModuleResRefVersionID], 'Cutscene Speak Line Conversation' FROM t_CutsceneAction t1 -- Inventory UNION ALL SELECT t1.[ItemResRefID], t1.[ModuleResRefVersionID], 'Inventory Item' FROM t_Inventory t1 -- Item UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Item Script' FROM t_Item t1 -- Merchant UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Merchant Script' FROM t_Merchant t1 -- Placeable UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Placeable Script' FROM t_Placeable t1 UNION ALL SELECT t1.[ConversationResRefID], t1.[ModuleResRefVersionID], 'Placeable Conversation' FROM t_Placeable t1 UNION ALL SELECT t1.[CharacterResRefID], t1.[ModuleResRefVersionID], 'Placeable Character' FROM t_Placeable t1 -- Plot UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Plot Script' FROM t_Plot t1 UNION ALL SELECT t1.[ParentPlotResRefID], t1.[ModuleResRefVersionID], 'Parent plot' FROM t_Plot t1 -- Trigger UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Trigger Script' FROM t_Trigger t1 -- Script UNION ALL SELECT t1.[ReferencedResRefID], t1.[ModuleResRefVersionID], 'Script Reference' FROM t_Script_Reference t1 -- Stage UNION ALL SELECT t1.[AreaResRefID], t1.[ModuleResRefVersionID], 'Stage Area' FROM t_Stage t1 UNION ALL SELECT t1.[CreatureResRefID], t1.[ModuleResRefVersionID], 'Stage Creature' FROM t_StageObject t1 ) rr1 JOIN t_ModuleResRefVersion mrrv on rr1.ModuleResRefVersionID = mrrv.[ID] ) vrr join @tStatusTable t1 on t1.Status = vrr.ReferencedByStatus WHERE vrr.ReferencedByResRefID = @iResRefID AND vrr.ResRefID is not null END else BEGIN -- These are the resources that reference me INSERT INTO @tResRefTable SELECT distinct vrr.ReferencedByResRefID FROM ( -- Area SELECT t1.[ScriptResRefID] as ResRefID , mrrv.[ResRefID] as ReferencedByResRefID , mrrv.[ID] as ReferencedByVersionID , mrrv.[Status] as ReferencedByStatus , 'Area Script' as Note FROM t_Area t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[AreaListResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Area List' FROM t_Area t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ObjectResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Area Object' FROM t_AreaObject t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Area Music Volume Script' FROM t_AreaMusicVolume t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Area Map SELECT t1.[ParentMapResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Area Map Parent' FROM t_Map t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Associated Resource SELECT t1.[ResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Associated Resource' FROM t_AssociatedResource t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Character SELECT t1.[RoleResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Character Role' FROM t_Character t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[SoundsetResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Sound Set' FROM t_Character t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Conversation SELECT t1.[EndConversationPlotResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'End Conversation Plot' FROM t_Conversation t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[EndConversationScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'End Conversation Script' FROM t_Conversation t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[StageResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Root Stage' FROM t_Conversation t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[PreviewAreaResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Root Preview Area' FROM t_Conversation t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ActionPlotResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Action Plot' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ActionScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Action Script' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ConditionPlotResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Condition Plot' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ConditionScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Condition Script' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[StageResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Stage' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[CameraFunctionalShotResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Camera Functional Shot' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[CustomCutsceneResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Custom Cutscene' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[FunctionalShotResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Cinematics Functional Shot' FROM t_ConversationCinematics t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[PreviewAreaResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Line Preview Area' FROM t_ConversationLine t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ValueResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Conversation Tag Map' FROM t_ConversationTagMap t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Creature SELECT t1.[ConversationResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Creature Conversation' FROM t_Creature t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Creature Script' FROM t_Creature t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[CharacterResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Creature Character' FROM t_Creature t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Cutscene SELECT t1.[EndScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Cutscene End Script' FROM t_Cutscene t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[StageResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Cutscene Stage' FROM t_Cutscene t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Cutscene Object' FROM t_CutsceneObject t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[AreaResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Cutscene Area' FROM t_Cutscene t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ResRefID1] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Cutscene Speak Line Conversation' FROM t_CutsceneAction t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Inventory SELECT t1.[ItemResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Inventory Item' FROM t_Inventory t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Item SELECT t1.[ScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Item Script' FROM t_Item t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Merchant SELECT t1.[ScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Merchant Script' FROM t_Merchant t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Placeable SELECT t1.[ScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Placeable Script' FROM t_Placeable t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ConversationResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Placeable Conversation' FROM t_Placeable t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[CharacterResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Placeable Character' FROM t_Placeable t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Plot SELECT t1.[ScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Plot Script' FROM t_Plot t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[ParentPlotResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Parent plot' FROM t_Plot t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Trigger SELECT t1.[ScriptResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Trigger Script' FROM t_Trigger t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Script SELECT t1.[ReferencedResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Script Reference' FROM t_Script_Reference t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL -- Stage SELECT t1.[AreaResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Stage Area' FROM t_Stage t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] UNION ALL SELECT t1.[CreatureResRefID] , mrrv.[ResRefID] , mrrv.[ID] , mrrv.[Status] , 'Stage Creature' FROM t_StageObject t1 join t_ModuleResRefVersion mrrv on t1.[ModuleResRefVersionID] = mrrv.[ID] ) vrr join @tStatusTable t1 on t1.Status = vrr.ReferencedByStatus WHERE vrr.ResRefID = @iResRefID AND vrr.ResRefID is not null option (concat union) END ------------------------------------------------------------------------ -- It is very important to select at least one column from the v_ResourceReference -- view and/or subquery that it is in. -- The optimizer does not perform well if that view is not referenced in the final select ------------------------------------------------------------------------ IF @a_bUseCurrent = 1 OR @a_bUseScratch = 1 BEGIN INSERT INTO @tResourceTable SELECT vrr1.resrefid, 1, mrr.moduleid, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.ownermoduleid else case mrrv2.username when suser_sname() then mrrv2.ownermoduleid else mrrv1.ownermoduleid end end, 0, 0, rr1.restype, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.name else case mrrv2.username when suser_sname() then mrrv2.name else mrrv1.name end end, CASE isnull(mrrv2.id,-1) when -1 then mrrv1.folder else case mrrv2.username when suser_sname() then mrrv2.folder else mrrv1.folder end end, cast( CASE isnull(mrrv2.id,-1) when -1 THEN dbo.udf_GetResourceName(mrrv1.id) else case mrrv2.username when suser_sname() then dbo.udf_GetResourceName(mrrv2.id) else dbo.udf_GetResourceName(mrrv1.id) end END as varchar(64) ) , mrr.createdby, mrr.createdon, case isnull(mrrv2.id,-1) when -1 then 0 else 1 end, mrrv2.username, mrrv2.date, mrrv1.username, mrrv1.date, mrrv1.state, mrrv1.comment, case isnull(mrr.CurrentModuleResRefVersionID, -1) when -1 then 1 else 0 end FROM dbo.udf_GetModuleHierarchy(@iModuleID, @a_bUseModuleTree) mt JOIN t_moduleresref mrr ON mt.ModuleID = mrr.moduleid JOIN t_resref rr1 on mrr.resrefid = rr1.id JOIN t_moduleresrefversion mrrv1 on mrr.currentmoduleresrefversionid = mrrv1.id LEFT OUTER JOIN t_moduleresrefversion mrrv2 on mrr.scratchmoduleresrefversionid = mrrv2.id JOIN @tResRefTable vrr1 ON mrr.resrefid = vrr1.resrefid END IF @a_bGetDeleted = 1 BEGIN INSERT INTO @tResourceTable select drr.resrefid, null, mrr.moduleid, mrrv.ownermoduleid, mrrv.id, mrrv.RevisionID, rr1.restype, mrrv.name, mrrv.folder, cast( dbo.udf_GetResourceName(mrrv.id) as varchar(64) ) , mrr.lastmodifiedby, mrr.lastmodifiedon, 0, null, null, null, null, mrrv.state, mrrv.comment, case isnull(mrr.CurrentModuleResRefVersionID, -1) when -1 then 1 else 0 end from dbo.udf_GetModuleHierarchy(@iModuleID, @a_bUseModuleTree) mt JOIN t_moduleresref mrr ON mt.ModuleID = mrr.moduleid join t_ResRef rr1 on mrr.resrefid = rr1.id join t_ModuleResRefVersion mrrv on mrrv.moduleid = mrr.moduleid and mrrv.resrefid = mrr.resrefid join (select distinct vrr.ResRefID from ( SELECT DISTINCT rr1.SrcResRefID as ResRefID , mrrv.[ResRefID] as ReferencedByResRefID , mrrv.[ID] as ReferencedByVersionID , mrrv.[Status] as ReferencedByStatus , rr1.notes as Note -- Area FROM ( SELECT t1.[ScriptResRefID] as SrcResRefID, t1.[ModuleResRefVersionID], 'Area Script' as notes FROM t_Area t1 UNION ALL SELECT t1.[AreaListResRefID], t1.[ModuleResRefVersionID], 'Area List' FROM t_Area t1 UNION ALL SELECT t1.[ObjectResRefID], t1.[ModuleResRefVersionID], 'Area Object' FROM t_AreaObject t1 UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Area Music Volume Script' FROM t_AreaMusicVolume t1 -- Area Map UNION ALL SELECT t1.[ParentMapResRefID], t1.[ModuleResRefVersionID], 'Area Map Parent' FROM t_Map t1 -- Associated Resource UNION ALL SELECT t1.[ResRefID], t1.[ModuleResRefVersionID], 'Associated Resource' FROM t_AssociatedResource t1 -- Character UNION ALL SELECT t1.[RoleResRefID], t1.[ModuleResRefVersionID], 'Character Role' FROM t_Character t1 UNION ALL SELECT t1.[SoundsetResRefID], t1.[ModuleResRefVersionID], 'Sound Set' FROM t_Character t1 -- Conversation UNION ALL SELECT t1.[EndConversationPlotResRefID], t1.[ModuleResRefVersionID], 'End Conversation Plot' FROM t_Conversation t1 UNION ALL SELECT t1.[EndConversationScriptResRefID], t1.[ModuleResRefVersionID], 'End Conversation Script' FROM t_Conversation t1 UNION ALL SELECT t1.[StageResRefID], t1.[ModuleResRefVersionID], 'Conversation Root Stage' FROM t_Conversation t1 UNION ALL SELECT t1.[PreviewAreaResRefID], t1.[ModuleResRefVersionID], 'Conversation Root Preview Area' FROM t_Conversation t1 UNION ALL SELECT t1.[ActionPlotResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Action Plot' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ActionScriptResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Action Script' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ConditionPlotResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Condition Plot' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ConditionScriptResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Condition Script' FROM t_ConversationLine t1 UNION ALL SELECT t1.[StageResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Stage' FROM t_ConversationLine t1 UNION ALL SELECT t1.[CameraFunctionalShotResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Camera Functional Shot' FROM t_ConversationLine t1 UNION ALL SELECT t1.[CustomCutsceneResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Custom Cutscene' FROM t_ConversationLine t1 UNION ALL SELECT t1.[FunctionalShotResRefID], t1.[ModuleResRefVersionID], 'Conversation Cinematics Functional Shot' FROM t_ConversationCinematics t1 UNION ALL SELECT t1.[PreviewAreaResRefID], t1.[ModuleResRefVersionID], 'Conversation Line Preview Area' FROM t_ConversationLine t1 UNION ALL SELECT t1.[ValueResRefID], t1.[ModuleResRefVersionID], 'Conversation Tag Map' FROM t_ConversationTagMap t1 -- Creature UNION ALL SELECT t1.[ConversationResRefID], t1.[ModuleResRefVersionID], 'Creature Conversation' FROM t_Creature t1 UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Creature Script' FROM t_Creature t1 UNION ALL SELECT t1.[CharacterResRefID], t1.[ModuleResRefVersionID], 'Creature Character' FROM t_Creature t1 -- Cutscene UNION ALL SELECT t1.[EndScriptResRefID], t1.[ModuleResRefVersionID], 'Cutscene End Script' FROM t_Cutscene t1 UNION ALL SELECT t1.[StageResRefID], t1.[ModuleResRefVersionID], 'Cutscene Stage' FROM t_Cutscene t1 UNION ALL SELECT t1.[ResRefID], t1.[ModuleResRefVersionID], 'Cutscene Object' FROM t_CutsceneObject t1 UNION ALL SELECT t1.[AreaResRefID], t1.[ModuleResRefVersionID], 'Cutscene Area' FROM t_Cutscene t1 UNION ALL SELECT t1.[ResRefID1], t1.[ModuleResRefVersionID], 'Cutscene Speak Line Conversation' FROM t_CutsceneAction t1 -- Inventory UNION ALL SELECT t1.[ItemResRefID], t1.[ModuleResRefVersionID], 'Inventory Item' FROM t_Inventory t1 -- Item UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Item Script' FROM t_Item t1 -- Merchant UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Merchant Script' FROM t_Merchant t1 -- Placeable UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Placeable Script' FROM t_Placeable t1 UNION ALL SELECT t1.[ConversationResRefID], t1.[ModuleResRefVersionID], 'Placeable Conversation' FROM t_Placeable t1 UNION ALL SELECT t1.[CharacterResRefID], t1.[ModuleResRefVersionID], 'Placeable Character' FROM t_Placeable t1 -- Plot UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Plot Script' FROM t_Plot t1 UNION ALL SELECT t1.[ParentPlotResRefID], t1.[ModuleResRefVersionID], 'Parent plot' FROM t_Plot t1 -- Trigger UNION ALL SELECT t1.[ScriptResRefID], t1.[ModuleResRefVersionID], 'Trigger Script' FROM t_Trigger t1 -- Script UNION ALL SELECT t1.[ReferencedResRefID], t1.[ModuleResRefVersionID], 'Script Reference' FROM t_Script_Reference t1 -- Stage UNION ALL SELECT t1.[AreaResRefID], t1.[ModuleResRefVersionID], 'Stage Area' FROM t_Stage t1 UNION ALL SELECT t1.[CreatureResRefID], t1.[ModuleResRefVersionID], 'Stage Creature' FROM t_StageObject t1 ) rr1 JOIN t_ModuleResRefVersion mrrv on rr1.ModuleResRefVersionID = mrrv.[ID] ) vrr left outer join t_ModuleResRef mrr on vrr.resrefid = mrr.resrefid where vrr.ReferencedByVersionID = @iVersionID and vrr.resrefid is not null and mrr.currentmoduleresrefversionid is null ) drr on mrr.ResRefID = drr.ResRefID where mrrv.id = (select top 1 mrrv2.id from t_ModuleResRefVersion mrrv2 where mrrv2.moduleid = mrr.moduleid and mrrv2.resrefid = mrr.resrefid and mrrv2.status = 'H' order by mrrv2.date desc) END SET NOCOUNT OFF SELECT ResRefID , Level , ModuleID , OwnerModuleID , VersionID , RevisionID , ResType , ResRefName , Folder , ObjectName , CreatedBy , CreatedOn , IsCheckedOut , CheckedOutBy , CheckedOutOn , LastCheckInBy , LastCheckInOn , State, Comment, IsDeleted FROM @tResourceTable IF (@@ERROR <> 0) GOTO ON_ERROR return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- return @@ERROR GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetResourceReferenceList] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_GetRoleList] @a_iModuleID INT, @a_bUseModuleTree BIT AS DECLARE @iReturn INT SELECT mrr.ResRefID, CASE r.Name WHEN '' THEN mrrv1.Name ELSE r.Name END as Name, r.Description FROM dbo.udf_GetModuleHierarchy(@a_iModuleID, @a_bUseModuleTree) mt JOIN t_ModuleResRef mrr ON mt.ModuleID = mrr.ModuleID JOIN t_ModuleResRefVersion mrrv1 ON mrr.CurrentModuleResRefVersionID = mrrv1.ID JOIN t_Role r ON mrrv1.ID = r.ModuleResRefVersionID SELECT @iReturn = @@ERROR IF (@iReturn != 0) GOTO ON_ERROR --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- RETURN @iReturn GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetRoleList] TO [bw_db_read] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetVOScriptMaintenanceData ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 22, 2007 -- Description: All of the data required for the Maintenance features -- is loaded from this stored procedure. -- -- Parameters: -- @a_iVOScriptID - ID of VO Script to load data for. Cannot be NULL -- @a_iStringLanguageID - StringLanguageID to load data from. -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetVOScriptMaintenanceData] @a_iVOScriptID int, @a_iStringLanguageID int AS SET NOCOUNT ON DECLARE @iError int CREATE TABLE #Results ( [VOScriptID] int, [VOScriptInstanceID] int, [VOScriptInstanceStringID] int, [StringLanguageID] int, [StringID] int, [StringVariantID] int, [RecordedText] nText, [CurrentText] nText, [ScriptPrintedOn] datetime, [ScriptPrintedBy] varchar(64) ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Get the lines related to our VO Script ------------------------------------------------------------------------ EXEC @iError = dbo.bsp_DetermineVOScriptLineCharacters @a_iVOScriptID, NULL IF (@iError <> 0) GOTO ON_ERROR DECLARE @tblStringIDToLoad TABLE ( [StringID] int ) ------------------------------------------------------------------------ -- Determine the Strings that belong to this Script, or -- belong to the character that is in this script. -- (the difference is that some strings were most recently -- printed with this script, but have been moved to another character, -- or vice versa). ------------------------------------------------------------------------ INSERT @tblStringIDToLoad ( [StringID] ) ( SELECT voslci.[StringID] FROM t_VOScript vos JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND vos.[ID] = @a_iVOScriptID AND voslci.[ResourceModuleID] = vos.[ResourceModuleID] AND voslci.[ResourceResRefID] = vos.[ResourceResRefID] AND voslci.[CharacterModuleID] = vos.[CharacterModuleID] AND voslci.[CharacterResRefID] = vos.[CharacterResRefID] UNION SELECT vosis.[StringID] FROM t_VOScriptInstanceString vosis JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] AND vosi.[VOScriptID] = @a_iVOScriptID AND vosi.[StringLanguageID] = @a_iStringLanguageID WHERE vosis.[Active] = 'A' ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Now load all needed data from the strings that we calculated. ------------------------------------------------------------------------ INSERT #Results SELECT vos.[ID], vosi.[ID], vosis.[ID], vosi.[StringLanguageID], vosis.[StringID], vosis.[StringVariantID], NULL, NULL, vosi.[PrintedOn], vosi.[CreatedBy] FROM t_VOScript vos JOIN t_VOScriptInstance vosi ON vos.[ID] = vosi.[VOScriptID] JOIN t_VOScriptInstanceString vosis ON vosi.[ID] = vosis.[VOScriptInstanceID] AND vosi.[StringLanguageID] = @a_iStringLanguageID AND vosis.[Active] = 'A' JOIN @tblStringIDToLoad sid ON vosis.[StringID] = sid.[StringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Update English Recorded Text UPDATE res SET [RecordedText] = st.[Text] FROM #Results res JOIN t_VOScriptInstanceString vosis ON res.[VOScriptInstanceStringID] = vosis.[ID] AND vosis.[IsForeign] = 0 JOIN t_StringText st ON st.[StringID] = vosis.[StringID] AND st.[ModuleResRefVersionID] = vosis.[ModuleResRefVersionID] AND st.[StringLanguageVariantID] = vosis.[StringLanguageVariantID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Update Foreign Recorded Text UPDATE res SET [RecordedText] = slvt.[Text] FROM #Results res JOIN t_VOScriptInstanceString vosis ON res.[VOScriptInstanceStringID] = vosis.[ID] AND vosis.[IsForeign] = 1 JOIN t_StringLanguageVariantText slvt ON slvt.[StringLanguageVariantVersionID] = vosis.[StringLanguageVariantVersionID] AND slvt.[StringID] = vosis.[StringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Update English Current Text UPDATE res SET [CurrentText] = st.[Text] FROM #Results res JOIN t_VOScript vos ON res.[VOScriptID] = vos.[ID] JOIN t_VOScriptInstanceString vosis ON res.[VOScriptInstanceStringID] = vosis.[ID] AND vosis.[IsForeign] = 0 JOIN t_ModuleResRef mr ON mr.[ModuleID] = vos.[ResourceModuleID] AND mr.[ResRefID] = vos.[ResourceResRefID] JOIN t_StringText st ON st.[StringID] = res.[StringID] AND st.[ModuleResRefVersionID] = mr.[CurrentModuleResRefVersionID] AND st.[StringLanguageVariantID] = vosis.[StringLanguageVariantID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Update Foreign Current Text UPDATE res SET [CurrentText] = slvt.[Text] FROM #Results res JOIN t_VOScriptInstanceString vosis ON res.[VOScriptInstanceStringID] = vosis.[ID] AND vosis.[IsForeign] = 1 JOIN t_StringLanguageVariantVersion slvvRecorded ON slvvRecorded.[ID] = vosis.[StringLanguageVariantVersionID] JOIN t_StringLanguageVariant slv ON slv.[ID] = slvvRecorded.[StringLanguageVariantID] JOIN t_StringLanguageVariantText slvt ON slvt.[StringLanguageVariantVersionID] = slv.[CurrentStringLanguageVariantVersionID] AND slvt.[StringID] = res.[StringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR SELECT * FROM #Results SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetVOScriptMaintenanceData] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetVOScriptStats ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 22, 2007 -- Description: Get the VO Script Statistics needed for the -- VO Script Generator. -- -- Parameters -- a_iVOScriptID - VOScript ID to look up stats on, set as follows: -- o NULL: Gets stats for All VO Scripts -- o VOScriptID: Gets stats for one VO Script -- a_iStringLanguageID - LanguageID to look up stats for -- a_bIncludeBlankLines - set as follows: -- o 1: includes blank lines -- o 0: excludes them -- a_bVerbose - Indicates that more fields are required in the output -- -- Result Set: -- VOScriptID - VOScript that Stats Record is for -- LineCountEnglish - How many lines the English resource has that -- can be VO Recorded (not to be confused with total lines -- in a resource) -- LineCount - How many lines the (a_iStringLanguageID) resource -- has that can be VO Recorded. -- CharacterLineCountEnglish - How many lines the English resource -- has that are owned by this VO Script's character. -- CharacterLineCount - How many lines the (a_iStringLanguageID) -- resource has that are owned by this VO Script's character. -- RecordCount - How many lines require recording for the first time -- by this VO Script (in the specified language). Note that this -- value does not include lines requiring re-recording. -- ReRecordCount - How many lines require recording for the -- second or more time by this VO Script (in the specified -- language). -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetVOScriptStats] @a_iVOScriptID int, @a_iStringLanguageID int, @a_bIncludeBlankLines bit, @a_bVerbose bit = 0 AS SET NOCOUNT ON ------------------------------------------------------------------------ -- !!! NOTE !!! -- The LineCounts calculated here used to be chained to the -- version of the resource returned from -- bsp_DetermineVOScriptLineCharacters. This has been changed. -- The live version is always used now, as it performs much -- better. There is a risk that a resouce has -- been updated during this BSP, and the Character Line Count -- has newer data than the Resource Line Count. -- We are willing to accept this for the performance gain. ------------------------------------------------------------------------ DECLARE @iError int ------------------------------------------------------------------------ -- Define result structure ------------------------------------------------------------------------ CREATE TABLE #tblResults ( [VOScriptID] int NOT NULL, [LineCountEnglish] int NOT NULL, [LineCount] int NOT NULL, [CharacterWordCountEnglish] int NOT NULL, [CharacterLineCountEnglish] int NOT NULL, [CharacterLineCount] int NOT NULL, [RecordCount] int NOT NULL, [ReRecordCount] int NOT NULL ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Make a place to hold our strings ------------------------------------------------------------------------ DECLARE @tStatsInternal TABLE ( [StringID] [int] NOT NULL , [ModuleID] [int] NOT NULL , [ResRefID] [int] NOT NULL , [StringLanguageID] [int] NOT NULL , [StringVariantID] [int] NOT NULL , [VORequestedOn] [datetime] NOT NULL , [ReqRecord] [bit] NOT NULL , [IsReRecord] [bit] NOT NULL, [WordCount] [int] NOT NULL , [IsBlank] [bit] NOT NULL , [UsedInVO] [bit] NOT NULL ) ------------------------------------------------------------------------ -- Load the English Language ID ------------------------------------------------------------------------ DECLARE @iDevStringLanguageID int SET @iDevStringLanguageID = dbo.udf_GetProjectStringLanguageID() SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Determine if we are working with a foreign language ------------------------------------------------------------------------ DECLARE @bForeignStringLanguage bit IF (@a_iStringLanguageID = @iDevStringLanguageID) BEGIN SET @bForeignStringLanguage = 0 END ELSE BEGIN SET @bForeignStringLanguage = 1 END ------------------------------------------------------------------------ -- Load the Resources/Strings/Characters for our data of interest ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] @a_iVOScriptID, NULL IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Remove lines that should not be recorded from the consideration set. ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_AdjustVOScriptLineCharacterInternalForStats] IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Initialize the Result set with the VO Scripts to be returned ------------------------------------------------------------------------ INSERT #tblResults ([VOScriptID], [LineCountEnglish], [LineCount], [CharacterWordCountEnglish], [CharacterLineCountEnglish], [CharacterLineCount], [RecordCount], [ReRecordCount]) SELECT [ID], 0, 0, 0, 0, 0, 0, 0 FROM t_VOScript vos WHERE vos.[IsActive] = 1 AND (@a_iVOScriptID IS NULL OR vos.[ID] = @a_iVOScriptID) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Determine all strings that are elligible for recording. -- We store other data with the StringID, such as the VORequestOn time. -- For foreign languages, this is the ImportedOn datetime. -- These values will be used to see what strings require re/recording. ------------------------------------------------------------------------ -- Get Conversation NPC and PC lines INSERT @tStatsInternal ([StringID], [ModuleID], [ResRefID], [StringLanguageID], [StringVariantID], [WordCount], [VORequestedOn], [ReqRecord], [IsReRecord], [IsBlank], [UsedInVO]) SELECT st.[StringID], mrv.[ModuleID], mrv.[ResRefID], @iDevStringLanguageID, 1, st.[WordCount], st.[VORequestOn], 0, 0, CASE WHEN st.[WordCount] = 0 THEN 1 ELSE 0 END AS [IsBlank], CASE WHEN st.[WordCount] > 0 THEN 1 WHEN (LEFT(mrv.[Name], 3) = 'ss_' AND cl.[IsPC] = 0) THEN 1 ELSE 0 END AS [UsedInVO] FROM t_ConversationLine cl JOIN ( SELECT DISTINCT mr.[CurrentModuleResRefVersionID] FROM t_VOScript vos JOIN #tblResults tResults ON vos.[ID] = tResults.[VOScriptID] JOIN t_ModuleResRef mr ON vos.[ResourceModuleID] = mr.[ModuleID] AND vos.[ResourceResRefID] = mr.[ResRefID] AND mr.[CurrentModuleResRefVersionID] IS NOT NULL ) x ON cl.[ModuleResRefVersionID] = x.[CurrentModuleResRefVersionID] JOIN t_ModuleResRefVersion mrv ON cl.[ModuleResRefVersionID] = mrv.[ID] JOIN t_StringText st ON cl.[TextStringID] = st.[StringID] AND cl.[ModuleResRefVersionID] = st.[ModuleResRefVersionID] AND ( -- NOTE! Return blank english text when looking for foreign data. -- The foreign data may not be blank, but will be filtered correctly -- on its own. @bForeignStringLanguage = 1 OR @a_bIncludeBlankLines = 1 OR (LEFT(mrv.[Name], 3) = 'ss_' AND cl.[IsPC] = 0) OR st.[WordCount] > 0) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Note: when there are sound sets and other strings, you will -- load them into @tStatsInternal at this point -- (these were nonexistent at time of development) ------------------------------------------------------------------------ -- When loading stats for a foreign language, load the available -- strings into @tStatsInternal ------------------------------------------------------------------------ IF (@bForeignStringLanguage = 1) BEGIN DECLARE @tLangInfo TABLE ( StringLanguageID int, StringVariantID int, StringLanguageVariantVersionID int ) INSERT @tLangInfo SELECT StringLanguageID, StringVariantID, CurrentStringLanguageVariantVersionID FROM t_StringLanguageVariant WHERE [StringLanguageID] = @a_iStringLanguageID INSERT @tStatsInternal ([StringID], [ModuleID], [ResRefID], [StringLanguageID], [StringVariantID], [VORequestedOn], [ReqRecord], [IsReRecord], [WordCount], [IsBlank], [UsedInVO]) SELECT slvt.[StringID], vossi.[ModuleID], vossi.[ResRefID], slv.[StringLanguageID], slv.[StringVariantID], sis.[ImportedOn], 0, 0, -1, slvt.[IsBlank], 1 -- FROM t_StringLanguageVariant slv FROM @tLangInfo slv JOIN t_StringLanguageVariantText slvt WITH ( NOLOCK ) ON slv.[StringLanguageVariantVersionID] = slvt.[StringLanguageVariantVersionID] -- ON slv.[StringLanguageID] = @a_iStringLanguageID -- AND slv.[CurrentStringLanguageVariantVersionID] = slvt.[StringLanguageVariantVersionID] JOIN t_StringImportSession sis WITH ( NOLOCK ) ON slvt.[StringImportSessionID] = sis.[ID] JOIN @tStatsInternal vossi ON slvt.[StringID] = vossi.[StringID] WHERE @a_bIncludeBlankLines = 1 OR slvt.[IsBlank] = 0 OR (vossi.[IsBlank] = 1 AND vossi.[UsedInVO] = 1 AND slv.[StringVariantID] = 1) -- these would be soundset placeholder lines. Only take the male versions. SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- The English strings in @tStatsInternal contian blanks when -- adding in the foreign strings. We now remove those blank strings -- if applicable, before calculating the stats. ------------------------------------------------------------------------ DELETE ts FROM @tStatsInternal ts WHERE @a_bIncludeBlankLines = 0 AND [IsBlank] = 1 AND [UsedInVO] = 0 SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- For all of our strings, determine which ones require recording, -- and which ones are Re-Records (have been Recorded before). ------------------------------------------------------------------------ IF (@bForeignStringLanguage = 0) BEGIN -- Calculate English String ReqRecords and ReRecords UPDATE vossi SET [ReqRecord] = 1, [IsReRecord] = CASE WHEN voRecorded.[StringID] IS NULL THEN 0 ELSE 1 END FROM @tStatsInternal vossi JOIN t_VOScriptLineCharacterInternal voslci ON vossi.[StringID] = voslci.[StringID] AND voslci.[SPID] = @@SPID JOIN t_VOScript vos ON voslci.ResourceModuleID = vos.ResourceModuleID AND voslci.ResourceResRefID = vos.ResourceResRefID AND voslci.CharacterModuleID = vos.CharacterModuleID AND voslci.CharacterResRefID = vos.CharacterResRefID LEFT OUTER JOIN ( SELECT vosi.[VOScriptID] AS [RecordedVOScriptID], vosis.[StringID], vosis.[CompareDate] FROM t_VOScriptInstanceString vosis JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] AND vosis.[Active] = 'A' AND vosis.[Status] = 'P' AND vosis.[IsForeign] = 0 ) voRecorded ON vos.[ID] = voRecorded.[RecordedVOScriptID] AND vossi.[StringID] = voRecorded.[StringID] WHERE vossi.[StringLanguageID] = @iDevStringLanguageID AND (voRecorded.[StringID] IS NULL OR vossi.[VORequestedOn] > voRecorded.[CompareDate]) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ELSE BEGIN -- Calculate Foreign String ReqRecords and ReRecords UPDATE vossi SET [ReqRecord] = 1, [IsReRecord] = CASE WHEN voRecorded.[StringID] IS NULL THEN 0 ELSE 1 END FROM @tStatsInternal vossi JOIN t_VOScriptLineCharacterInternal voslci ON vossi.[StringID] = voslci.[StringID] AND voslci.[SPID] = @@SPID JOIN t_VOScript vos ON voslci.ResourceModuleID = vos.ResourceModuleID AND voslci.ResourceResRefID = vos.ResourceResRefID AND voslci.CharacterModuleID = vos.CharacterModuleID AND voslci.CharacterResRefID = vos.CharacterResRefID LEFT JOIN ( SELECT vosi.[VOScriptID] AS [RecordedVOScriptID], vosis.[StringID], vosis.[CompareDate], slv.[StringLanguageID], slv.[StringVariantID] FROM t_VOScriptInstanceString vosis JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] JOIN t_StringLanguageVariantVersion slvv ON slvv.[ID] = vosis.[StringLanguageVariantVersionID] JOIN t_StringLanguageVariant slv ON slvv.[StringLanguageVariantID] = slv.[ID] AND slv.[StringLanguageID] = @a_iStringLanguageID WHERE vosis.[Active] = 'A' AND vosis.[Status] = 'P' AND vosis.[IsForeign] = 1 ) voRecorded ON vossi.[StringID] = voRecorded.[StringID] AND vossi.[StringLanguageID] = voRecorded.[StringLanguageID] AND vossi.[StringVariantID] = voRecorded.[StringVariantID] AND vos.[ID] = voRecorded.[RecordedVOScriptID] WHERE vossi.[StringLanguageID] = @a_iStringLanguageID AND (voRecorded.[StringID] IS NULL OR vossi.[VORequestedOn] > voRecorded.[CompareDate]) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Calculate English Line Count of each VO Script's Resource ------------------------------------------------------------------------ UPDATE tr SET [LineCountEnglish] = vEngLineCount.[LineCount], [LineCount] = CASE @bForeignStringLanguage WHEN 0 THEN vEngLineCount.[LineCount] ELSE 0 END FROM #tblResults tr JOIN ( SELECT vos.[ID] AS [VOScriptID], COUNT(*) as [LineCount] FROM t_VOScript vos JOIN @tStatsInternal vossi ON vos.[IsActive] = 1 AND vos.[ResourceModuleID] = vossi.[ModuleID] AND vos.[ResourceResRefID] = vossi.[ResRefID] AND vossi.[StringLanguageID] = @iDevStringLanguageID GROUP BY vos.[ID] ) vEngLineCount ON tr.[VOScriptID] = vEngLineCount.[VOScriptID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Calculate the following per VO Script: -- o Number of Character's Lines (in English) -- o VO Script Lines Requiring Recording (in English) -- (excludes lines that are being re-recorded) -- o VO Script Lines Requiring Re-Recording (in English) ------------------------------------------------------------------------ UPDATE tr SET [CharacterWordCountEnglish] = vLineCount.[WordCount], [CharacterLineCountEnglish] = vLineCount.[LineCount], [CharacterLineCount] = CASE @bForeignStringLanguage WHEN 0 THEN vLineCount.[LineCount] ELSE 0 END, [RecordCount] = CASE @bForeignStringLanguage WHEN 0 THEN vLineCount.[RecordLineCount] ELSE 0 END, [ReRecordCount] = CASE @bForeignStringLanguage WHEN 0 THEN vLineCount.[ReRecordLineCount] ELSE 0 END FROM #tblResults tr JOIN ( SELECT vos.[ID] AS [VOScriptID], SUM(vossi.[WordCount]) as [WordCount], COUNT(*) AS [LineCount], COUNT( CASE WHEN (vossi.[ReqRecord] = 1 AND vossi.[IsReRecord] = 0) THEN 1 ELSE NULL END) AS [RecordLineCount], COUNT( CASE vossi.[IsReRecord] WHEN 0 THEN NULL ELSE 1 END) AS [ReRecordLineCount] FROM t_VOScript vos JOIN @tStatsInternal vossi ON vos.[IsActive] = 1 AND vos.[ResourceModuleID] = vossi.[ModuleID] AND vos.[ResourceResRefID] = vossi.[ResRefID] AND vossi.[StringLanguageID] = @iDevStringLanguageID -- English JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND voslci.[StringID] = vossi.[StringID] AND voslci.[CharacterModuleID] = vos.[CharacterModuleID] AND voslci.[CharacterResRefID] = vos.[CharacterResRefID] GROUP BY vos.[ID] ) vLineCount ON tr.[VOScriptID] = vLineCount.[VOScriptID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Calculate Foreign Line Counts where applicable -- o Character's Lines -- o Lines Requiring Recording -- (excludes lines that are being re-recorded) -- o Lines Requiring Re-Recording ------------------------------------------------------------------------ IF (@bForeignStringLanguage = 1) BEGIN -- FOREIGN Resource LineCount per VO Script UPDATE tr SET [LineCount] = vForeignResLineCount.[LineCount] FROM #tblResults tr JOIN ( SELECT vos.[ID] AS [VOScriptID], COUNT(*) as [LineCount] FROM t_VOScript vos JOIN @tStatsInternal vossi ON vos.[IsActive] = 1 AND vos.[ResourceModuleID] = vossi.[ModuleID] AND vos.[ResourceResRefID] = vossi.[ResRefID] AND vossi.[StringLanguageID] = @a_iStringLanguageID GROUP BY vos.[ID] ) vForeignResLineCount ON tr.[VOScriptID] = vForeignResLineCount.[VOScriptID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- FOREIGN Character Lines per VO Script -- FOREIGN Re/Recording Line Counts UPDATE tr SET [CharacterLineCount] = vForeignCharLineCount.[LineCount], [RecordCount] = vForeignCharLineCount.[RecordLineCount], [ReRecordCount] = vForeignCharLineCount.[ReRecordLineCount] FROM #tblResults tr JOIN ( SELECT vos.[ID] AS [VOScriptID], COUNT(*) AS [LineCount], COUNT( CASE WHEN (vossi.[ReqRecord] = 1 AND vossi.[IsReRecord] = 0) THEN 1 ELSE NULL END) AS [RecordLineCount], COUNT( CASE vossi.[IsReRecord] WHEN 0 THEN NULL ELSE 1 END) AS [ReRecordLineCount] FROM t_VOScript vos JOIN @tStatsInternal vossi ON vos.[IsActive] = 1 AND vos.[ResourceModuleID] = vossi.[ModuleID] AND vos.[ResourceResRefID] = vossi.[ResRefID] AND vossi.[StringLanguageID] = @a_iStringLanguageID JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND voslci.[StringID] = vossi.[StringID] AND voslci.[CharacterModuleID] = vos.[CharacterModuleID] AND voslci.[CharacterResRefID] = vos.[CharacterResRefID] GROUP BY vos.[ID] ) vForeignCharLineCount ON tr.[VOScriptID] = vForeignCharLineCount.[VOScriptID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Return results ------------------------------------------------------------------------ IF @a_bVerbose = 0 BEGIN SELECT [VOScriptID], [LineCountEnglish], [LineCount], [CharacterWordCountEnglish], [CharacterLineCountEnglish], [CharacterLineCount], [RecordCount], [ReRecordCount] FROM #tblResults END ELSE BEGIN SELECT R.[VOScriptID], MRRVR.[Name] AS [ResourceName], MRRVR.[Folder] AS [ResourceFolder], MRRVC.[Name] AS [CharacterResourceName], CH.[Name] AS [CharacterName], R.[LineCountEnglish], R.[LineCount], R.[CharacterWordCountEnglish], R.[CharacterLineCountEnglish], R.[CharacterLineCount], R.[RecordCount], R.[ReRecordCount] FROM #tblResults R JOIN t_VOScript VOS ON R.[VOScriptID] = VOS.[ID] JOIN t_ModuleResRef MRRR ON VOS.[ResourceModuleID] = MRRR.[ModuleID] AND VOS.[ResourceResRefID] = MRRR.[ResRefID] JOIN t_ModuleResRefVersion MRRVR ON MRRR.[CurrentModuleResRefVersionID] = MRRVR.[ID] JOIN t_ModuleResRef MRRC ON VOS.[CharacterModuleID] = MRRC.[ModuleID] AND VOS.[CharacterResRefID] = MRRC.[ResRefID] JOIN t_Character CH ON MRRC.[CurrentModuleResRefVersionID] = CH.[ModuleResRefVersionID] JOIN t_ModuleResRefVersion MRRVC ON MRRC.[CurrentModuleResRefVersionID] = MRRVC.[ID] END ------------------------------------------------------------------------ -- Dump our temp objects ------------------------------------------------------------------------ DROP TABLE #tblResults SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Remove our temp data ------------------------------------------------------------------------ DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetVOScriptStats] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetVOScriptStringsRequiringForeignRecording ------------------------------------------------------------------------ -- Owned By: Christopher Christou -- Created On: November 03, 2008 -- Description: Returns the foreign strings that require recording -- for a VO Script, and a set of Foreign Languages. -- -- Parameters -- a_iVOScriptID - IN - VOScriptID to look up data for -- - Current Version of Conversation Resource will be used -- - Cannot be NULL -- a_sStringLanguageIDs - IN -- Comma delimeted set of StringLanguageIDs that the script data should be retrieved for. -- a_bIncludeBlankLines - IN -- - set to 1 (true) to include blank lines in the count -- - set to 0 (false) to exclude blank lines in the count -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetVOScriptStringsRequiringForeignRecording] @a_iVOScriptID int, @a_sStringLanguageIDs varchar(255), @a_bIncludeBlankLines bit AS SET NOCOUNT ON DECLARE @iError int DECLARE @tStringLanguageIDs TABLE ( [ID] int not null ) ------------------------------------------------------------------------ -- Place desired StringLanguageIDs into @tStringLanguageIDs ------------------------------------------------------------------------ -- Wrap @a_sStringLanguageIDs in commas to make parsing easier SET @a_sStringLanguageIDs = ',' + @a_sStringLanguageIDs + ',' -- Set starting search position DECLARE @iCommaPos INT SET @iCommaPos = 1 -- Look through @a_sStringLanguageIDs and make integers of all values between commas WHILE @iCommaPos < LEN(@a_sStringLanguageIDs) --Don't include the last comma BEGIN INSERT INTO @tStringLanguageIDs VALUES (SUBSTRING( @a_sStringLanguageIDs, @iCommaPos + 1, CHARINDEX(',', @a_sStringLanguageIDs, @iCommaPos + 1) - @iCommaPos - 1)) -- Find the next comma SELECT @iCommaPos = CHARINDEX(',', @a_sStringLanguageIDs, @iCommaPos + 1) END ------------------------------------------------------------------------ -- Map the resource lines to Characters ------------------------------------------------------------------------ -- Then do the mapping EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] @a_iVOScriptID, NULL IF (@iError <> 0) GOTO ON_ERROR -- Then trim data so that all we have are lines for this VOScript's -- resource and character. DELETE voslci FROM t_VOScriptLineCharacterInternal voslci WHERE [SPID] = @@SPID AND NOT EXISTS ( SELECT 1 FROM t_VOScript vos WHERE vos.[ID] = @a_iVOScriptID AND vos.[ResourceModuleID] = voslci.[ResourceModuleID] AND vos.[ResourceResRefID] = voslci.[ResourceResRefID] AND vos.[CharacterModuleID] = voslci.[CharacterModuleID] AND vos.[CharacterResRefID] = voslci.[CharacterResRefID] ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Remove lines that should not be recorded from the consideration set. ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_AdjustVOScriptLineCharacterInternalForStats] IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Look up the Requires Recording datetimestamp for each of these -- character strings. For english this is VORequestOn, and for -- foreign, this is ImportedOn. Store this data locally for now. ------------------------------------------------------------------------ DECLARE @tblStringVORequest TABLE ( [StringID] int, [StringLanguageID] int, [StringVariantID] int, [VORequestOn] datetime NOT NULL, [VORecordedOn] datetime NULL) -- Load Foreign strings (all variants) + ImportedOn dates INSERT INTO @tblStringVORequest ([StringID], [StringLanguageID], [StringVariantID], [VORequestOn]) SELECT slvt.[StringID], slv.[StringLanguageID], slv.[StringVariantID], sis.[ImportedOn] FROM @tStringLanguageIDs slToUse JOIN t_StringLanguageVariant slv ON slToUse.[ID] = slv.[StringLanguageID] JOIN t_StringLanguageVariantText slvt ON slvt.[StringLanguageVariantVersionID] = slv.[CurrentStringLanguageVariantVersionID] AND (@a_bIncludeBlankLines = 1 OR slvt.[IsBlank] = 0) JOIN t_VOScriptLineCharacterInternal voslci ON [SPID] = @@SPID AND slvt.[StringID] = voslci.[StringID] JOIN t_StringImportSession sis ON slvt.[StringImportSessionID] = sis.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR UPDATE voRequest SET voRequest.[VORecordedOn] = vosis.[CompareDate] FROM @tblStringVORequest voRequest JOIN t_VOScriptInstanceString vosis ON voRequest.[StringID] = vosis.[StringID] AND vosis.[Active] = 'A' AND vosis.[Status] = 'P' JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] AND vosi.[VOScriptID] = @a_iVOScriptID JOIN t_StringLanguageVariantVersion slvv ON vosis.[StringLanguageVariantVersionID] = slvv.[ID] JOIN t_StringLanguageVariant slv ON slvv.[StringLanguageVariantID] = slv.[ID] AND slv.[StringLanguageID] = voRequest.[StringLanguageID] AND slv.[StringVariantID] = voRequest.[StringVariantID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Make the Requires Recording Comparison ------------------------------------------------------------------------ SELECT @a_iVOScriptID as [VOScriptID], voslci.[ResourceModuleResRefVersionID] as [ModuleResRefVersionID], voRequest.[StringID], voRequest.[StringLanguageID], voRequest.[StringVariantID] FROM @tblStringVORequest voRequest JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND voRequest.[StringID] = voslci.[StringID] WHERE ( voRequest.[VORecordedOn] IS NULL OR voRequest.[VORequestOn] > voRequest.[VORecordedOn] ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Remove the temp data DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetVOScriptStringsRequiringForeignRecording] TO [bw_db_read] GO GRANT EXECUTE ON [dbo].[bsp_GetVOScriptStringsRequiringForeignRecording] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_GetVOScriptStringsRequiringRecording ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 14, 2007 -- Description: Returns the strings that require recording -- for a script. -- -- Parameters -- a_iVOScriptID - IN - VOScriptID to look up data for -- a_iResourceModuleResRefVersionID - IN - Version of resource -- to look up data on. (if Language is not English, this does not -- matter). Can be set to NULL if the version is not important, -- and the caller wishes to use the current live version. -- a_iStringLanguageID - IN -- The Language that the script data should be retrieved for. -- a_bIncludeBlankLines - IN -- - set to 1 (true) to include blank lines in the count -- - set to 0 (false) to exclude blank lines in the count -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_GetVOScriptStringsRequiringRecording] @a_iVOScriptID int, @a_iResourceModuleResRefVersionID int, @a_iStringLanguageID int, @a_bIncludeBlankLines bit AS SET NOCOUNT ON DECLARE @iError int ------------------------------------------------------------------------ -- If a resource version is not given, look up the current version ------------------------------------------------------------------------ IF (@a_iResourceModuleResRefVersionID IS NULL) BEGIN SELECT @a_iResourceModuleResRefVersionID = mr.[CurrentModuleResRefVersionID] FROM t_VOScript s JOIN t_ModuleResRef mr ON s.[ResourceModuleID] = mr.[ModuleID] AND s.[ResourceResRefID] = mr.[ResRefID] WHERE s.[ID] = @a_iVOScriptID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Map the resource lines to Characters ------------------------------------------------------------------------ -- Then do the mapping EXEC @iError = [dbo].[bsp_DetermineVOScriptLineCharacters] @a_iVOScriptID, @a_iResourceModuleResRefVersionID IF (@iError <> 0) GOTO ON_ERROR -- Then trim data so that all we have are lines for this VOScript's -- resource and character. DELETE voslci FROM t_VOScriptLineCharacterInternal voslci WHERE [SPID] = @@SPID AND NOT EXISTS ( SELECT 1 FROM t_VOScript vos WHERE vos.[ID] = @a_iVOScriptID AND vos.[ResourceModuleID] = voslci.[ResourceModuleID] AND vos.[ResourceResRefID] = voslci.[ResourceResRefID] AND vos.[CharacterModuleID] = voslci.[CharacterModuleID] AND vos.[CharacterResRefID] = voslci.[CharacterResRefID] ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Remove lines that should not be recorded from the consideration set. ------------------------------------------------------------------------ EXEC @iError = [dbo].[bsp_AdjustVOScriptLineCharacterInternalForStats] IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Look up the Requires Recording datetimestamp for each of these -- character strings. For english this is VORequestOn, and for -- foreign, this is ImportedOn. Store this data locally for now. ------------------------------------------------------------------------ DECLARE @tblStringVORequest TABLE ( [StringID] int, [StringLanguageID] int, [StringVariantID] int, [VORequestOn] datetime NOT NULL, [VORecordedOn] datetime NULL) IF (@a_iStringLanguageID = dbo.udf_GetProjectStringLanguageID()) BEGIN -- Load English strings + VORequestOn dates INSERT INTO @tblStringVORequest ([StringID], [StringLanguageID], [StringVariantID], [VORequestOn]) SELECT st.[StringID], 1, 1, st.[VORequestOn] FROM t_StringText st JOIN t_VOScriptLineCharacterInternal voslci ON [SPID] = @@SPID AND st.[StringID] = voslci.[StringID] AND st.[ModuleResRefVersionID] = voslci.[ResourceModuleResRefVersionID] AND st.[StringLanguageVariantID] = 1 AND (@a_bIncludeBlankLines = 1 OR st.[WordCount] > 0) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR UPDATE voRequest SET voRequest.[VORecordedOn] = vosis.[CompareDate] FROM @tblStringVORequest voRequest JOIN t_VOScriptInstanceString vosis ON voRequest.[StringID] = vosis.[StringID] AND vosis.[Active] = 'A' AND vosis.[Status] = 'P' AND vosis.[IsForeign] = 0 JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] AND vosi.[VOScriptID] = @a_iVOScriptID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ELSE BEGIN -- Load Foreign strings (all variants) + ImportedOn dates INSERT INTO @tblStringVORequest ([StringID], [StringLanguageID], [StringVariantID], [VORequestOn]) SELECT slvt.[StringID], slv.[StringLanguageID], slv.[StringVariantID], sis.[ImportedOn] FROM t_StringLanguageVariantText slvt JOIN t_StringImportSession sis ON slvt.[StringImportSessionID] = sis.[ID] AND (@a_bIncludeBlankLines = 1 OR slvt.[IsBlank] = 0) JOIN t_StringLanguageVariant slv ON slvt.[StringLanguageVariantVersionID] = slv.[CurrentStringLanguageVariantVersionID] AND slv.[StringLanguageID] = @a_iStringLanguageID JOIN t_VOScriptLineCharacterInternal voslci ON [SPID] = @@SPID AND slvt.[StringID] = voslci.[StringID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR UPDATE voRequest SET voRequest.[VORecordedOn] = vosis.[CompareDate] FROM @tblStringVORequest voRequest JOIN t_VOScriptInstanceString vosis ON voRequest.[StringID] = vosis.[StringID] AND vosis.[Active] = 'A' AND vosis.[Status] = 'P' JOIN t_VOScriptInstance vosi ON vosis.[VOScriptInstanceID] = vosi.[ID] AND vosi.[VOScriptID] = @a_iVOScriptID JOIN t_StringLanguageVariantVersion slvv ON vosis.[StringLanguageVariantVersionID] = slvv.[ID] JOIN t_StringLanguageVariant slv ON slvv.[StringLanguageVariantID] = slv.[ID] AND slv.[StringLanguageID] = voRequest.[StringLanguageID] AND slv.[StringVariantID] = voRequest.[StringVariantID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Make the Requires Recording Comparison ------------------------------------------------------------------------ SELECT @a_iVOScriptID as [VOScriptID], voslci.[ResourceModuleResRefVersionID] as [ModuleResRefVersionID], voRequest.[StringID], voRequest.[StringLanguageID], voRequest.[StringVariantID] FROM @tblStringVORequest voRequest JOIN t_VOScriptLineCharacterInternal voslci ON voslci.[SPID] = @@SPID AND voRequest.[StringID] = voslci.[StringID] WHERE ( voRequest.[VORecordedOn] IS NULL OR voRequest.[VORequestOn] > voRequest.[VORecordedOn] ) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Remove the temp data DELETE FROM t_VOScriptLineCharacterInternal WHERE [SPID] = @@SPID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_GetVOScriptStringsRequiringRecording] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_InsertStringLanguageVariantText ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 21, 2006 -- Description: Insert a new Foreign Language String. -- Used during Import Sessions. ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_InsertStringLanguageVariantText] @a_iStringLanguageVariantVersionID int, @a_iStringID int, @a_wsText ntext, @a_iStringImportSessionID int AS DECLARE @iError int BEGIN TRANSACTION tranInsertStringLangVarText DECLARE @iPrevStringLanguageVariantVersionID int SET @iPrevStringLanguageVariantVersionID = NULL SELECT @iPrevStringLanguageVariantVersionID = slvv.PreviousStringLanguageVariantVersionID FROM t_StringLanguageVariantVersion slvv WHERE slvv.[ID] = @a_iStringLanguageVariantVersionID SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR IF (@iPrevStringLanguageVariantVersionID IS NOT NULL) BEGIN -- Check the Previous Text. If it matches @a_wsText, then do not add it. IF EXISTS ( SELECT 1 FROM t_StringLanguageVariantText slvt WHERE slvt.[StringLanguageVariantVersionID] = @iPrevStringLanguageVariantVersionID AND slvt.[StringID] = @a_iStringID AND [dbo].[udf_nTextEquals] ( @a_wsText, slvt.[Text] ) = 1 ) BEGIN GOTO ON_AFTER_INSERT END END -- Insert the string. Let the keys do any validation necessary INSERT INTO t_StringLanguageVariantText ([StringLanguageVariantVersionID], [StringID], [Text], [StringImportSessionID], [IsBlank]) VALUES ( @a_iStringLanguageVariantVersionID, @a_iStringID, @a_wsText, @a_iStringImportSessionID, CASE WHEN @a_wsText LIKE '' THEN 1 ELSE 0 END ) SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR --------------------------------------------------------------------- ON_AFTER_INSERT: --------------------------------------------------------------------- COMMIT TRANSACTION tranInsertStringLangVarText return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_InsertStringLanguageVariantText] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_LockResource] @a_iModuleID INT, @a_iRefRefID INT, @a_bLock BIT AS DECLARE @iError int , @iLock int , @iRowCount int BEGIN TRANSACTION tran_bsp_LockResource IF @a_bLock = 1 BEGIN SET @iLock = -1 END ELSE BEGIN SET @iLock = 0 END -- Update the properties on the module res ref UPDATE t_ModuleResRefVersion SET [State] = @iLock FROM t_ModuleResRef mrr WHERE [ID] = mrr.ScratchModuleResRefVersionID AND [State] != @iLock AND mrr.moduleid = @a_iModuleID and mrr.resrefid = @a_iRefRefID SELECT @iError = @@ERROR, @iRowCount = @@ROWCOUNT IF @iRowCount = 0 AND @iError = 0 SET @iError = -1 IF @iError <> 0 GOTO ON_ERROR COMMIT TRANSACTION tran_bsp_LockResource RETURN 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION tran_bsp_LockResource RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_LockResource] TO [bw_db_lock] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_ProcessPendingStringExportHistoryStatus ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: November 16, 2006 -- Description: -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_ProcessPendingStringExportHistoryStatus] AS BEGIN DECLARE @iError int BEGIN TRANSACTION tranProcessPendingExportStatus ------------------------------------------------------------------------ -- Take all Pending New (N) records, and set them as the -- Active records for that StringID. Any other record currently -- marked Active must become flagged as Inactive. ------------------------------------------------------------------------ -- mark peviously current records as inactive UPDATE eh SET eh.[Status] = 'I' FROM t_StringExportHistory eh JOIN t_StringExportHistory ehNew ON eh.[StringID] = ehNew.[StringID] AND ehNew.[Status] = 'N' AND eh.[Status] = 'A' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR -- mark new records as Active and record the effective comparedate UPDATE eh SET eh.[Status] = 'A', eh.[CompareDate] = st.[LastMinorUpdateOn] FROM t_StringExportHistory eh JOIN t_StringText st ON st.[StringID] = eh.[StringID] AND st.[ModuleResRefVersionID] = eh.[ModuleResRefVersionID] WHERE eh.[Status] = 'N' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Take all Pending Delete (X) records, and ensure that there is -- an Active record for that StringID. If not, try to find and set -- one from Inactive (where applicable). ------------------------------------------------------------------------ UPDATE eh SET eh.[Status] = 'A' FROM t_StringExportHistory eh JOIN ( SELECT ehMaxInternal.[StringID], MAX(ehMaxInternal.[StringExportLabelID]) as [MaxLabelID] FROM t_StringExportHistory ehMaxInternal WHERE ehMaxInternal.[Status] = 'I' GROUP BY ehMaxInternal.[StringID] ) ehMax ON eh.[StringID] = ehMax.[StringID] AND eh.[StringExportLabelID] = ehMax.[MaxLabelID] WHERE eh.[StringID] IN ( SELECT ehX.[StringID] FROM t_StringExportHistory ehX WHERE ehX.[Status] = 'X' AND ehX.[StringID] NOT IN ( SELECT ehA.[StringID] FROM t_StringExportHistory ehA WHERE ehA.[StringID] = ehX.[StringID] AND ehA.[Status] = 'A' ) ) SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR UPDATE eh SET eh.[Status] = 'D' FROM t_StringExportHistory eh WHERE eh.[Status] = 'X' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranProcessPendingExportStatus return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_ProcessPendingStringExportHistoryStatus] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_ProcessStringImportData ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 21, 2006 -- Description: After the Import System adds import materials -- into the database, this procedure does all the data -- processing so that everything is ready to be accepted. -- PRECONDITIONS: -- - StringLanguageVariantVersions have been set up for all -- LanguageVariants receiving imported data. The imported -- data is also residing in these new versions. ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_ProcessStringImportData] @a_iStringImportSessionID int, @a_bExcludeNonExportedStrings bit AS DECLARE @iError int BEGIN TRANSACTION tranProcessStringImportData IF (@a_bExcludeNonExportedStrings = 1) BEGIN ------------------------------------------------------------------------ -- Determine if there are any import strings that have never been -- exported. Delete them. We only work on scratch versions. ------------------------------------------------------------------------ DELETE lvt FROM t_StringLanguageVariantText lvt JOIN t_StringLanguageVariant lv ON lv.[ScratchStringLanguageVariantVersionID] = lvt.[StringLanguageVariantVersionID] LEFT OUTER JOIN t_StringExportHistory eh ON eh.[StringID] = lvt.[StringID] AND (eh.[Status] = 'A' OR eh.[Status] = 'I') WHERE lvt.[StringImportSessionID] = @a_iStringImportSessionID AND eh.[StringID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Delete any import string data where there is no change in -- translation from the last one ------------------------------------------------------------------------ DELETE lvt FROM t_StringLanguageVariantText lvt JOIN t_StringLanguageVariant lv ON lvt.[StringLanguageVariantVersionID] = lv.[ScratchStringLanguageVariantVersionID] -- we want to work with scratch data only JOIN t_StringLanguageVariantVersion lvv ON lvt.[StringLanguageVariantVersionID] = lvv.[ID] -- use this to look at the previous import data JOIN t_StringLanguageVariantText lvtPrevious ON lvv.[PreviousStringLanguageVariantVersionID] = lvtPrevious.[StringLanguageVariantVersionID] AND lvt.[StringID] = lvtPrevious.[StringID] AND [dbo].[udf_nTextEquals](lvt.[Text], lvtPrevious.[Text]) = 1 WHERE lvt.[StringImportSessionID] = @a_iStringImportSessionID -- we want to work with this session's work SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- After cutting data from StringLanguageVariantVersions, there -- might be some empty ones sitting around. Remove these. ------------------------------------------------------------------------ -- First, unset the Scratch Version Pointers UPDATE lv SET lv.[ScratchStringLanguageVariantVersionID] = NULL FROM t_StringLanguageVariant lv JOIN t_StringLanguageVariantVersion lvv ON lv.[ScratchStringLanguageVariantVersionID] = lvv.[ID] AND lvv.[StringImportSessionID] = @a_iStringImportSessionID LEFT OUTER JOIN t_StringLanguageVariantText lvt ON lvv.[ID] = lvt.[StringLanguageVariantVersionID] WHERE lvt.[StringLanguageVariantVersionID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR -- Next, remove the scratch Versions DELETE lvv FROM t_StringLanguageVariantVersion lvv LEFT OUTER JOIN t_StringLanguageVariantText lvt ON lvv.[ID] = lvt.[StringLanguageVariantVersionID] WHERE lvv.[StringImportSessionID] = @a_iStringImportSessionID AND lvv.[Status] = 'S' AND lvt.[StringLanguageVariantVersionID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- The Scratch LanguageVariantVersions that we have added data to -- probably will not have all strings in them, we need to add -- these from past versions. ------------------------------------------------------------------------ INSERT INTO t_StringLanguageVariantText ([StringLanguageVariantVersionID], [StringID], [Text], [StringImportSessionID], [IsBlank]) SELECT lvv.[ID], lvtPrevious.[StringID], lvtPrevious.[Text], lvtPrevious.[StringImportSessionID], lvtPrevious.[IsBlank] FROM t_StringLanguageVariant lv JOIN t_StringLanguageVariantVersion lvv ON lv.[ScratchStringLanguageVariantVersionID] = lvv.[ID] -- we only want scratch versions AND lvv.[StringImportSessionID] = @a_iStringImportSessionID -- and scratch versions dealing with our import session JOIN t_StringLanguageVariantText lvtPrevious ON lvv.[PreviousStringLanguageVariantVersionID] = lvtPrevious.[StringLanguageVariantVersionID] LEFT OUTER JOIN t_StringLanguageVariantText lvt ON lvt.[StringLanguageVariantVersionID] = lvv.[ID] AND lvt.[StringID] = lvtPrevious.[StringID] WHERE lvt.[StringID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- The Scratch LanguageVariantVersions that belong to our -- ImportSession are ready to become the current versions. -- Adjust away! -- Steps: -- 1. Set the 'C'urrent status of affected Versions to 'H' istory -- 2. Set the 'S'cratch versions to 'C'urrent -- 3. Set the CurrentVersions to point to the ScratchVersions -- 4. Clear the ScratchVersions ------------------------------------------------------------------------ -- to make this easier, lets make a temp list of the affected StringLanguageVariantIDs DECLARE @tblChangedLanguageVariant TABLE ( [ID] int NOT NULL ) INSERT INTO @tblChangedLanguageVariant ([ID]) SELECT lv.[ID] FROM t_StringLanguageVariant lv JOIN t_StringLanguageVariantVersion lvv ON lv.[ScratchStringLanguageVariantVersionID] = lvv.[ID] AND lvv.[StringImportSessionID] = @a_iStringImportSessionID SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR -- 1. Set the 'C'urrent status of affected Versions to 'H' istory UPDATE lvv SET [Status] = 'H' FROM t_StringLanguageVariantVersion lvv JOIN @tblChangedLanguageVariant clv ON lvv.[StringLanguageVariantID] = clv.[ID] AND lvv.[Status] = 'C' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR -- 2. Set the 'S'cratch versions to 'C'urrent UPDATE lvv SET [Status] = 'C' FROM t_StringLanguageVariantVersion lvv JOIN @tblChangedLanguageVariant clv ON lvv.[StringLanguageVariantID] = clv.[ID] AND lvv.[Status] = 'S' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR -- 3. Set the CurrentVersions to point to the ScratchVersions -- & 4. Clear the ScratchVersions UPDATE lv SET [CurrentStringLanguageVariantVersionID] = [ScratchStringLanguageVariantVersionID], [ScratchStringLanguageVariantVersionID] = NULL -- do this one second FROM t_StringLanguageVariant lv JOIN @tblChangedLanguageVariant clv ON lv.[ID] = clv.[ID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranProcessStringImportData return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_ProcessStringImportData] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_RerecordVOScript ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 21, 2007 -- Description: Marks a string as requiring re-recording. -- -- NOTE: String must have been recorded previously (and is not -- unprinted). Otherwise nothing happens. -- -- Parameters -- @a_iVOScriptID - Script to Re-Record. When re-recording a single -- string, it is still necessary to set the VOScript -- @a_iStringLanguageID - Language that the VO Script is being -- re-recorded in. If InstanceStringID is specified, this value -- must match. -- @a_iVOScriptInstanceStringID - Set as follows: -- o NULL when re-recording a whole VO Script is wanted. -- o InstanceStringID when re-recording a single string is wanted. -- NOTE: String must be presently 'A'ctive. -- @a_sComment - User comment to associate with the ReRecord action -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_RerecordVOScript] @a_iVOScriptID int, @a_iStringLanguageID int, @a_iVOScriptInstanceStringID int, @a_sComment nText AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranRerecordVOScript ------------------------------------------------------------------------ -- Look up the affected VOScriptInstanceString records, and what -- their corresponding VORequestOn/ImportOn values are ------------------------------------------------------------------------ DECLARE @tblVOStringRequest TABLE ( [VOScriptInstanceStringID] int NOT NULL, [VORequestOn] datetime NOT NULL ) INSERT INTO @tblVOStringRequest ([VOScriptInstanceStringID], [VORequestOn]) SELECT vosis.[ID] as [VOScriptInstanceStringID], CASE vosis.[IsForeign] WHEN 0 THEN st.[VORequestOn] WHEN 1 THEN sis.[ImportedOn] END AS [VORequestOn] FROM t_VOScriptInstance vosi JOIN t_VOScriptInstanceString vosis -- Filter the VO Script of interest, -- and the active lines from these VO Scripts. -- Also filter the string, where applicable. -- Also filter the Language of interest ON vosi.[ID] = vosis.[VOScriptInstanceID] AND vosi.[VOScriptID] = @a_iVOScriptID AND vosi.[StringLanguageID] = @a_iStringLanguageID AND vosis.[Active] = 'A' AND (@a_iVOScriptInstanceStringID IS NULL OR vosis.[ID] = @a_iVOScriptInstanceStringID) LEFT OUTER JOIN t_StringText st ON vosis.[IsForeign] = 0 AND vosis.[StringID] = st.[StringID] AND vosis.[ModuleResRefVersionID] = st.[ModuleResRefVersionID] AND vosis.[StringLanguageVariantID] = st.[StringLanguageVariantID] LEFT OUTER JOIN t_StringLanguageVariantText slvt ON vosis.[IsForeign] = 1 AND vosis.[StringID] = slvt.[StringID] AND vosis.[StringLanguageVariantVersionID] = slvt.[StringLanguageVariantVersionID] LEFT OUTER JOIN t_StringImportSession sis ON slvt.[StringImportSessionID] = sis.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Update the CompareDate on the records of interest ------------------------------------------------------------------------ UPDATE vosis SET [CompareDate] = DATEADD(ms, -5, tvoReq.[VORequestOn]) FROM @tblVOStringRequest tvoReq JOIN t_VOScriptInstanceString vosis ON tvoReq.[VOScriptInstanceStringID] = vosis.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Add new InstanceStringStatus records ------------------------------------------------------------------------ INSERT INTO t_VOScriptInstanceStringStatus ([VOScriptInstanceStringID], [Active], [Action], [CompareDate], [Revision], [Comment]) SELECT vosis.[ID], 'A', 'R', vosis.[CompareDate], vosis.[Revision], @a_sComment FROM @tblVOStringRequest tvoReq JOIN t_VOScriptInstanceString vosis ON tvoReq.[VOScriptInstanceStringID] = vosis.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranRerecordVOScript SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_RerecordVOScript] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_RestoreResourceVersion] @a_iVersionID int AS declare @iNewVersionID int declare @iError int set @iError = 0 -- Start the main transaction BEGIN TRANSACTION tran_bsp_RestoreResourceVersion -- If the current version is null then we are restoring a deleted resource -- We need to set the current version first to put it active again UPDATE t_ModuleResRefVersion SET Status = 'C' FROM t_ModuleResRef mrr WHERE t_ModuleResRefVersion.ID = @a_iVersionID AND mrr.moduleid = t_ModuleResRefVersion.moduleid and mrr.resrefid = t_ModuleResRefVersion.resrefid and mrr.CurrentModuleResRefVersionID IS NULL if (@@ERROR <> 0) GOTO ON_ERROR UPDATE t_ModuleResRef SET CurrentModuleResRefVersionID = @a_iVersionID FROM t_ModuleResRefVersion mrrv WHERE mrrv.id = @a_iVersionID and mrrv.moduleid = t_ModuleResRef.moduleid and mrrv.resrefid = t_ModuleResRef.resrefid and t_ModuleResRef.CurrentModuleResRefVersionID IS NULL if (@@ERROR <> 0) GOTO ON_ERROR exec @iError = dbo.bsp_CheckOutResource NULL, NULL, @a_iVersionID, @iNewVersionID OUTPUT if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tran_bsp_RestoreResourceVersion return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- if (@iError = 0) set @iError = @@ERROR ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_RestoreResourceVersion] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_SetStringReTranslationState ------------------------------------------------------------------------ -- Owned By: Andy W. Desplenter -- Created On: 2009 July 20 -- Description: Adjusts the CompareDate for a specific String ID's -- export history to mark it as either requiring a new export or not. -- -- Parameters -- a_iStringID - String ID to adjust -- a_cAction - Set as follows: -- S - Set for retranslate, -- N - set for DO NOT retranslate, -- U - Unset, restore original CompareDate from t_StringText -- a_sComment - User comment to associate with the ReTranslate action -- -- NOTE: RAISERRORs are commented out because they obscure the return -- code in the current implementation of the eclipse framework. ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_SetStringReTranslationState] @a_iStringID INT, @a_cAction CHAR, @a_sComment NTEXT AS BEGIN SET NOCOUNT ON DECLARE @iError INT DECLARE @iRowCt INT DECLARE @iSEHID INT DECLARE @iMRRVID INT DECLARE @dtOldCompareDate DATETIME DECLARE @dtNewCompareDate DATETIME BEGIN TRANSACTION tran_SetReTranslate -- verify action is one of the supported values IF ( @a_cAction NOT IN ( 'N', 'S', 'U' )) BEGIN SET @iError = -50002 -- RAISERROR ('ERROR: bsp_SetStringReTranslationState: Action must be one of N, U or S', 16, -1) GOTO ON_ERROR END -- verify comment is not null IF (@a_sComment IS NULL) BEGIN SET @iError = -50003 -- RAISERROR ('ERROR: bsp_SetStringReTranslationState: COMMENT cannot be NULL', 16, -1) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Find current StringExportHistory and its CompareDate ------------------------------------------------------------------------ SELECT @iSEHID = seh.[ID], @dtOldCompareDate = seh.[CompareDate], @iMRRVID = seh.[ModuleResRefVersionID] FROM [dbo].[t_StringExportHistory] seh WHERE seh.[StringID] = @a_iStringID AND seh.[Status] = 'A' SELECT @iError = @@ERROR, @iRowCt = @@ROWCOUNT IF (@iError <> 0) GOTO ON_ERROR IF (@iRowCt = 0) BEGIN SET @iError = -50000 -- RAISERROR ('ERROR: bsp_SetStringReTranslationState: No export history found to modify', 16, -1) GOTO ON_ERROR END ------------------------------------------------------------------------ -- Determine new Compare date based upon select action ------------------------------------------------------------------------ IF ( @a_cAction = 'N' ) -- DO NOT retranslate BEGIN -- Set for DO NOT ReTranslate equates to fudging the CompareDate to -- look like the translation is newer than anything in t_StringText SELECT @dtNewCompareDate = GetDate() END ELSE BEGIN IF ( @a_cAction = 'S' ) BEGIN -- Set for ReTranslation equates to fudging the CompareDate to look like there -- is a newer change in t_StringText that needs translation -- Uses [LastMajorUpdateOn] to force export whether or not minor updates -- are included in the next export. SELECT @dtNewCompareDate = DateAdd( ss, -5, [LastMajorUpdateOn] ) FROM t_StringText stExported WHERE stExported.[ModuleResRefVersionID] = @iMRRVID AND stExported.[StringID] = @a_iStringID AND stExported.[StringLanguageVariantID] = 1 SELECT @iError = @@ERROR, @iRowCt = @@ROWCOUNT IF (@iError <> 0) GOTO ON_ERROR -- sanity check that a result was returned when getting UpdateOn from t_StringText IF (@iRowCt <> 1) BEGIN SET @iError = -50004 -- RAISERROR ('ERROR: bsp_SetStringReTranslationState: Failed to get original UpdateOn date', 16, -1) GOTO ON_ERROR END END ELSE BEGIN IF ( @a_cAction = 'U' ) BEGIN -- Unset Retranslate equates to just re-using the original compare date -- get original CompareDate from the relevant MRRV and String in t_StringText SELECT @dtNewCompareDate = [LastMinorUpdateOn] FROM t_StringText stExported WHERE stExported.[ModuleResRefVersionID] = @iMRRVID AND stExported.[StringID] = @a_iStringID AND stExported.[StringLanguageVariantID] = 1 SELECT @iError = @@ERROR, @iRowCt = @@ROWCOUNT IF (@iError <> 0) GOTO ON_ERROR -- sanity check that a result was returned when getting UpdateOn from t_StringText IF (@iRowCt <> 1) BEGIN SET @iError = -50004 -- RAISERROR ('ERROR: bsp_SetStringReTranslationState: Failed to get original UpdateOn date', 16, -1) GOTO ON_ERROR END END ELSE -- redundant, but here for completeness with regard to future expansion BEGIN SET @iError = -50002 -- RAISERROR ('ERROR: bsp_SetStringReTranslationState: Action must be one of N, U or S', 16, -1) GOTO ON_ERROR END END END ------------------------------------------------------------------------ -- Add new Log entry for export history change ------------------------------------------------------------------------ INSERT INTO [t_StringExportHistoryAdjustmentLog] ( [StringExportHistoryID], [Action], [OldCompareDate], [NewCompareDate], [Comment] ) VALUES ( @iSEHID, @a_cAction, @dtOldCompareDate, @dtNewCompareDate, @a_sComment ) SELECT @iError = @@ERROR, @iRowCt = @@ROWCOUNT IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Apply export history change ------------------------------------------------------------------------ UPDATE [t_StringExportHistory] SET [CompareDate] = @dtNewCompareDate WHERE [ID] = @iSEHID AND [CompareDate] = @dtOldCompareDate AND [Status] = 'A' SELECT @iError = @@ERROR, @iRowCt = @@ROWCOUNT IF (@iError <> 0) GOTO ON_ERROR IF (@iRowCt <> 1) BEGIN SET @iError = -50001 -- RAISERROR ('ERROR: bsp_SetStringReTranslationState: Failed to adjust history record', 16, -1) GOTO ON_ERROR END COMMIT TRANSACTION tran_SetReTranslate SET NOCOUNT OFF RETURN 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF RETURN @iError END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_SetStringReTranslationState] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- STORED PROCEDURE: bsp_UndoStringImportSession ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 22, 2006 -- Description: Undoes an Import Session -- If the ImportSession is not Current, Error is returned. -- Non-Current Sessions cannot be undone because it messes up the -- logic when you undo current sessions. -- If the ImportSession is Current, a new version of all affected -- LanguageVariants will be created, using their previous text -- versions. ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_UndoStringImportSession] @a_iStringImportSessionID int AS DECLARE @iError int BEGIN TRANSACTION tranUndoStringImportSession ------------------------------------------------------------------------ -- Check if this ImportSession is Current. If it's not, return error ------------------------------------------------------------------------ IF NOT EXISTS ( SELECT 1 FROM t_StringImportSession WHERE [ID] = @a_iStringImportSessionID AND [Status] = 'C' ) BEGIN SET @iError = -1 GOTO ON_ERROR END ------------------------------------------------------------------------ -- Make a list of the LanguageVariants that are affected by this -- Import Session. ------------------------------------------------------------------------ DECLARE @tblChangedLanguageVariant TABLE ( [ID] int NOT NULL, [PreviousStringLanguageVariantVersionID] int NULL ) INSERT INTO @tblChangedLanguageVariant ([ID], [PreviousStringLanguageVariantVersionID]) SELECT lv.[ID], lvv.[PreviousStringLanguageVariantVersionID] FROM t_StringLanguageVariant lv JOIN t_StringLanguageVariantVersion lvv ON lv.[CurrentStringLanguageVariantVersionID] = lvv.[ID] AND lvv.[StringImportSessionID] = @a_iStringImportSessionID SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Determine if any of these LanguageVariants currently have a scratch -- Version. If so we cannot proceed and must error out. ------------------------------------------------------------------------ IF EXISTS ( SELECT 1 FROM t_StringLanguageVariant lv JOIN @tblChangedLanguageVariant clv ON lv.[ID] = clv.[ID] WHERE lv.[ScratchStringLanguageVariantVersionID] IS NOT NULL ) BEGIN SET @iError = -1 GOTO ON_ERROR END ------------------------------------------------------------------------ -- In case any LangaugeVariants have no previous version, we -- remove their Current Version -- Part 1: unset 'C' Status ------------------------------------------------------------------------ UPDATE lvv SET lvv.[Status] = 'H' FROM t_StringLanguageVariantVersion lvv JOIN @tblChangedLanguageVariant clv ON lvv.[StringLanguageVariantID] = clv.[ID] WHERE lvv.[Status] = 'C' AND lvv.[PreviousStringLanguageVariantVersionID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- In case any LangaugeVariants have no previous version, we -- remove their Current Version -- Part 2: clear CurrentStringLanguageVariantVersionIDs ------------------------------------------------------------------------ UPDATE lv SET lv.[CurrentStringLanguageVariantVersionID] = NULL FROM t_StringLanguageVariant lv JOIN @tblChangedLanguageVariant clv ON lv.[ID] = clv.[ID] WHERE clv.[PreviousStringLanguageVariantVersionID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Trim out any LanguageVariants whose versions we just cleared -- from @tblChangedLanguageVariant ------------------------------------------------------------------------ DELETE clv FROM @tblChangedLanguageVariant clv WHERE clv.[PreviousStringLanguageVariantVersionID] IS NULL SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Make new Scratch Language Variant Versions for the remaining -- LanguageVariants. ------------------------------------------------------------------------ INSERT INTO t_StringLanguageVariantVersion ([StringLanguageVariantID], [Status], [PreviousStringLanguageVariantVersionID], [StringImportSessionID]) SELECT lvvPrevious.[StringLanguageVariantID], 'S', lvvPrevious.[PreviousStringLanguageVariantVersionID], lvvPrevious.[StringImportSessionID] FROM @tblChangedLanguageVariant clv JOIN t_StringLanguageVariantVersion lvvPrevious ON clv.[ID] = lvvPrevious.[StringLanguageVariantID] AND clv.[PreviousStringLanguageVariantVersionID] = lvvPrevious.[ID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Set these new records as the Scratch Language Variant Versions ------------------------------------------------------------------------ UPDATE lv SET lv.[ScratchStringLanguageVariantVersionID] = lvv.[ID] FROM t_StringLanguageVariant lv JOIN @tblChangedLanguageVariant clv ON lv.[ID] = clv.[ID] JOIN t_StringLanguageVariantVersion lvv ON lv.[ID] = lvv.[StringLanguageVariantID] AND lvv.[Status] = 'S' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- These Scratch Versions now need text added to them from the -- Previous LanguageVariant Versions ------------------------------------------------------------------------ INSERT INTO t_StringLanguageVariantText ([StringLanguageVariantVersionID], [StringID], [Text], [StringImportSessionID], [IsBlank]) SELECT lv.[ScratchStringLanguageVariantVersionID], lvtPrevious.[StringID], lvtPrevious.[Text], lvtPrevious.[StringImportSessionID], lvtPrevious.[IsBlank] FROM t_StringLanguageVariant lv JOIN @tblChangedLanguageVariant clv ON lv.[ID] = clv.[ID] JOIN t_StringLanguageVariantText lvtPrevious ON clv.[PreviousStringLanguageVariantVersionID] = lvtPrevious.[StringLanguageVariantVersionID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- All of the Scratch Records can now be promoted to Current -- Part 1: Set related Current records as History -- Part 2: Set Scratch Records to Current -- Part 3: Point Current Versions at new Current Versions -- and Erase Scratch Version Pointer ------------------------------------------------------------------------ ------------------------------------------------------------------------ -- Part 1: Set related Current records as History ------------------------------------------------------------------------ UPDATE lvv SET [Status] = 'H' FROM t_StringLanguageVariantVersion lvv JOIN @tblChangedLanguageVariant clv ON lvv.[StringLanguageVariantID] = clv.[ID] AND lvv.[Status] = 'C' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Part 2: Set Scratch Records to Current ------------------------------------------------------------------------ UPDATE lvv SET [Status] = 'C' FROM t_StringLanguageVariantVersion lvv JOIN @tblChangedLanguageVariant clv ON lvv.[StringLanguageVariantID] = clv.[ID] AND lvv.[Status] = 'S' SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Part 3: Point Current Versions at new Current Versions -- and Erase Scratch Version Pointer ------------------------------------------------------------------------ UPDATE lv SET [CurrentStringLanguageVariantVersionID] = [ScratchStringLanguageVariantVersionID], [ScratchStringLanguageVariantVersionID] = NULL -- do this one second FROM t_StringLanguageVariant lv JOIN @tblChangedLanguageVariant clv ON lv.[ID] = clv.[ID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Set the given ImportSession Status to Undo ------------------------------------------------------------------------ UPDATE t_StringImportSession SET [Status] = 'U' WHERE [ID] = @a_iStringImportSessionID SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Set a new Session to Current ------------------------------------------------------------------------ UPDATE s SET [Status] = 'C' FROM t_StringImportSession s JOIN ( SELECT MAX(sis.[ID]) as [MaxSessionID] FROM t_StringImportSession sis WHERE sis.[ID] < @a_iStringImportSessionID AND sis.[Status] = 'H' ) maxs ON s.[ID] = maxs.[MaxSessionID] SELECT @iError = @@ERROR if (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tranUndoStringImportSession return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_UndoStringImportSession] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_UnprintVOScriptInstance ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 21, 2007 -- Description: Marks a VO Script Instance or an Instance String as -- unprinted. -- -- NOTE: Only Strings that are Active will be set to unprinted. -- -- Parameters -- a_iVOScriptInstanceID - Script Instance to Unprint. If -- unprinting a string, this must still be set. -- a_iVOScriptInstanceStringID - Set as follows: -- o NULL when unprinting a whole script instance. -- o InstanceStringID when unprinting a single string. -- a_sComment - User comment to associate with the ReRecord action ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_UnprintVOScriptInstance] @a_iVOScriptInstanceID int, @a_iVOScriptInstanceStringID int, @a_sComment nText AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranUnprintVOScript ------------------------------------------------------------------------ -- Look up the affected VOScriptInstanceString records. ------------------------------------------------------------------------ DECLARE @tblVOStringToUnprint TABLE ( [VOScriptInstanceStringID] int NOT NULL ) INSERT INTO @tblVOStringToUnprint ([VOScriptInstanceStringID]) SELECT vosis.[ID] as [VOScriptInstanceStringID] FROM t_VOScriptInstanceString vosis WHERE [VOScriptInstanceID] = @a_iVOScriptInstanceID AND [Active] = 'A' AND (@a_iVOScriptInstanceStringID IS NULL OR [ID] = @a_iVOScriptInstanceStringID) SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Inactivate these records, and set status to unprinted ------------------------------------------------------------------------ UPDATE vosis SET [Active] = 'I', [Status] = 'U' FROM @tblVOStringToUnprint tvoUnprint JOIN t_VOScriptInstanceString vosis ON tvoUnprint.[VOScriptInstanceStringID] = vosis.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Add new InstanceStringStatus records ------------------------------------------------------------------------ INSERT INTO t_VOScriptInstanceStringStatus ([VOScriptInstanceStringID], [Active], [Action], [CompareDate], [Revision], [Comment]) SELECT vosis.[ID], 'A', 'U', vosis.[CompareDate], vosis.[Revision], @a_sComment FROM @tblVOStringToUnprint tvoUnprint JOIN t_VOScriptInstanceString vosis ON tvoUnprint.[VOScriptInstanceStringID] = vosis.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Set the previous script instance strings as active ------------------------------------------------------------------------ UPDATE vosisPrev SET [Active] = 'A' FROM @tblVOStringToUnprint tvoUnprint JOIN t_VOScriptInstanceString vosis ON tvoUnprint.[VOScriptInstanceStringID] = vosis.[ID] JOIN t_VOScriptInstanceString vosisPrev ON vosis.[PreviousVOScriptInstanceStringID] = vosisPrev.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Add new InstanceStringStatus records for the previous script ------------------------------------------------------------------------ INSERT INTO t_VOScriptInstanceStringStatus ([VOScriptInstanceStringID], [Active], [Action], [CompareDate], [Revision], [Comment]) SELECT vosisPrev.[ID], 'A', 'P', vosisPrev.[CompareDate], vosisPrev.[Revision], @a_sComment FROM @tblVOStringToUnprint tvoUnprint JOIN t_VOScriptInstanceString vosis ON tvoUnprint.[VOScriptInstanceStringID] = vosis.[ID] JOIN t_VOScriptInstanceString vosisPrev ON vosis.[PreviousVOScriptInstanceStringID] = vosisPrev.[ID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Mark the ScriptInstance as Unprinted, if there are no more active -- strings underneath it. ------------------------------------------------------------------------ IF NOT EXISTS (SELECT 1 FROM t_VOScriptInstanceString vosis WHERE vosis.[VOScriptInstanceID] = @a_iVOScriptInstanceID AND [Status] = 'P') BEGIN -- First mark another ScriptInstance as active if necessary UPDATE vosiUpdate SET [Active] = 'A' FROM t_VOScriptInstance vosiUpdate WHERE vosiUpdate.[ID] = ( SELECT MAX(vosi.[ID]) FROM t_VOScriptInstance vosiCurrent JOIN t_VOScriptInstance vosi ON vosiCurrent.[VOScriptID] = vosi.[VOScriptID] AND vosiCurrent.[StringLanguageID] = vosi.[StringLanguageID] AND vosi.[Active] != 'U' AND vosi.[ID] < vosiCurrent.[ID] WHERE vosiCurrent.[ID] = @a_iVOScriptInstanceID AND vosiCurrent.[Active] = 'A' ) -- Second mark this ScriptInstance as Unprinted UPDATE vosi SET [Active] = 'U' FROM t_VOScriptInstance vosi WHERE [ID] = @a_iVOScriptInstanceID SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END COMMIT TRANSACTION tranUnprintVOScript SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_UnprintVOScriptInstance] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_UpdateResourceProperties] @a_sName VARCHAR(32), @a_sFolder VARCHAR(128), @a_iOldModuleID INT, @a_iNewModuleID INT, @a_iNewOwnerModuleID INT, @a_iResRefID INT, @a_iState INT AS DECLARE @iError int , @iRowCount int BEGIN TRANSACTION tran_bsp_UpdateResourceProp -- Test if the module is being changed IF (@a_iOldModuleID <> @a_iNewModuleID) BEGIN -- Create a new module res ref INSERT INTO t_ModuleResRef (ModuleID, ResRefID, CurrentModuleResRefVersionID, ScratchModuleResRefVersionID, CreatedOn, CreatedBy) SELECT @a_iNewModuleID, ResRefID, CurrentModuleResRefVersionID, ScratchModuleResRefVersionID, CreatedOn, CreatedBy FROM t_ModuleResRef WHERE ModuleID = @a_iOldModuleID and ResRefID = @a_iResRefID SET @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Move all of the historical versions over to this module res ref UPDATE t_ModuleResRefVersion SET ModuleID = @a_iNewModuleID WHERE ModuleID = @a_iOldModuleID and ResRefID = @a_iResRefID SET @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Move all of the strings to the new string table UPDATE st SET st.StringTableID = mo.StringTableID FROM t_String st JOIN t_stringversion sv on st.id = sv.stringid join t_moduleresrefversion mrrv on sv.moduleresrefversionid = mrrv.id join t_module mo on mo.id = mrrv.moduleid WHERE mrrv.ModuleID = @a_iNewModuleID and mrrv.ResRefID = @a_iResRefID SET @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Update the VOScript table to refer to the new resource -- The Resource (Conversation/SoundSet) and Character data will both need to be updated UPDATE vos SET [ResourceModuleID] = @a_iNewModuleID FROM t_VOScript vos WHERE vos.[ResourceResRefID] = @a_iResRefID AND vos.[ResourceModuleID] = @a_iOldModuleID SET @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR UPDATE vos SET [CharacterModuleID] = @a_iNewModuleID FROM t_VOScript vos WHERE vos.[CharacterResRefID] = @a_iResRefID AND vos.[CharacterModuleID] = @a_iOldModuleID SET @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR -- Delete the original module res ref DELETE t_ModuleResRef WHERE ModuleID = @a_iOldModuleID and ResRefID = @a_iResRefID SET @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR END -- Update the properties on the module res ref UPDATE t_ModuleResRefVersion SET [Name] = @a_sName, [Folder] = @a_sFolder, [State] = @a_iState, [OwnerModuleID] = @a_iNewOwnerModuleID FROM t_ModuleResRef mrr WHERE [ID] = mrr.ScratchModuleResRefVersionID AND [State] <> -1 AND mrr.moduleid = @a_iNewModuleID and mrr.resrefid = @a_iResRefID SELECT @iError = @@ERROR, @iRowCount = @@ROWCOUNT IF @iRowCount = 0 AND @iError = 0 SET @iError = -1 IF (@iError <> 0) GOTO ON_ERROR COMMIT TRANSACTION tran_bsp_UpdateResourceProp RETURN 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- ROLLBACK TRANSACTION tran_bsp_UpdateResourceProp RETURN @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_UpdateResourceProperties] TO [bw_db_write] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Stored Proc: bsp_UpdateVOScriptListing ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 14, 2007 -- Description: Update the Player field on existing scripts, and -- add new VO Scripts. -- ------------------------------------------------------------------------ CREATE PROCEDURE [dbo].[bsp_UpdateVOScriptListing] AS SET NOCOUNT ON DECLARE @iError int BEGIN TRANSACTION tranUpdateVOScriptListing ------------------------------------------------------------------------ -- Determine all current Conversation/Character interactions. -- These are the currently "Live" VO Scripts. ------------------------------------------------------------------------ CREATE TABLE #tblVOScript ( [ModuleID] int, [ResRefID] int, [ModuleResRefVersionID] int, [Tag] varchar(64), [CharacterModuleID] int, [CharacterResRefID] int ) INSERT INTO #tblVOScript EXEC @iError = [dbo].[bsp_GetConversationTagToCharacterList] NULL, 1, 0 IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Update our current VO Script Listings: -- - Make inactive if VO Scripts are not in the newly calculated -- 'live' VO Scripts. -- - Make active if the VO Scripts are in this list. -- -- Note: This also marks VO Scripts for Deleted Resources inactive. ------------------------------------------------------------------------ UPDATE vos SET vos.[IsActive] = CASE WHEN liveScripts.[ModuleID] IS NULL THEN 0 ELSE 1 END FROM t_VOScript vos LEFT OUTER JOIN (SELECT DISTINCT [ModuleID], [ResRefID], [CharacterModuleID], [CharacterResRefID] FROM #tblVOScript) liveScripts on vos.[ResourceModuleID] = liveScripts.[ModuleID] and vos.[ResourceResRefID] = liveScripts.[ResRefID] and vos.[CharacterModuleID] = liveScripts.[CharacterModuleID] and vos.[CharacterResRefID] = liveScripts.[CharacterResRefID] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Add new VO Scripts to the listing that appear in the "Live" list -- for the first time. ------------------------------------------------------------------------ INSERT INTO t_VOScript ([ResourceModuleID], [ResourceResRefID], [CharacterModuleID], [CharacterResRefID], [PlayerScript], [IsActive]) SELECT liveScripts.[ModuleID], liveScripts.[ResRefID], liveScripts.[CharacterModuleID], liveScripts.[CharacterResRefID], 0, 1 FROM (SELECT DISTINCT [ModuleID], [ResRefID], [CharacterModuleID], [CharacterResRefID] FROM #tblVOScript) liveScripts LEFT OUTER JOIN t_VOScript vos ON vos.[ResourceModuleID] = liveScripts.[ModuleID] AND vos.[ResourceResRefID] = liveScripts.[ResRefID] AND vos.[CharacterModuleID] = liveScripts.[CharacterModuleID] AND vos.[CharacterResRefID] = liveScripts.[CharacterResRefID] WHERE vos.[ID] IS NULL SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Update the PlayerScript field on VO Script Records ------------------------------------------------------------------------ UPDATE vos SET vos.[PlayerScript] = c.[Player] FROM t_VOScript vos JOIN t_ModuleResRef mr ON vos.[CharacterModuleID] = mr.[ModuleID] AND vos.[CharacterResRefID] = mr.[ResRefID] JOIN t_Character c ON mr.[CurrentModuleResRefVersionID] = c.[ModuleResRefVersionID] AND vos.[PlayerScript] != c.[Player] SELECT @iError = @@ERROR IF (@iError <> 0) GOTO ON_ERROR ------------------------------------------------------------------------ -- Done. ------------------------------------------------------------------------ DROP TABLE #tblVOScript COMMIT TRANSACTION tranUpdateVOScriptListing SET NOCOUNT OFF return 0 ------------------------------------------------------------------------ ON_ERROR: ------------------------------------------------------------------------ ROLLBACK TRANSACTION SET NOCOUNT OFF return @iError GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_UpdateVOScriptListing] TO [bw_db_write] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[bsp_ValidateResRefName] @a_iModuleID int, @a_iResRefID int, @a_sResType varchar(4), @a_bUseModuleTree bit, @a_sName varchar(32), @a_bInValid bit OUTPUT AS if @a_iResRefID is null set @a_iResRefID = 0 if (@a_sResType is null or @a_sResType = '') BEGIN select @a_bInValid = case count(name) when 0 then 0 else 1 end from t_moduleResRefVersion mrrv JOIN t_ResRef rr on mrrv.resrefid = rr.id JOIN t_ResRef rr2 on rr.ResType = rr2.ResType AND rr2.id = @a_iResRefID where mrrv.name = @a_sName and mrrv.Status in ('C', 'S') and mrrv.ResRefID <> @a_iResRefID IF (@@ERROR <> 0) GOTO ON_ERROR END ELSE BEGIN select @a_bInValid = case count(name) when 0 then 0 else 1 end from t_moduleResRefVersion mrrv JOIN t_ResRef rr on mrrv.resrefid = rr.id and rr.ResType = @a_sResType where mrrv.name = @a_sName and mrrv.Status in ('C', 'S') and mrrv.ResRefID <> @a_iResRefID IF (@@ERROR <> 0) GOTO ON_ERROR END return 0 --------------------------------------------------------------------- ON_ERROR: --------------------------------------------------------------------- return @@ERROR GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO GRANT EXECUTE ON [dbo].[bsp_ValidateResRefName] TO [bw_db_read] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_ModuleType_Update] ON dbo.t_ModuleType FOR UPDATE AS UPDATE t_ModuleType SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_ResourceTables_Update] ON dbo.t_ResourceTables FOR UPDATE AS UPDATE t_ResourceTables SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_StringExportLabel UPDATE Trigger ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: September 20, 2006 -- Description: Updates the "LastModified.." auditing information. -- ------------------------------------------------------------------------ CREATE TRIGGER [trg_StringExportLabel_Update] ON dbo.t_StringExportLabel FOR UPDATE AS UPDATE t_StringExportLabel SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() FROM inserted WHERE t_StringExportLabel.[ID] = inserted.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_StringTable_Update] ON dbo.t_StringTable FOR UPDATE AS UPDATE t_StringTable SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_StringType_Update] ON dbo.t_StringType FOR UPDATE AS UPDATE t_StringType SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_StringVariant_Update] ON dbo.t_StringVariant FOR UPDATE AS UPDATE t_StringVariant SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_VOScriptInstanceManagement INSERT Trigger ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 13, 2007 -- Description: Changes the Active flag to Inactive when a new Active -- record is inserted. ------------------------------------------------------------------------ CREATE TRIGGER [trg_VOScriptInstanceManagementInsert] ON dbo.t_VOScriptInstanceManagement FOR INSERT AS UPDATE vis SET [Active] = 'I' FROM t_VOScriptInstanceManagement vis JOIN inserted i ON vis.[VOScriptInstanceID] = i.[VOScriptInstanceID] AND vis.[Active] = 'A' AND i.[Active] = 'A' AND vis.[ID] != i.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_ResourceDefinition_Update] ON dbo.t_ResourceDefinition FOR UPDATE AS UPDATE t_ResourceDefinition SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ResType IN (SELECT [ResType] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_ResourceTableRelationship_Update] ON dbo.t_ResourceTableRelationship FOR UPDATE AS UPDATE t_ResourceTableRelationship SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() FROM inserted WHERE t_ResourceTableRelationship.ParentResourceTableID = inserted.ParentResourceTableID AND t_ResourceTableRelationship.ChildResourceTableID = inserted.ChildResourceTableID GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_String_Update] ON dbo.t_String FOR UPDATE AS UPDATE t_String SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_Module_Delete] ON dbo.t_Module FOR DELETE AS DELETE FROM t_ModuleAssociation WHERE ChildModuleID in (SELECT [ID] FROM DELETED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_Module_Update] ON dbo.t_Module FOR UPDATE AS UPDATE t_Module SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_StringSound_Update] ON dbo.t_StringSound FOR UPDATE AS UPDATE t_StringSound SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_ModuleAssociation_Update] ON dbo.t_ModuleAssociation FOR UPDATE AS UPDATE t_ModuleAssociation SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() FROM inserted WHERE t_ModuleAssociation.ParentModuleID = inserted.ParentModuleID AND t_ModuleAssociation.ChildModuleID = inserted.ChildModuleID GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_ModuleResRef_Update] ON dbo.t_ModuleResRef FOR UPDATE AS UPDATE t_ModuleResRef SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() FROM inserted WHERE t_ModuleResRef.ModuleID = inserted.ModuleID AND t_ModuleResRef.ResRefID = inserted.ResRefID GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO -- creating the new trigger to populate the references table on any change to t_script CREATE TRIGGER [dbo].[trg_Script_Update] ON dbo.t_Script AFTER UPDATE, INSERT AS BEGIN -- clean up any old values DELETE FROM t_Script_Reference WHERE [ModuleResRefVersionID] IN ( SELECT [ModuleResRefVersionID] FROM deleted ) -- insert any new calues DECLARE CUR_TODO CURSOR READ_ONLY FOR SELECT [ModuleResRefVersionID] FROM inserted DECLARE @MRRVID int OPEN CUR_TODO FETCH NEXT FROM CUR_TODO INTO @MRRVID WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) BEGIN INSERT INTO t_Script_Reference ( [ModuleResRefVersionID], [ReferencedResRefID] ) SELECT DISTINCT @MRRVID, [ResRefID] FROM dbo.udf_ParseIncludesFromScript(@MRRVID) WHERE [ResRefID] IS NOT NULL END FETCH NEXT FROM CUR_TODO INTO @MRRVID END CLOSE CUR_TODO DEALLOCATE CUR_TODO END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_StringLanguage_Update] ON dbo.t_StringLanguage FOR UPDATE AS UPDATE t_StringLanguage SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_StringLanguageVariant_Update] ON dbo.t_StringLanguageVariant FOR UPDATE AS UPDATE t_StringLanguageVariant SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() WHERE ID IN (SELECT [ID] FROM INSERTED) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- Alter trg_StringText_Update to incorporate the ReRecord flag ------------------------------------------------------------------------ CREATE TRIGGER [trg_StringText_Update] ON dbo.t_StringText FOR UPDATE AS ------------------------------------------------------------------------ -- Always update the record auditing information, and -- Always update the Word Count -- Note: record auditing is not the same as string auditing ------------------------------------------------------------------------ UPDATE t_StringText SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname(), [WordCount] = dbo.udf_WordCount( t_StringText.[Text] ) FROM inserted WHERE t_StringText.StringID = inserted.StringID AND t_StringText.ModuleResRefVersionID = inserted.ModuleResRefVersionID AND t_StringText.StringLanguageVariantID = inserted.StringLanguageVariantID ------------------------------------------------------------------------ -- Update the String Auditing for Minor Edits, only when strings -- are not being copied. ------------------------------------------------------------------------ UPDATE st SET st.[LastMinorUpdateOn] = st.[LastModifiedOn], st.[LastMinorUpdateBy] = st.[LastModifiedBy] FROM t_StringText st JOIN inserted ON st.[StringID] = inserted.[StringID] AND st.[ModuleResRefVersionID] = inserted.[ModuleResRefVersionID] AND st.[StringLanguageVariantID] = inserted.[StringLanguageVariantID] AND inserted.[StringIsCopy] = 0 ------------------------------------------------------------------------ -- Update the String Auditing for Major Edits where applicable, -- only when strings are not being copied. ------------------------------------------------------------------------ UPDATE st SET st.[LastMajorUpdateOn] = st.[LastModifiedOn], st.[LastMajorUpdateBy] = st.[LastModifiedBy] FROM t_StringText st JOIN inserted ON st.[StringID] = inserted.[StringID] AND st.[ModuleResRefVersionID] = inserted.[ModuleResRefVersionID] AND st.[StringLanguageVariantID] = inserted.[StringLanguageVariantID] AND inserted.[StringIsCopy] = 0 AND st.[MinorUpdateCount] = 0 ------------------------------------------------------------------------ -- Update the VORequestOn stamp where applicable, -- only when strings are not being copied. ------------------------------------------------------------------------ UPDATE st SET st.[VORequestOn] = st.[LastModifiedOn], st.[ReRecord] = 0 FROM t_StringText st JOIN inserted ON st.[StringID] = inserted.[StringID] AND st.[ModuleResRefVersionID] = inserted.[ModuleResRefVersionID] AND st.[StringLanguageVariantID] = inserted.[StringLanguageVariantID] AND inserted.[StringIsCopy] = 0 AND st.[ReRecord] = 1 ------------------------------------------------------------------------ -- Flip off the "String Is a Copy" flag where applicable ------------------------------------------------------------------------ UPDATE st SET st.[StringIsCopy] = 0 FROM t_StringText st JOIN inserted ON st.[StringID] = inserted.[StringID] AND st.[ModuleResRefVersionID] = inserted.[ModuleResRefVersionID] AND st.[StringLanguageVariantID] = inserted.[StringLanguageVariantID] AND st.[StringIsCopy] = 1 GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE TRIGGER [trg_StringText_Insert] ON dbo.t_StringText FOR INSERT AS UPDATE t_StringText SET [WordCount] = dbo.udf_WordCount( t_StringText.[Text] ) FROM inserted WHERE t_StringText.StringID = inserted.StringID AND t_StringText.ModuleResRefVersionID = inserted.ModuleResRefVersionID AND t_StringText.StringLanguageVariantID = inserted.StringLanguageVariantID GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_VOSessionInstanceVersion INSERT Trigger ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 13, 2007 -- Description: Changes the Active flag to Inactive when a new Active -- record is inserted. ------------------------------------------------------------------------ CREATE TRIGGER [trg_VOSessionInstanceVersionInsert] ON dbo.t_VOSessionInstanceVersion FOR INSERT AS UPDATE vis SET [Active] = 'I' FROM t_VOSessionInstanceVersion vis JOIN inserted i ON vis.[VOSessionInstanceID] = i.[VOSessionInstanceID] AND vis.[Active] = 'A' AND i.[Active] = 'A' AND vis.[ID] != i.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_VOSessionVersion INSERT Trigger ------------------------------------------------------------------------ -- Owned By: Chris Mihalick -- Created On: May 15, 2008 -- Description: Changes the Active flag to Inactive when a new Active -- record is inserted. ------------------------------------------------------------------------ CREATE TRIGGER [trg_VOSessionVersionInsert] ON dbo.t_VOSessionVersion FOR INSERT AS UPDATE vis SET [Active] = 'I' FROM t_VOSessionVersion vis JOIN inserted i ON vis.[VOSessionID] = i.[VOSessionID] AND vis.[Active] = 'A' AND i.[Active] = 'A' AND vis.[ID] != i.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_VOScriptInstance INSERT Trigger ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 13, 2007 -- Description: Changes the Active flag to Inactive when a new Active -- record is inserted. ------------------------------------------------------------------------ CREATE TRIGGER [trg_VOScriptInstanceInsert] ON dbo.t_VOScriptInstance FOR INSERT AS UPDATE vis SET [Active] = 'I' FROM t_VOScriptInstance vis JOIN inserted i ON vis.[VOScriptID] = i.[VOScriptID] AND vis.[StringLanguageID] = i.[StringLanguageID] AND vis.[Active] = 'A' AND i.[Active] = 'A' AND vis.[ID] != i.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_VOScriptInstanceString INSERT Trigger ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 13, 2007 -- Description: Changes the Active flag to Inactive when a new Active -- record is inserted. ------------------------------------------------------------------------ CREATE TRIGGER [trg_VOScriptInstanceStringInsert] ON dbo.t_VOScriptInstanceString FOR INSERT AS UPDATE vosis SET [Active] = 'I' FROM t_VOScriptInstanceString vosis JOIN inserted i ON vosis.[StringID] = i.[StringID] AND vosis.[Active] = 'A' AND i.[Active] = 'A' AND vosis.[ID] = i.[PreviousVOScriptInstanceStringID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_VOScriptInstanceString UPDATE Trigger ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 13, 2007 -- Description: Updates the "Last Modified" audit information -- ------------------------------------------------------------------------ CREATE TRIGGER [dbo].[trg_VOScriptInstanceStringUpdate] ON [dbo].[t_VOScriptInstanceString] FOR UPDATE AS UPDATE vosis SET [LastModifiedOn] = GetDate(), [LastModifiedBy] = suser_sname() FROM t_VOScriptInstanceString vosis JOIN inserted i ON vosis.[ID] = i.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ------------------------------------------------------------------------ -- t_VOScriptInstanceStringStatus INSERT Trigger ------------------------------------------------------------------------ -- Owned By: Chris Christou -- Created On: February 13, 2007 -- Description: Changes the old Active Flag to Inactive when -- another record has become Active -- ------------------------------------------------------------------------ CREATE TRIGGER [trg_VOScriptInstanceStringStatus_Insert] ON dbo.t_VOScriptInstanceStringStatus FOR INSERT AS UPDATE iss SET [Active] = 'I' FROM t_VOScriptInstanceStringStatus iss JOIN inserted i ON iss.[VOScriptInstanceStringID] = i.[VOScriptInstanceStringID] AND iss.[Active] = 'A' AND i.[Active] = 'A' AND iss.[ID] != i.[ID] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO