RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

[ML Quest Chain]Monty Pythons Holy Grail

koluch

Sorceror
Well here it is after much work....
MONTY PYTHONS HOLY GRAIL​
RunUO ML STYLE​
This Quest is based heavily on the movie by Monty Python - all dialog from the movie is theirs.(I hope they take it as a compliment, it is meant as such :))​
1) This is a ML Quest chain and uses Malgannis release.​
2) There are 8 scenes to the quest and a few of the scenes have several parts. Here is a quick run through:​
Scene 1 - [Starting Quest NPC is King Arthur] You must pretend to be King Arthur and to see if you can get away with it, you must fool the guards to get a mighty steed.
Part 1 - Escort Bedemir the Guard back to the castle to get your "Fine Steed"

REWARD: A real mighty steed(Coconuts of Clapping) - Yes, you can double click the coconuts and they make 4 different horse sounds.


Scene 2 - Assert yourself as king and bring Dennis the Peasant back to the castle and kill off some smelly pigs.
Part 1 - Escort Dennis back to the castle and present the king with his 'tribute'

REWARD: A gift for the king.(the king was expecting gold! Not a pile of .....)


Scene 3 - You must prove you worth in battle against the Black Knight.
Part 1 - Slay the Black Knight and retrieve his helmet from his corpse and return it to the king.
REWARD: Your kingdoms gratitude'(Black Knight Statuette-this is a ML statuelle)


Scene 4 - You must tangle with the Knights of NEE and follow their demands for a shrubbery. Roger the Shrubber it the man to see.
Part 1 - Find the Knights of NEE. They demand a shrubbery, accept the quest and head in search of Roger the Shrubber to get their shrubbery.
Part 2 - Accept the Quest offered by Roger the Shrubber and give him the items he needs to design a fine shrubbery. Give the Shrubbery to the Knights of NEE to get the NEE Item to bring to the king.

REWARD: NEE Landscaping Deed


Scene 5 - You must gather up the Knights of the Round Table and bring them back to the castle and free Sir Galahad, the Chaste from the castle Anthrax.
Part 1 - Find the Knights of the Round Table throughout the lands and escort them back to the castle to get the Grail Tokens.(These are ML Escorts)** 12-14 -10 = Added the Names.XML file for the grail knights. Use WinMerge to add the names for the knights to your file.
Part 2 - Find the Castle Anthrax and accept the quest from Zoot and procede into the castle to rescue Sir Galahad. You will need to dispose of 30 Castle Women. This will get you 'The' Grail for the king.
Part 3 - Escort Sir Galahad back to the castle safely. This gets you Galahad's Report.

REWARD: ML Monster Display Case


Scene 6 - Visit Brother Maynard.
Part 1 - He wil tell you of the Holy Hand Grenade. Escort him back to the castle and recieve the Holy Handgrenade for the King.

REWARD: A sachel of Holy Handgrenades.


Scene 7 - Finally seek out Tim the Enchanter.
Part 1- Accept the quest from Tim and head to the cave and kill the rabbit with the Holy Handgrenade.Recieve the Bridge of Death Map to give to the king.

REWARD: Heritage Token


Scene 8 - The END? Or is it???
Part 1 - You must enter the cave and kill the legendary Black Beast of aaauuugh.
Part 2 - You must proceed to the Bridge of Death. Answer three questions and you can cross taking you to the Frenchmens Castle.
Part 3 - Accept the Taunting Frenchmens Quest. Kill the insiders and get the Cow Launcher to give to the king. Inside you will find the Old Man from Scene 7.
Part 4 - Get the Bridge of Death Token by escorting the old man from scene 7 back to the castle and return to the king.

REWARD: The King's Satchel - Arthurs Crown, Excalibur, Merlins Staff, Robin Hoods bow, 100,000gp.

This requires 2 small edits to distro files:

Notoriety.cs -- I added the mobiles to this file so unless you are on a particular quest in one of the chains, they will not attack you and can not be attacked BY you. Use WinMerge to see the additions.

QuestChains.cs -- needed to keep the quest chain going. Add the one chain to the list at the top:

Code:
using System;
using Server;

namespace Server.Engines.Quests
{
    public enum QuestChain
    {
        None,
        Aemaeth,
        AncientWorld,
        BlightedGrove,
        CovetousGhost,
        GemkeeperWarriors,
        HonestBeggar,
        LibraryFriends,
        Marauders,
        MiniBoss,
        SummonFey,
        SummonFiend,
        TuitionReimbursement,
        Spellweaving,
        SpellweavingS,
        UnfadingMemories,
        HolyGrailQuest //ADD THIS LINE
    }

Notoriety is delineated and in the Grail Quest folder itself.

SCENE 1: (The start of the quest chain): I put King Arthur in Lord British Castle. This is also the area that you will need to return the escorts to, so included is a region you must enter into your Regions.xml file in the Trammel Section.

ADD:

Code:
            <region type="TownRegion" priority="51" name="Throne Room">
                <rect x="1322" y="1618" width="28" height="14" />
                <go x="1335" y="1624" z="50" />
            </region>
I made a stable by the empty building by the Inn in Vesper with Bedemir the Guard.​
SCENE 2: I placed Dennis the Peasant in the farmlands at the far edge of Britain, along with some slop deco and the smelly pigs.​
SCENE 3: I spawned the Black Knight at the Bridge just to the NW of Destard, the pretty one at 1010, 2667, 5 in Trammel.​
SCENE 4: The Knights of NEE I spawned on Ilshenar at the fence area - 400, 1255, -42, by the lizardmen camp . There is the Quest NEE knight and one regular knight on each side of them, I just set the XML spawner to 0 and direction to face then to the south.​
Roger the Shrubber I placed in the park in Trinsic, thought that was a pretty area for a shrubber.​
SCENE 5: You must fine the Knights of the Round Table and return them to the castle. They seem to be in a lot of pubs for some reason and not looking so hard for the grail. These are ML Escorts and you can place them all over, where ever you want.​
The Castle Anthrax I placed a Tower(rather then a castle) on the island north of the Labyrinth. The Castle women are spawned inside. Zoot is spawned at the doorway to offer the Quest. Here I used David's Guard Spawner(a super item!) to spawn one of the castle women who has the key to the cage holding Sir Galahad. You must get the key to get Galahad out and back to the castle to get his report.​
SCENE 6: Brother Maynard I placed in the Empath Abby with monks walking back and fourth using waypoints saying "Bring out your dead!"(this can be done easily with the XML spawner. Brother Maynard gives you the Holy Hand Grenage when returned to the king.​
SCENE 7: Tim I placed just south of the cave on Ilshenar that holds the Rabbit, the Black Beast of aaargh, and the gate to the Bridge of death. He is located at 309,1386,-14. Just to the north of him is the cave with the rabbit at the entrance at 314, 1335, -37. I added bones and blood, etc.​
SCENE 8: Go back to the cave and inside spawn the Black Beast of aaaargh. You must kill him. Then I added Hex's Addon Gate inside the cave and a spawner under it to take you to The Bridge Of Death located at 827, 962, -23. Here I placed keyword teleporters to 'yes' and 'no' as well as LOS blockers and blockers to keep players from teleporting over the questions to get to the gate at the end.(I have included some pics on all this also to help if you need it) You answer the questions, you must set the teleporters up to if correct, send you to the next section and the other if wrong sends you to where ever you decide your Abyss will be. If answered correctly you will be on the end of the bridge with a teleporter that takes you to the Taunting Frenchmen located on Ilshenar at 1587, 998, 0. I used these ruins and enclosed them so once inside you can not get out. The guard offers you the Taunting Frenchmen Quest, the taunting frenchmen are spawned inside where you have to kill them while they yell insults at you. The Old Man from Scene 7 is in a cage on the top floor, one of the taunting frenchmen is spawned again using Davids Guard Spawner to get the key and release him. Also on the top floor is Hex's Gate with a teleporter to take you back to King Arthur.(more pics will be posted as needed) Be SURE to get the reward from the Taunting Frenchmens Quest before you get the old man from scene 7 and return to the castle.​
Well that is it.​
Simple enough, eh?​
For Grail Fans, I think you will really enjoy doing this quest, the little items you get along the way and the rewards are very good! We have several players who enjoyed it over and over.​
Use, change, do whatever to the quest, I would hope that everyone takes the time to read the Quest Dialogs, they are quite funny thanks to Monty Pythons great work!​
I will be happy to help anyone with questions getting this set up and will start a second post after this one to address help needed.​
Enjoy!​
Koluch​
Thanks to Monty Python, Malgannis, David, Hex and his addons, Karmageddon and his sword effect, and MANY more, please holler so I can add your name to the list of great ideas you released and I was able to use in order to make this quest!​
 

Attachments

  • Holy Grail Quest 12-10-2010.zip
    86.5 KB · Views: 97
  • GuardSpawner.zip
    7.5 KB · Views: 72
  • names.zip
    20.2 KB · Views: 67

koluch

Sorceror
December 10, 2010: This post will be used to answer any questions you have about the quest, thanks!
1- The coconuts make horse sounds when double clicked.
2- The cow from the Taunting Frenchmen is actually a working blessed Bola, it is pretty funny!
3- Added the QuestChain.cs file to compare.

December 14, 2010: Added the Names.xml file to the first post for the Roundtable knights names, just use winmerge and add the section for the knights at the bottom to your Names.xml file.

May 9, 2011: Added new .zip file to post with updated Robin Hood's Bow and Merlin's Staff.
(see my May 9th post for the new zip file or re-download the .zip here)

Pictures:
 

Attachments

  • SacredWoodsEnrtrance.jpg
    SacredWoodsEnrtrance.jpg
    63.4 KB · Views: 110
  • BridgeOfDeath.jpg
    BridgeOfDeath.jpg
    67.6 KB · Views: 108
  • TauntingFrenchmenAndScene7Man.jpg
    TauntingFrenchmenAndScene7Man.jpg
    70.6 KB · Views: 103
  • QuestChains.zip
    507 bytes · Views: 28
  • 1-Arthur.jpg
    1-Arthur.jpg
    29.1 KB · Views: 77
  • 2-Bedimir the Guard.jpg
    2-Bedimir the Guard.jpg
    19.1 KB · Views: 75
  • 6-The Black Knight.jpg
    6-The Black Knight.jpg
    9.7 KB · Views: 90
  • 7-Knight of NEE.jpg
    7-Knight of NEE.jpg
    14.6 KB · Views: 85
  • 9- Herring and Shrubbery.jpg
    9- Herring and Shrubbery.jpg
    5.4 KB · Views: 74

Ikuzei

Squire
You say to edit the QuestChains.cs, but I can't locate that in my files... Will it work without it?
 

koluch

Sorceror
Here is the file, you can just add the one section to it to make it work. It is the line after UnfadingMemories. Then your QuestChain.cs will look like this:

Code:
using System;
using Server;

namespace Server.Engines.Quests
{
    public enum QuestChain
    {
        None,
        Aemaeth,
        AncientWorld,
        BlightedGrove,
        CovetousGhost,
        GemkeeperWarriors,
        HonestBeggar,
        LibraryFriends,
        Marauders,
        MiniBoss,
        SummonFey,
        SummonFiend,
        TuitionReimbursement,
        Spellweaving,
        SpellweavingS,
        UnfadingMemories,
        HolyGrailQuest //ADD THIS LINE
    }
    
    public class BaseChain
    {
        private Type m_CurrentQuest;
        private Type m_Quester;
        
        public Type CurrentQuest
        {
            get{ return m_CurrentQuest; }
            set{ m_CurrentQuest = value; }
        }
        
        public Type Quester
        {
            get{ return m_Quester; }
            set{ m_Quester = value; }
        }
    
        public BaseChain( Type currentQuest, Type quester )
        {
            m_CurrentQuest = currentQuest;
            m_Quester = quester;
        }
    }
}
:]
 

Attachments

  • QuestChains.zip
    507 bytes · Views: 35

koluch

Sorceror
I am glad you like it, feel free to change up the prizes or anything else you want. It was a lot of work, but the quest is loads of fun! My players have really enjoyed the dialog. It is not a hard quest to do, just be sure to read the questers dialog and go for it!

Koluch :]
 
I just went to implement this and realized you said it requires Malgannis ML... is that compatible with the latest RunUO 2.1? If so, do you know of anyone maintaining a merge of the two?
 

koluch

Sorceror
hmmmmm...it uses the Malgannis quest system. Im sure you could change it to work with out that but would be a total rewrite I belive let me look :]
Calendor has Mal's release incorporated into his if you are using that your fine also :]

koluch
 

tass23

Page
I know this is an old post, but I think you left something out Koluch....where is Bedemir????
 

koluch

Sorceror
I know this is an old post, but I think you left something out Koluch....where is Bedemir????

He is the CoconutEscort in Part One folder.(CoconutQuest.cs)

Here is the new .zip file, it contains the updated Robin Hood's Bow, UBW skill removed. Just update it with the new script, it is serialized to change existing bows out there. Same with Merlin's Staff - it is now mage weapon only and will serialize with existing staffs players already have.

Still use David's Guard spawner for the keys to the gates for the Old Man From Scene 7 and also for
Galahad in the castle Anthrax.

This is not a hard Quest, just takes a little time, so be sure you adjust the rewards to fit your server.
I would probably have made the King Arthur's Chest give a random of one weapon instead of all of them, didnt realize players would actually do it over and over again.

Koluch
 

tass23

Page
OMG, it's SO funny that you replied today...I literally JUST finished setting everything up LOL
I didn't realize which one Bedemir was, so I created him, wrote out the quest info for the gump, dialog, etc.
I got to hand it to you, this is an AWESOME idea, love it. Pain in the butt to setup, but VERY worth it.
Only one other thing was missing and that was the NorthMLAddon, or something like that. I just created the display case and used the addongen, no biggie.
Thanks so much for posting this Koluch :)
 

koluch

Sorceror
Silly forum isn't letting me post the updated .zip file! Lemme try again! GRRRRRRRRR!

Glad you liked it, the display case addon should be in there also update your bow and staff, Ill post the .cs files if this wont do the .zip(I will try a .rar also) sheesh!(dosen't work, ACK!)

Code:
////////////////////////////////////////
//                                    //
//   Generated by CEO's YAAAG - V1.2  //
// (Yet Another Arya Addon Generator) //
//                                    //
////////////////////////////////////////
using System;
using Server;
using Server.Items;

namespace Server.Items
{
    public class DisplayNorthMLAddon : BaseAddon
    {
        private static int[,] m_AddOnSimpleComponents = new int[,] {
              {12393, 1, 0, 0}, {12394, 0, 0, 0}, {12395, -1, 0, 0}// 1    2    3
                    };



        public override BaseAddonDeed Deed
        {
            get
            {
                return new DisplayNorthMLAddonDeed();
            }
        }

        [ Constructable ]
        public DisplayNorthMLAddon()
        {

            for (int i = 0; i < m_AddOnSimpleComponents.Length / 4; i++)
                AddComponent( new AddonComponent( m_AddOnSimpleComponents[i,0] ), m_AddOnSimpleComponents[i,1], m_AddOnSimpleComponents[i,2], m_AddOnSimpleComponents[i,3] );


        }

        public DisplayNorthMLAddon( Serial serial ) : base( serial )
        {
        }


        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
            writer.Write( 0 ); // Version
        }

        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();
        }
    }

    public class DisplayNorthMLAddonDeed : BaseAddonDeed
    {
        public override BaseAddon Addon
        {
            get
            {
                return new DisplayNorthMLAddon();
            }
        }

        [Constructable]
        public DisplayNorthMLAddonDeed()
        {
            Name = "Trophy Case Addon";
        }

        public DisplayNorthMLAddonDeed( Serial serial ) : base( serial )
        {
        }

        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );
            writer.Write( 0 ); // Version
        }

        public override void    Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
            int version = reader.ReadInt();
        }
    }
}

Robi Hood's Bow
Code:
using Server;
using Server.Network;
using Server.Items;

namespace Server.Items
{
    public class RobinhoodBow : ElvenCompositeLongbow
    {
        public override int ArtifactRarity{ get{ return 15; } }

        public override int InitMinHits{ get{ return 300; } }
        public override int InitMaxHits{ get{ return 300; } }

        [Constructable]
        public RobinhoodBow()
        {
            Name = "Robin Hood's Longbow";
            Hue = 1154;

            Attributes.CastSpeed = Utility.RandomMinMax ( 1,5 );
            Attributes.CastRecovery = Utility.RandomMinMax ( 1,5 );
            WeaponAttributes.HitLeechStam = Utility.RandomMinMax ( 10,30 );
            WeaponAttributes.HitLeechHits = Utility.RandomMinMax ( 10,30 );
            WeaponAttributes.HitLightning = Utility.RandomMinMax ( 10,30 );
            WeaponAttributes.HitFireball = Utility.RandomMinMax ( 10,30 );
            Attributes.AttackChance = 40;
            Attributes.WeaponDamage = 50;
            Slayer = SlayerName.Repond;
            //WeaponAttributes.UseBestSkill = 1;
            Attributes.SpellChanneling = 1;
            Attributes.WeaponSpeed = 30;
        }
        #region Mondain's Legacy
        public override void GetDamageTypes( Mobile wielder, out int phys, out int fire, out int cold, out int pois, out int nrgy, out int chaos, out int direct )
        {
            pois = fire = cold = chaos = direct = 0;
            nrgy = phys = 50;
        }
        #endregion


        public override bool OnEquip( Mobile from )
        {
            return Validate( from ) && base.OnEquip( from );
        }

        public override void OnSingleClick( Mobile from )
        {
            if ( Validate( Parent as Mobile ) )
                base.OnSingleClick( from );
        }

        public bool Validate( Mobile m )
        {
            if ( m == null || !m.Player )
                return true;
            {
                m.FixedParticles( 0x375A, 10, 30, 5052, EffectLayer.LeftFoot );
                m.PlaySound( 543 );
                m.SendMessage( "You feel the power of Robin's bow rush through you as you grasp it within your hand!" );

            }

            return true;
        }

        public RobinhoodBow( Serial serial ) : base( serial )
        {
        }

        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );

            writer.Write( (int) 0 );
        }

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            if ( WeaponAttributes.UseBestSkill == 1)
            {
                WeaponAttributes.UseBestSkill = 0;
            }
        }

    }
}

Merlin's Staff

Code:
using System;
using Server;

namespace Server.Items
{
    public class MerlinsStaff : BlackStaff
    {

        public override int ArtifactRarity{ get{ return 15; } }

        public override int InitMinHits{ get{ return 300; } }
        public override int InitMaxHits{ get{ return 300; } }

        [Constructable]
        public MerlinsStaff()
        {
            Name = "Merlin's Staff";
            Hue = 1154;

            WeaponAttributes.MageWeapon = 30;
            Attributes.SpellChanneling = 1;
            Attributes.CastSpeed = Utility.RandomMinMax ( 1,5 );
            Attributes.CastRecovery = Utility.RandomMinMax ( 1,5 );
            WeaponAttributes.HitLeechStam = Utility.RandomMinMax ( 10,30 );
            WeaponAttributes.HitLeechHits = Utility.RandomMinMax ( 10,30 );
            WeaponAttributes.HitLightning = Utility.RandomMinMax ( 10,30 );
            WeaponAttributes.HitFireball = Utility.RandomMinMax ( 10,30 );
            Attributes.AttackChance = 40;
            Attributes.WeaponDamage = 50;
            Slayer = SlayerName.Repond;
            Attributes.WeaponSpeed = 30;
        }

        #region Mondain's Legacy
        public override void GetDamageTypes( Mobile wielder, out int phys, out int fire, out int cold, out int pois, out int nrgy, out int chaos, out int direct )
        {
            pois = fire = cold = chaos = direct = 0;
            nrgy = phys = 50;
        }
        #endregion

        public override bool OnEquip( Mobile from )
        {
            return Validate( from ) && base.OnEquip( from );
        }

        public override void OnSingleClick( Mobile from )
        {
            if ( Validate( Parent as Mobile ) )
                base.OnSingleClick( from );
        }

        public bool Validate( Mobile m )
        {
            if ( m == null || !m.Player )
                return true;
            {
                m.FixedParticles( 0x375A, 10, 30, 5052, EffectLayer.LeftFoot );
                m.PlaySound( 543 );
                m.SendMessage( "You feel the power of Merlin's staff rush through you as you grasp it within your hand!" );

            }

            return true;
        }

        public MerlinsStaff( Serial serial ) : base( serial )
        {
        }

        public override void Serialize( GenericWriter writer )
        {
            base.Serialize( writer );

            writer.Write( (int) 0 );
        }

        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            if ( WeaponAttributes.MageWeapon == 0 )
                WeaponAttributes.MageWeapon = 30;
            if ( WeaponAttributes.UseBestSkill == 1 )
                WeaponAttributes.UseBestSkill = 0;

            if ( ItemID == 0xDF1 )
                ItemID = 0xDF0;
        }
    }
}

Well, there are the 3 you need, glad you enjoy the quest! It is a pain to get set up, but once it is done, it is a lot of fun :]

Koluch
 

koluch

Sorceror
Last try to post the new rar file with the changes and the display case addon....can't post it will try later.
Have a good one!

Koluch
 

tass23

Page
You'll want to update those two weapon files again actually. You need to add an ML Speed on both of them, or they'll have 0 Weapon Speed and could cause a server crash.
 

tass23

Page
Having a problem here Koluch :( It didn't happen when I did the quest chain before, but I was on my Admin. On my player I got this:
Code:
Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
  at Server.Engines.Quests.MondainQuestGump.SecObjectives()
  at Server.Engines.Quests.MondainQuestGump..ctor(BaseQuest quest, Section section, Boolean offer)
  at Server.Engines.Quests.MondainQuestGump.OnResponse(NetState state, RelayInfo info)
  at Server.Network.PacketHandlers.DisplayGumpResponse(NetState state, PacketReader pvSrc) in e:\Downloads\Run UO\Working Free Shard Backup\Server\Network\PacketHandlers.cs:line 1240
  at Server.Network.MessagePump.HandleReceive(NetState ns) in e:\Downloads\Run UO\Working Free Shard Backup\Server\Network\MessagePump.cs:line 268
  at Server.Network.MessagePump.Slice() in e:\Downloads\Run UO\Working Free Shard Backup\Server\Network\MessagePump.cs:line 129
  at Server.Core.Main(String[] args) in e:\Downloads\Run UO\Working Free Shard Backup\Server\Main.cs:line 518

EDIT: Nvm, I'm an idiot, in my excitement to get this questline going, I forgot to copy over the Regions.xml for the Throne Room LOL
 

koluch

Sorceror
You'll want to update those two weapon files again actually. You need to add an ML Speed on both of them, or they'll have 0 Weapon Speed and could cause a server crash.

They are already in a weapon class:

BlackStaff

ElvenCompositeLongbow

The speed is called in that script, the overrides are placed in these to replace the base attributes of that weapon....that should be correct.....thanks! :)

Glad you like the Grail, took a good while to make. Run into any questions or setting up things holler, Ill be happy to help you out!

Koluch
(actually that throne room area comes in handy for a lot of quests and such, being in Lord British Castle and all. I have a few other scripts if I havent released them(all ML style) I post once the forum is working. Nothing as elaborate as the Holy Grail, but fun! )
 

Montesuma

Sorceror
I have a question, how can i make the cage for Sir Galahad in SCENE 5
and how can i male the hex gate in SCENE 8

Thanks for help

and it is a very nice quest
 

koluch

Sorceror
I have a question, how can i make the cage for Sir Galahad in SCENE 5
and how can i male the hex gate in SCENE 8

Thanks for help

and it is a very nice quest
The cage for Sir Galahad in sceen 5: I used line of site blockers and blockers with use of the XML spawner( I believe you can do it without the XML feature, just have to make players unable to click the escort to have him follow them, so blockers below also, man players are creative!) The key is of course on the guard spawner.


Here is Hex's Addons, all very nice: http://www.runuo.com/community/threads/addons-just-for-you.100643/



I added the file with the gates to this thread, just used a teleporter under to go to the castle.

Hope your players enjoy this quest. It has lots of parts but it is not all that hard to do! Dont know if you want to give them all the gifts at the end as I have, I figured let those who want to do it once fine, others have done it a few times. Change it up however you would like and have fun!!

Koluch :]
 

Attachments

  • hex_addons3 The Gateways.rar
    1.5 KB · Views: 18
Top