Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function IsBaseForRecipe( recipe : SAlchemyRecipe, itemName : name ) : bool //recipe.level = 1 or recipe.level == 1 ?????? MIGHT BE CAUSING ERRORS
- {
- /*
- if( recipe.cookedItemType == EACIT_Potion && recipe.level == 1 && IsPotionDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Potion && recipe.level == 2 && IsEnhancedPotionDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Potion && recipe.level == 3 && IsSuperiorPotionDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_MutagenPotion && IsDecoctionDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Oil && recipe.level == 1 && IsOilDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Oil && recipe.level == 2 && IsEnhancedOilDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Oil && recipe.level == 3 && IsSuperiorOilDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Bomb && recipe.level == 1 && IsBombDilutor( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Bomb && recipe.level == 2 && IsEnhancedBombDilutor( itemName ) )
- {
- return true;
- }
- //if( recipe.cookedItemType == EACIT_Bomb && recipe.level == 3 && IsSuperiorBombDilutor( itemName ) )
- //{
- // return true;
- //}
- return false;
- }*/
- if( ( recipe.cookedItemType == EACIT_Potion || recipe.cookedItemType == EACIT_MutagenPotion ) &&
- IsAlcohol( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Bomb && IsPowder( itemName ) )
- {
- return true;
- }
- if( recipe.cookedItemType == EACIT_Oil && IsFat( itemName ) )
- {
- return true;
- }
- return false;
- }
- public function IsRefillNeeded( recipe : SAlchemyRecipe ) : bool
- {
- var ids : array<SItemUniqueId>;
- if( theGame.GetDefinitionsManager().IsItemSingletonItem( recipe.cookedItemName ) &&
- ( recipe.cookedItemType == EACIT_Potion || recipe.cookedItemType == EACIT_MutagenPotion ||
- recipe.cookedItemType == EACIT_Bomb || recipe.cookedItemType == EACIT_Oil ) )
- {
- ids = thePlayer.inv.GetItemsByName( recipe.cookedItemName );
- if( ids.Size() == 1 )
- {
- if( thePlayer.inv.SingletonItemGetAmmo( ids[0] ) < thePlayer.inv.SingletonItemGetMaxAmmo( ids[0] ) )
- {
- return true;
- }
- }
- }
- return false;
- }
- public function IsAlcohol( item : name ) : bool
- {
- if( item == 'Dwarven spirit' || item == 'Alcohest' || item == 'White Gull 1' )
- {
- return true;
- }
- return false;
- }
- public function IsPowder( item : name ) : bool
- {
- if( item == 'Saltpetre' || item == 'Stammelfords dust' || item == 'Alchemists powder' )
- {
- return true;
- }
- return false;
- }
- public function IsFat( item : name ) : bool
- {
- if( item == 'Dog tallow' || item == 'Bear fat' || item == 'Alchemical paste' )
- {
- return true;
- }
- return false;
- }
- public function CalculateCookChance( recipe : SAlchemyRecipe ) : int
- {
- if( recipe.cookedItemType == EACIT_Oil )
- return 0;
- else
- return 100;
- }
- /*if ( ( recipe.cookedItemType ) == EACIT_Potion )
- || ( theGame.GetDefinitionsManager().IsItemSingletonItem( recipe.cookedItemType ) == EACIT_Oil )
- || ( theGame.GetDefinitionsManager().IsItemSingletonItem( recipe.cookedItemType ) == EACIT_Bomb )
- && recipe.level == 1 )
- return 75;
- else if ( theGame.GetDefinitionsManager().IsItemSingletonItem( recipe.cookedItemName ) &&( recipe.cookedItemType == EACIT_Potion || recipe.cookedItemType == EACIT_Oil || recipe.cookedItemType == EACIT_Bomb ) && recipe.level == 2 )
- return 55;
- else if ( theGame.GetDefinitionsManager().IsItemSingletonItem( recipe.cookedItemName )( recipe.cookedItemType == EACIT_Potion || recipe.cookedItemType == EACIT_Oil || recipe.cookedItemType == EACIT_Bomb ) && recipe.level == 3 )
- return 40;
- else if ( theGame.GetDefinitionsManager().IsItemSingletonItem( recipe.cookedItemName )recipe.cookedItemType == EACIT_MutagenPotion )
- return 45;
- else
- return 0;
- }*/
- public function IsPotionDilutor( item : name ) : bool
- {
- if( item == 'Potion Dilutor 1' || item == 'Potion Dilutor 2' || item == 'Potion Dilutor 3' || item == 'Dog Tallow' )
- {
- return true;
- }
- return false;
- }
- public function IsEnhancedPotionDilutor( item : name ) : bool
- {
- if( item == 'Enhanced Potion Dilutor 1' || item == 'Enhanced Potion Dilutor 2' || item == 'Enhanced Potion Dilutor 3' )
- {
- return true;
- }
- return false;
- }
- public function IsSuperiorPotionDilutor( item : name ) : bool
- {
- if( item =='Superior Potion Dilutor 1' || item =='Superior Potion Dilutor 2' || item == 'Superior Potion Dilutor 3' )
- {
- return true;
- }
- return false;
- }
- public function IsDecoctionDilutor( item : name ) : bool
- {
- if( item == 'Decoction Dilutor 1' || item == 'Decoction Dilutor 2' || item == 'Decoction Dilutor 3' )
- {
- return true;
- }
- return false;
- }
- public function IsOilDilutor( item : name ) : bool
- {
- if( item == 'Oil Dilutor 1' || item == 'Oil Dilutor 2' || item == 'Oil Dilutor 3' )
- {
- return true;
- }
- return false;
- }
- public function IsEnhancedOilDilutor( item : name ) : bool
- {
- if( item == 'Enhanced Oil Dilutor 1' || item == 'Enhanced Oil Dilutor 2' || item == 'Enhanced Oil Dilutor 3' )
- {
- return true;
- }
- return false;
- }
- public function IsSuperiorOilDilutor( item : name ) : bool
- {
- if( item == 'Superior Oil Dilutor 1' || item == 'Superior Oil Dilutor 2' || item == 'Superior Oil Dilutor 3' )
- {
- return true;
- }
- return false;
- }
- public function IsBombDilutor( item : name ) : bool
- {
- if( item == 'Bomb Dilutor 1' || item == 'Bomb Dilutor 2' || item == 'Bomb Dilutor 3' )
- {
- return true;
- }
- return false;
- }
- public function IsEnhancedBombDilutor( item : name ) : bool
- {
- if( item == 'Enhanced Bomb Dilutor 1' || item == 'Enhanced Bomb Dilutor 2' || item == 'Enhanced Bomb Dilutor 3')
- {
- return true;
- }
- return false;
- }
- /*public function IsSuperiorBombDilutor( itme : name ) : bool
- {
- if( item == 'Superior Bomb Dilutor 1' || item == 'Superior Bomb Dilutor 2' || item == 'Superior Bomb Dilutor 3')
- {
- return true;
- }
- return false;
- }*/
- public function CookItem(recipeName : name)
- {
- var i, j, quantity, removedIngQuantity, maxAmmo, setAmmo: int;
- var recipe : SAlchemyRecipe;
- var dm : CDefinitionsManagerAccessor;
- var crossbowID : SItemUniqueId;
- var min, max : SAbilityAttributeValue;
- var uiStateAlchemy : W3TutorialManagerUIHandlerStateAlchemy;
- var uiStateAlchemyMutagens : W3TutorialManagerUIHandlerStateAlchemyMutagens;
- var ids : array<SItemUniqueId>;
- var items, alchIngs : array<SItemUniqueId>;
- var isPotion, isSingletonItem : bool;
- var witcher : W3PlayerWitcher;
- var equippedOnSlot : EEquipmentSlots;
- //---=== modPreparations ===---
- var refillNeeded : bool;
- var refilled : bool;
- //---=== modPreparations ===---
- //MODSOR++
- var cookChance: int;
- cookChance = CalculateCookChance( recipe );
- /*
- if ( ( recipe.cookedItemType == EACIT_Potion || recipe.cookedItemType == EACIT_Oil || recipe.cookedItemType == EACIT_Bomb ) && recipe.level == 1 )
- cookChance = 75;
- else if ( ( recipe.cookedItemType == EACIT_Potion || recipe.cookedItemType == EACIT_Oil || recipe.cookedItemType == EACIT_Bomb ) && recipe.level == 2 )
- cookChance = 55;
- else if ( ( recipe.cookedItemType == EACIT_Potion || recipe.cookedItemType == EACIT_Oil || recipe.cookedItemType == EACIT_Bomb ) && recipe.level == 3 )
- cookChance = 40;
- else if ( recipe.cookedItemType == EACIT_MutagenPotion )
- cookChance = 45;*/
- GetRecipe(recipeName, recipe);
- //calculate quantity to cook
- equippedOnSlot = EES_InvalidSlot;
- dm = theGame.GetDefinitionsManager();
- quantity = 1;
- //---=== modPreparations ===---
- refillNeeded = IsRefillNeeded( recipe );
- //---=== modPreparations ===---
- //cook item
- isSingletonItem = dm.IsItemSingletonItem(recipe.cookedItemName);
- if(isSingletonItem && thePlayer.inv.GetItemQuantityByName(recipe.cookedItemName) > 0 )
- {
- items = thePlayer.inv.GetItemsByName(recipe.cookedItemName);
- if (items.Size() == 1 && thePlayer.inv.ItemHasTag(items[0], 'NoShow'))
- {
- //potential bug
- //thePlayer.inv.RemoveItemTag(items[i], 'NoShow');
- thePlayer.inv.RemoveItemTag(items[0], 'NoShow');
- }
- ids = thePlayer.inv.GetItemsIds(recipe.cookedItemName);
- }
- if (!ids.Size() )
- {
- ids = thePlayer.inv.AddAnItem(recipe.cookedItemName, quantity);
- setAmmo = 1;
- }
- else
- cookChance = Clamp(cookChance, 0, 100);
- if (RandRange(100) < cookChance)
- {
- setAmmo = thePlayer.inv.SingletonItemGetAmmo(ids[0]) + 1;
- }
- else
- setAmmo = thePlayer.inv.SingletonItemGetAmmo(ids[0]);
- for(i=0; i<ids.Size(); i+=1)
- thePlayer.inv.SetItemModifierInt(ids[i],'ammo_current', setAmmo);
- theGame.GetGlobalEventsManager().OnScriptedEvent( SEC_OnAmmoChanged );
- //remove ingredients
- for(i=0; i<recipe.requiredIngredients.Size(); i+=1)
- {
- //if alchemy item is ingredient it might be equipped - we need to unequip first
- if(dm.IsItemAlchemyItem(recipe.requiredIngredients[i].itemName))
- {
- removedIngQuantity = 0;
- alchIngs = thePlayer.inv.GetItemsByName(recipe.requiredIngredients[i].itemName);
- witcher = GetWitcherPlayer();
- for(j=0; j<alchIngs.Size(); j+=1)
- {
- equippedOnSlot = witcher.GetItemSlot(alchIngs[j]);
- if(equippedOnSlot != EES_InvalidSlot)
- witcher.UnequipItem(alchIngs[j]);
- removedIngQuantity += 1;
- witcher.inv.RemoveItem(alchIngs[j]);
- if(removedIngQuantity >= recipe.requiredIngredients[i].quantity)
- break;
- }
- }
- else
- {
- //just remove
- thePlayer.inv.RemoveItemByName(recipe.requiredIngredients[i].itemName, recipe.requiredIngredients[i].quantity);
- }
- }
- LogAlchemy("Item <<" + recipe.cookedItemName + ">> cooked x" + recipe.cookedItemQuantity);
- //tutorial
- if(ShouldProcessTutorial('TutorialAlchemyCook'))
- {
- uiStateAlchemy = (W3TutorialManagerUIHandlerStateAlchemy)theGame.GetTutorialSystem().uiHandler.GetCurrentState();
- if(uiStateAlchemy)
- {
- uiStateAlchemy.CookedItem(recipeName);
- }
- else
- {
- uiStateAlchemyMutagens = (W3TutorialManagerUIHandlerStateAlchemyMutagens)theGame.GetTutorialSystem().uiHandler.GetCurrentState();
- if(uiStateAlchemyMutagens)
- uiStateAlchemyMutagens.CookedItem(recipeName);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement