public bool Run(params object[] args) { NWPlaceable container = (Object.OBJECT_SELF); NWPlayer oPC = (_.GetLastDisturbed()); NWItem oItem = (_.GetInventoryDisturbItem()); int type = _.GetInventoryDisturbType(); if (type == NWScript.INVENTORY_DISTURB_TYPE_ADDED) { container.AssignCommand(() => _.ActionGiveItem(oItem.Object, oPC.Object)); return(true); } int overflowItemID = oItem.GetLocalInt("TEMP_OVERFLOW_ITEM_ID"); PCOverflowItem overflowItem = _data.Get <PCOverflowItem>(overflowItemID); _data.SubmitDataChange(overflowItem, DatabaseActionType.Delete); oItem.DeleteLocalInt("TEMP_OVERFLOW_ITEM_ID"); if (!container.InventoryItems.Any()) { container.Destroy(); } return(true); }
public bool Run(params object[] args) { NWPlaceable container = NWPlaceable.Wrap(Object.OBJECT_SELF); NWPlayer oPC = NWPlayer.Wrap(_.GetLastDisturbed()); NWItem oItem = NWItem.Wrap(_.GetInventoryDisturbItem()); int type = _.GetInventoryDisturbType(); if (type == INVENTORY_DISTURB_TYPE_ADDED) { container.AssignCommand(() => _.ActionGiveItem(oItem.Object, oPC.Object)); return(true); } int overflowItemID = oItem.GetLocalInt("TEMP_OVERFLOW_ITEM_ID"); PCOverflowItem overflowItem = _db.PCOverflowItems.Single(x => x.PCOverflowItemID == overflowItemID); _db.PCOverflowItems.Remove(overflowItem); _db.SaveChanges(); oItem.DeleteLocalInt("TEMP_OVERFLOW_ITEM_ID"); if (container.InventoryItems.Count <= 0) { container.Destroy(); } return(true); }
public static void RemoveCardFromCollection(int index, NWItem collection) { // removes the card at index card, creating a card object with the right variable in the player's inventory. // First check that the card is not in the deck. for (int ii = 1; ii <= 10; ii++) { int cardInDeck = collection.GetLocalInt("DECK_" + ii); if (cardInDeck == index) { _.SendMessageToPC(_.GetItemPossessor(collection), "You cannot remove a card that's in your play deck."); return; } } // All good - extract it. NWItem card = _.CreateItemOnObject("pazaakcard", _.GetItemPossessor(collection)); card.SetLocalInt("PAZAAK_CARD_TYPE", collection.GetLocalInt("CARD_" + index)); card.Name = "Pazaak Card (" + Display(collection.GetLocalInt("CARD_" + index)) + ")"; collection.DeleteLocalInt("CARD_" + index); return; }
public void Main() { NWPlaceable container = (NWGameObject.OBJECT_SELF); NWPlayer oPC = (_.GetLastDisturbed()); NWItem oItem = (_.GetInventoryDisturbItem()); int type = _.GetInventoryDisturbType(); if (type == _.INVENTORY_DISTURB_TYPE_ADDED) { container.AssignCommand(() => _.ActionGiveItem(oItem.Object, oPC.Object)); return; } Guid overflowItemID = new Guid(oItem.GetLocalString("TEMP_OVERFLOW_ITEM_ID")); PCOverflowItem overflowItem = DataService.PCOverflowItem.GetByID(overflowItemID); DataService.SubmitDataChange(overflowItem, DatabaseActionType.Delete); oItem.DeleteLocalInt("TEMP_OVERFLOW_ITEM_ID"); if (!container.InventoryItems.Any()) { container.Destroy(); } }
public void Main() { NWPlayer oPC = (_.GetLastDisturbed()); NWItem item = (_.GetInventoryDisturbItem()); NWPlaceable container = (NWGameObject.OBJECT_SELF); int disturbType = _.GetInventoryDisturbType(); var structureID = new Guid(container.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = DataService.PCBaseStructure.GetByID(structureID); var baseStructure = DataService.BaseStructure.GetByID(structure.BaseStructureID); int itemLimit = baseStructure.Storage + structure.StructureBonus; int itemCount = container.InventoryItems.Count(); string itemResref = item.Resref; if (disturbType == _.INVENTORY_DISTURB_TYPE_ADDED) { if (_.GetHasInventory(item) == _.TRUE) { item.SetLocalInt("RETURNING_ITEM", _.TRUE); ItemService.ReturnItem(oPC, item); oPC.SendMessage(ColorTokenService.Red("Containers cannot currently be stored inside banks.")); return; } if (itemCount > itemLimit) { ItemService.ReturnItem(oPC, item); oPC.SendMessage(ColorTokenService.Red("No more items can be placed inside.")); } else if (item.BaseItemType == _.BASE_ITEM_GOLD) { ItemService.ReturnItem(oPC, item); oPC.SendMessage(ColorTokenService.Red("Credits cannot be placed inside.")); } else { PCBaseStructureItem itemEntity = new PCBaseStructureItem { ItemName = item.Name, ItemResref = itemResref, ItemTag = item.Tag, PCBaseStructureID = structureID, ItemGlobalID = item.GlobalID.ToString(), ItemObject = SerializationService.Serialize(item) }; DataService.SubmitDataChange(itemEntity, DatabaseActionType.Insert); MessageHub.Instance.Publish(new OnStoreStructureItem(oPC, itemEntity)); } } else if (disturbType == _.INVENTORY_DISTURB_TYPE_REMOVED) { if (item.GetLocalInt("RETURNING_ITEM") == _.TRUE) { item.DeleteLocalInt("RETURNING_ITEM"); } else { var dbItem = DataService.PCBaseStructureItem.GetByItemGlobalID(item.GlobalID.ToString()); DataService.SubmitDataChange(dbItem, DatabaseActionType.Delete); MessageHub.Instance.Publish(new OnRemoveStructureItem(oPC, dbItem)); } } oPC.SendMessage(ColorTokenService.White("Item Limit: " + itemCount + " / ") + ColorTokenService.Red(itemLimit.ToString())); }
public bool Run(params object[] args) { int type = _.GetInventoryDisturbType(); if (type != INVENTORY_DISTURB_TYPE_ADDED) { return(true); } NWPlaceable device = Object.OBJECT_SELF; NWPlayer player = _.GetLastDisturbed(); NWItem item = _.GetInventoryDisturbItem(); var componentIP = item.ItemProperties.FirstOrDefault(x => _.GetItemPropertyType(x) == (int)CustomItemPropertyType.ComponentType); // Not a component. Return the item. if (componentIP == null) { ItemService.ReturnItem(player, item); player.FloatingText("You cannot scrap this item."); return(false); } // Item is a component but it was crafted. Cannot scrap crafted items. if (!string.IsNullOrWhiteSpace(item.GetLocalString("CRAFTER_PLAYER_ID"))) { ItemService.ReturnItem(player, item); player.FloatingText("You cannot scrap crafted items."); return(false); } // Remove the item properties foreach (var ip in item.ItemProperties) { var ipType = _.GetItemPropertyType(ip); if (ipType != (int)CustomItemPropertyType.ComponentType) { _.RemoveItemProperty(item, ip); } } // Remove local variables (except the global ID) int varCount = NWNXObject.GetLocalVariableCount(item); for (int index = varCount - 1; index >= 0; index--) { var localVar = NWNXObject.GetLocalVariable(item, index); if (localVar.Key != "GLOBAL_ID") { switch (localVar.Type) { case LocalVariableType.Int: item.DeleteLocalInt(localVar.Key); break; case LocalVariableType.Float: item.DeleteLocalFloat(localVar.Key); break; case LocalVariableType.String: item.DeleteLocalString(localVar.Key); break; case LocalVariableType.Object: item.DeleteLocalObject(localVar.Key); break; case LocalVariableType.Location: item.DeleteLocalLocation(localVar.Key); break; default: throw new ArgumentOutOfRangeException(); } } } if (!item.Name.Contains("(SCRAPPED)")) { item.Name = item.Name + " (SCRAPPED)"; } device.AssignCommand(() => { _.ActionGiveItem(item, player); }); return(true); }
public bool Run(params object[] args) { NWPlaceable terminal = Object.OBJECT_SELF; int bankID = terminal.GetLocalInt("BANK_ID"); if (bankID <= 0) { return(false); } NWPlayer player = _.GetLastDisturbed(); NWItem item = _.GetInventoryDisturbItem(); int disturbType = _.GetInventoryDisturbType(); int itemCount = terminal.InventoryItems.Count(); int itemLimit = terminal.GetLocalInt("BANK_LIMIT"); if (itemLimit <= 0) { itemLimit = 20; } if (disturbType == INVENTORY_DISTURB_TYPE_ADDED) { if (_.GetHasInventory(item) == TRUE) { item.SetLocalInt("RETURNING_ITEM", TRUE); _item.ReturnItem(player, item); player.SendMessage(_color.Red("Containers cannot currently be stored inside banks.")); return(false); } if (itemCount > itemLimit) { _item.ReturnItem(player, item); player.SendMessage(_color.Red("No more items can be placed inside.")); } else { BankItem itemEntity = new BankItem { ItemName = item.Name, ItemTag = item.Tag, ItemResref = item.Resref, ItemID = item.GlobalID.ToString(), ItemObject = _serialization.Serialize(item), BankID = bankID, PlayerID = player.GlobalID, DateStored = DateTime.UtcNow }; _data.SubmitDataChange(itemEntity, DatabaseActionType.Insert); } } else if (disturbType == INVENTORY_DISTURB_TYPE_REMOVED) { if (item.GetLocalInt("RETURNING_ITEM") == TRUE) { item.DeleteLocalInt("RETURNING_ITEM"); } else { var record = _data.Single <BankItem>(x => x.ItemID == item.GlobalID.ToString()); _data.SubmitDataChange(record, DatabaseActionType.Delete); } } player.SendMessage(_color.White("Item Limit: " + (itemCount > itemLimit ? itemLimit : itemCount) + " / ") + _color.Red("" + itemLimit)); return(true); }
private static void OnModuleAcquireItem() { NWItem item = _.GetModuleItemAcquired(); item.DeleteLocalInt("STORE_SERVICE_IS_STORE_ITEM"); }
public void Main() { NWPlaceable terminal = OBJECT_SELF; int bankID = terminal.GetLocalInt("BANK_ID"); if (bankID <= 0) { return; } NWPlayer player = GetLastDisturbed(); NWItem item = GetInventoryDisturbItem(); var disturbType = GetInventoryDisturbType(); int itemCount = terminal.InventoryItems.Count(); int itemLimit = terminal.GetLocalInt("BANK_LIMIT"); if (itemLimit <= 0) { itemLimit = 20; } if (disturbType == DisturbType.Added) { if (GetHasInventory(item) == true) { SetLocalBool(item, "RETURNING_ITEM", true); ItemService.ReturnItem(player, item); player.SendMessage(ColorTokenService.Red("Containers cannot currently be stored inside banks.")); return; } if (itemCount > itemLimit) { ItemService.ReturnItem(player, item); player.SendMessage(ColorTokenService.Red("No more items can be placed inside.")); } else { BankItem itemEntity = new BankItem { ItemName = item.Name, ItemTag = item.Tag, ItemResref = item.Resref, ItemID = item.GlobalID.ToString(), ItemObject = SerializationService.Serialize(item), BankID = bankID, PlayerID = player.GlobalID, DateStored = DateTime.UtcNow }; DataService.SubmitDataChange(itemEntity, DatabaseActionType.Insert); MessageHub.Instance.Publish(new OnStoreBankItem(player, itemEntity)); } } else if (disturbType == DisturbType.Removed) { if (GetLocalBool(item, "RETURNING_ITEM") == true) { item.DeleteLocalInt("RETURNING_ITEM"); } else { var record = DataService.BankItem.GetByItemID(item.GlobalID.ToString()); DataService.SubmitDataChange(record, DatabaseActionType.Delete); MessageHub.Instance.Publish(new OnRemoveBankItem(player, record)); } } player.SendMessage(ColorTokenService.White("Item Limit: " + (itemCount > itemLimit ? itemLimit : itemCount) + " / ") + ColorTokenService.Red("" + itemLimit)); }
private static void RemoveCachedEffectiveStats(NWItem item) { item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_COOLDOWN_RECOVERY"); item.DeleteLocalFloat("STAT_EFFECTIVE_LEVEL_ENMITY_RATE"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_LUCK_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_MEDITATE_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_REST_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_MEDICINE_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_HP_REGEN_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_FP_REGEN_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_WEAPONSMITH_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_COOKING_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_ENGINEERING_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_FABRICATION_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_ARMORSMITH_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_HARVESTING_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_PILOTING_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_SCAVENGING_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_SNEAK_ATTACK_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_STRENGTH_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_DEXTERITY_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_CONSTITUTION_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_WISDOM_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_INTELLIGENCE_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_CHARISMA_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_HP_BONUS"); item.DeleteLocalInt("STAT_EFFECTIVE_LEVEL_FP_BONUS"); }
public bool Run(params object[] args) { NWPlayer oPC = (_.GetLastDisturbed()); NWItem item = (_.GetInventoryDisturbItem()); NWPlaceable container = (Object.OBJECT_SELF); int disturbType = _.GetInventoryDisturbType(); var structureID = new Guid(container.GetLocalString("PC_BASE_STRUCTURE_ID")); var structure = _data.Single <PCBaseStructure>(x => x.ID == structureID); var baseStructure = _data.Get <BaseStructure>(structure.BaseStructureID); int itemLimit = baseStructure.Storage + structure.StructureBonus; int itemCount = container.InventoryItems.Count(); string itemResref = item.Resref; if (disturbType == INVENTORY_DISTURB_TYPE_ADDED) { if (_.GetHasInventory(item) == TRUE) { item.SetLocalInt("RETURNING_ITEM", TRUE); _item.ReturnItem(oPC, item); oPC.SendMessage(_color.Red("Containers cannot currently be stored inside banks.")); return(false); } if (itemCount > itemLimit) { _item.ReturnItem(oPC, item); oPC.SendMessage(_color.Red("No more items can be placed inside.")); } else if (item.BaseItemType == BASE_ITEM_GOLD) { _item.ReturnItem(oPC, item); oPC.SendMessage(_color.Red("Credits cannot be placed inside.")); } else { PCBaseStructureItem itemEntity = new PCBaseStructureItem { ItemName = item.Name, ItemResref = itemResref, ItemTag = item.Tag, PCBaseStructureID = structureID, ItemGlobalID = item.GlobalID.ToString(), ItemObject = _serialization.Serialize(item) }; _data.SubmitDataChange(itemEntity, DatabaseActionType.Insert); } } else if (disturbType == INVENTORY_DISTURB_TYPE_REMOVED) { if (item.GetLocalInt("RETURNING_ITEM") == TRUE) { item.DeleteLocalInt("RETURNING_ITEM"); } else { var dbItem = _data.Single <PCBaseStructureItem>(x => x.ItemGlobalID == item.GlobalID.ToString()); _data.SubmitDataChange(dbItem, DatabaseActionType.Delete); } } oPC.SendMessage(_color.White("Item Limit: " + itemCount + " / ") + _color.Red(itemLimit.ToString())); return(true); }