<NME> ShrineLava.cs
<BEF> ﻿using UnityEngine;
using System.Collections;
using UnityStandardAssets.ImageEffects;

/// <summary>
/// Special move trigger to handle throwing objects into the lava in the Shrine.
/// </summary>
public class ShrineLava : UWEBase
{

    /// <summary>
    /// Detects if a talisman has been thrown into the abyss lava trigger.
    /// </summary>
    /// <param name="other">Other.</param>
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.GetComponent<ObjectInteraction>() != null)
        {
						switch (objInt.item_id)
						{
						case Quest.TalismanHonour:
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[0]=true;break;
						case Quest.TalismanBook:								
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[1]=true;break;
						case Quest.TalismanCup:
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[2]=true;break;
						case Quest.TalismanRing:
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[3]=true;break;
						case Quest.TalismanShield:
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[4]=true;break;
						case Quest.TalismanSword:
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[5]=true;break;
						case Quest.TalismanTaper:
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[6]=true;break;
						case Quest.TalismanWine:								
								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[7]=true;break;
						default:
								return;								
						}
                case Quest.TalismanWine:
                    Quest.instance.TalismansRemaining--;
                    break;

						objInt.consumeObject();

						for (int i=0;i<7;i++)
						{
								if (GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[i]==false)
								{
										return;
								}
						}

						//Suck the avatar into the ethereal void.
						StartCoroutine(SuckItAvatar());

				}
		}
    /// </summary>
    /// Spins the avatar and the slasher (specific object name) towards a newly spawned moongate.
    IEnumerator SuckItAvatar()
    {

        ObjectInteraction slasher = CurrentObjectList().objInfo[129].instance;//Assumes slasher will be at this index.
        Vector3 slasherPos = Vector3.zero;
        if (slasher != null)
        {
            slasherPos = slasher.transform.position;
        }

        //Spawn a moon gate at the center of the lava
        ObjectLoaderInfo newobjt = ObjectLoader.newWorldObject(346, 0, 0, 0, 256);
        GameObject myObj = ObjectInteraction.CreateNewObject(CurrentTileMap(),
            newobjt,
            CurrentObjectList().objInfo,
            GameWorldController.instance.DynamicObjectMarker().gameObject,
            GameWorldController.instance.InventoryMarker.transform.position).gameObject;
        GameWorldController.MoveToWorld(myObj.GetComponent<ObjectInteraction>());
        myObj.transform.localPosition = this.transform.position + new Vector3(0.0f, 0.5f, 0.0f);

        //Suck the player and the slasher into the moon gate.
        Quaternion playerRot = UWCharacter.Instance.transform.rotation;
        Quaternion EndRot = new Quaternion(playerRot.x, playerRot.y, playerRot.z + 1.2f, playerRot.w);
        Vector3 StartPos = UWCharacter.Instance.transform.position;
        Vector3 EndPos = myObj.transform.localPosition;
        float rate = 1.0f / 2.0f;
        float index = 0.0f;
        while (index < 1.0f)
        {
            UWCharacter.Instance.transform.position = Vector3.Lerp(StartPos, EndPos, index);
            UWCharacter.Instance.transform.rotation = Quaternion.Lerp(playerRot, EndRot, index);
            if (slasher != null)
            {
                slasher.transform.position = Vector3.Lerp(slasherPos, EndPos, index);
            }
            index += rate * Time.deltaTime;
            yield return new WaitForSeconds(0.01f);
        }
        UWCharacter.Instance.transform.rotation = playerRot;
        GameWorldController.instance.SwitchLevel(8, 26, 24);//One way trip.
    }
}

<MSG> No of talismans left to destroy is now loaded and saved
No of incense dreams had is now read in and saved.
Fixed talisman and shrine lava to match vanilla.
Fixed cancellation of Maze Navigation effect when loading a save.
More save game notes

<DFF> @@ -19,21 +19,15 @@ public class ShrineLava : UWEBase {
 						switch (objInt.item_id)
 						{
 						case Quest.TalismanHonour:
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[0]=true;break;
 						case Quest.TalismanBook:								
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[1]=true;break;
 						case Quest.TalismanCup:
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[2]=true;break;
 						case Quest.TalismanRing:
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[3]=true;break;
 						case Quest.TalismanShield:
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[4]=true;break;
 						case Quest.TalismanSword:
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[5]=true;break;
 						case Quest.TalismanTaper:
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[6]=true;break;
-						case Quest.TalismanWine:								
-								GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[7]=true;break;
+						case Quest.TalismanWine:	
+								GameWorldController.instance.playerUW.quest().TalismansRemaining--;
+								break;
 						default:
 								return;								
 						}
@@ -43,16 +37,19 @@ public class ShrineLava : UWEBase {
 
 						objInt.consumeObject();
 
-						for (int i=0;i<7;i++)
-						{
-								if (GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[i]==false)
-								{
-										return;
-								}
-						}
+						//for (int i=0;i<7;i++)
+						//{
+						//		if (GameWorldController.instance.playerUW.quest().TalismansCastIntoAbyss[i]==false)
+						//		{
+						//				return;
+						//		}
+						//}
 
 						//Suck the avatar into the ethereal void.
+						if (GameWorldController.instance.playerUW.quest().TalismansRemaining<=0)
+						{
 						StartCoroutine(SuckItAvatar());
+						}
 
 				}
 		}

No of talismans left to destroy is now loaded and saved No of incense dreams had is now read in and saved. Fixed talisman and shrine lava to match vanilla. Fixed cancellation of Maze Navigation effect when loading a save. More save game notes