Jump to content
  • 0

Blessed enchant rates


Question

4 answers to this question

Recommended Posts

  • 0
Posted

there is a other.php file i can't see blessed rates

 

#Amount of adena that a new character is given

#Default is 0

StartingAdena = 500000000

 

# movement speed for strider and wyvern

WyvernSpeed = 100

StriderSpeed = 80

 

#Allow the wyvern manager located in every castle to train wyverns and striders from hatchlings

AllowWyvernUpgrader = False

 

# If True, when effects of the same stack group are used, lesser

# effects will be canceled if stronger effects are used. New effects

# that are added will be canceled if they are of lesser priority to the old one.

# If False, they will not be canceled, and it will switch to them after the

# stronger one runs out, if the lesser one is still in effect.

CancelLesserEffect = True

 

# If you wish to disable the use of guards agains agressive monsters.

# Default is False.

AllowGuards = False

 

# If True, the following deep blue mobs' drop penalties will be applied:

# - When player's level is 9 times greater than mob's level, drops got divided by 3

# - After 9 lvl's of difference between player and deep blue mobs, drop chance is

# lowered by 9% each lvl that difference increases. (9lvls diff = -9%; 10lvls diff = -18%; ...)

# NOTE1: These rules are applied to both normal and sweep drops

# NOTE2: These rules ignores the server's rate when drop is of adena type (Complies with retail server)

UseDeepBlueDropRules = True

 

# Inventory space limits

MaximumSlotsForNoDwarf = 80

MaximumSlotsForDwarf = 100

MaximumSlotsForGMPlayer = 500

 

# Warehouse space limits (Must be < 300 for prevent client crash)

# Dwarfs will get bonus from lvl 60

MaximumWarehouseSlotsForDwarf = 120

MaximumWarehouseSlotsForNoDwarf = 100

MaximumWarehouseSlotsForClan = 200

MaximumFreightSlots = 20

 

# % Chance of succeding to enchant an item when it has a chance of breaking

EnchantChanceWeapon = 66

EnchantChanceArmor = 66

EnchantChanceJewelry = 66

# Enchant limit [default = 0 (unlimited)]

EnchantMaxWeapon = 25

EnchantMaxArmor = 25

EnchantMaxJewelry = 25

# if EnchantSafeMax is set to for ex '8' the item will be safly enchanted to '8'

# regardless of enchant chance(default = 3 for EnchantSafeMax and default = 4 for EnchantSafeMaxFull)

# EnchantSafeMaxFull is for full body armor (upper and lower)

# SHOULD BE > 0

EnchantSafeMax = 5

EnchantSafeMaxFull = 5

 

 

# % regeneration of normal regeneration speed

HpRegenMultiplier = 100

MpRegenMultiplier = 100

CpRegenMultiplier = 100

 

# % regeneration and defence for RaidBoss and their minions

RaidHpRegenMultiplier = 100

RaidMpRegenMultiplier = 100

RaidDefenceMultiplier = 300

 

#Configure Minimum and Maximum multiplier time between RaidBoss respawn.

#By Default 12Hours*1.0 for Minimum Time and 24Hours*1.0 for Maximum Time.

RaidMinRespawnMultiplier = 1.0

RaidMaxRespawnMultiplier = 1.0

 

# Minions respawn timer 300000 = 5 mins

RaidMinionRespawnTime = 300000

 

# Unstuck interval, seconds, default is 300 sec.

UnstuckInterval = 30

 

# Player Protection after teleporting or login in seconds, 0 for disabled

PlayerSpawnProtection = 10

 

# Player Protection from (agro) mobs after getting up from fake death; in seconds, 0 for disabled

PlayerFakeDeathUpProtection = 0

# PARTY XP DISTRIBUTION

# Set the first option here to one of the (auto, percentage, level, none).

# With "auto method" member is cut from Exp/SP distribution when his share is lower

# then party bonus acquired for him (30% for 2 member party)

# In that case he will not receive any Exp/SP from party and is not counted for party bonus

# The second option takes effect when "percentage" method is choosen. Don't use high values for this!

# The third option takes effect when "level" method is choosen. Don't use low values for this!

# If you don't want to have a cutoff point for party members' XP distribution,

# then just set the first option to "none". Defaults are: percentage , 3.0 , 30 ; respectively.

PartyXpCutoffMethod = auto

PartyXpCutoffPercent = 3.0

PartyXpCutoffLevel = 30

 

# Amount of HP, MP, and CP is restored

# Values are in percent of max

RespawnRestoreCP = 0

RespawnRestoreHP = 70

RespawnRestoreMP = 70

 

# Allow random respawning in towns, based on a maximum random offset

# from the base respawn co-ordinates.

RespawnRandomInTown = True

RespawnRandomMaxOffset = 20

 

# Maximum number of allowed slots for Private Stores (sell/buy) for dwarves and for all other races

# Normally, dwarves get 5 slots for pvt stores, while other races get only 4

MaxPvtStoreSlotsDwarf = 5

MaxPvtStoreSlotsOther = 4

 

# Store buffs/debuffs other effects on user logout?

StoreSkillCooltime=True

 

# List of pet rent (wyvern,strider). etc: 111,222,333

ListPetRentNpc = 30827

 

# Announce to players the location of the Mammon NPCs during Seal Validation.

# Default is False.

AnnounceMammonSpawn = False

 

# Alt privileges for GMs based on command privileges

AltPrivilegesAdmin = False

AltPrivilegesSecureCheck = True

AltPrivilegesDefaultLevel = 100

 

# Allow different name color for GM and Admin characters.

GMNameColorEnabled = True

# Color to use for Admin names, if enabled. (access level 100+).

# (Must be in hex BGR format: eg. 00FF00 = Green)

AdminNameColor = 00FF00

# Color to use for GM names, if enabled. (access level 75+).

# (Must be in hex BGR format: eg. FFFF00 = Yellow)

GMNameColor = FFFF00

 

# Enable GMs to have the glowing aura of a Hero character.

GMHeroAura = True

 

# Auto set invulnerable status to a GM on login.

GMStartupInvulnerable = False

# Auto set invisible status to a GM on login.

GMStartupInvisible = False

# Auto block private messages to a GM on login.

GMStartupSilence = False

# Auto list GMs in GM list (/gmlist) on login.

GMStartupAutoList = True

# The way //admin panel looks can be "modern" or "classic"

# (default is modern while classic provides more compatibility)

GMAdminMenuStyle = modern

# Enable players to send in-game petitions.

PetitioningAllowed = True

# Total number of petitions to allow per player, per session.

MaxPetitionsPerPlayer = 5

# Total number of petitions pending, if more are submitted they will be rejected.

MaxPetitionsPending = 25

 

#---------------------------------------------

# Jail configuration

#---------------------------------------------

# Jail is a PvP zone

JailIsPvp = True

# Disable all chat in jail (except normal one)

JailDisableChat = True

 

#------------------------------------------

# Death Penalty chance if killed by mob (%)

#------------------------------------------

DeathPenaltyChance = 20

 

#------------------------------------------

# If you have >= 100 points

# You can buy usefull items

#------------------------------------------

PVPMerchant = 100

  • 0
Posted

You have to add them, by default all types of scrolls (blessed, crystal and normal) have the same rate.

 

You must edit config.java and requestEnchantItem.java

 

requestEnchantItem.java (removed packages / open license to be more readable) - the code isn't from me, but from a distrib I got - I think you can c/p the overall code, if you don't trust me just verify, it's around the middle :

 


public final class RequestEnchantItem extends L2GameClientPacket
{
   protected static final Logger _log = Logger.getLogger(Inventory.class.getName());
   private static final int[] ENCHANT_SCROLLS = { 729, 730, 947, 948, 951, 952, 955, 956, 959, 960 };
   private static final String _C__58_REQUESTENCHANTITEM = "[C] 58 RequestEnchantItem";
   private static final int[] CRYSTAL_SCROLLS = { 731, 732, 949, 950, 953, 954, 957, 958, 961, 962 };
   private static final int[] BLESSED_SCROLLS = { 6569, 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578 };
   
   private int _objectId;

   @Override
protected void readImpl()
   {
       _objectId = readD();
   }

   @Override
protected void runImpl()
   {
       L2PcInstance activeChar = getClient().getActiveChar();
       if (activeChar == null || _objectId == 0) return;
       
       if (activeChar.isProcessingTransaction()) 
        		                                                { 
        		                                                        activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION)); 
        		                                                        activeChar.setActiveEnchantItem(null); 
        		                                                        return; 
        		                                                } 

       L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
       L2ItemInstance scroll = activeChar.getActiveEnchantItem();
       activeChar.setActiveEnchantItem(null);
       if (item == null || scroll == null) return;

        // can't enchant rods, hero weapons and shadow items
       if(item.getItem().getItemType() == L2WeaponType.ROD
       		|| item.getItemId() >= 6611 && item.getItemId() <= 6621
       		|| item.isShadowItem())
       {
       	activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
           return;
       }
       if (activeChar.getActiveTradeList() != null)
       	    	{
       	    	activeChar.cancelActiveTrade();
       	    	activeChar.sendMessage("Your trade canceled");
       	    	return;
       	    	}
       	    	
       if(item.isWear())
       {
           Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant a weared Item", IllegalPlayerAction.PUNISH_KICK);
           return;
       }
       int itemType2 = item.getItem().getType2();
       boolean enchantItem = false;
       boolean blessedScroll = false;
       int crystalId = 0;

       /** pretty code ;D */
       switch (item.getItem().getCrystalType())
       {
           case L2Item.CRYSTAL_A:
               crystalId = 1461;
               switch(scroll.getItemId())
               {
                   case 729: case 731: case 6569:
                       if(itemType2 == L2Item.TYPE2_WEAPON)
                           enchantItem = true;
                       break;
                   case 730: case 732: case 6570:
                       if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
                           enchantItem = true;
                       break;
               }
               break;
           case L2Item.CRYSTAL_B:
               crystalId = 1460;
               switch(scroll.getItemId())
               {
                   case 947: case 949: case 6571:
                       if(itemType2 == L2Item.TYPE2_WEAPON)
                           enchantItem = true;
                       break;
                   case 948: case 950: case 6572:
                       if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
                           enchantItem = true;
                       break;
               }
               break;
           case L2Item.CRYSTAL_C:
               crystalId = 1459;
               switch(scroll.getItemId())
               {
                   case 951: case 953: case 6573:
                       if(itemType2 == L2Item.TYPE2_WEAPON)
                           enchantItem = true;
                       break;
                   case 952: case 954: case 6574:
                       if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
                           enchantItem = true;
                       break;
               }
               break;
           case L2Item.CRYSTAL_D:
               crystalId = 1458;
               switch(scroll.getItemId())
               {
                   case 955: case 957: case 6575:
                       if(itemType2 == L2Item.TYPE2_WEAPON)
                           enchantItem = true;
                       break;
                   case 956: case 958: case 6576:
                       if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
                           enchantItem = true;
                       break;
               }
               break;
           case L2Item.CRYSTAL_S:
               crystalId = 1462;
               switch(scroll.getItemId())
               {
                   case 959: case 961: case 6577:
                       if(itemType2 == L2Item.TYPE2_WEAPON)
                           enchantItem = true;
                       break;
                   case 960: case 962: case 6578:
                       if((itemType2 == L2Item.TYPE2_SHIELD_ARMOR) || (itemType2 == L2Item.TYPE2_ACCESSORY))
                           enchantItem = true;
                       break;
               }
               break;
       }

       if (!enchantItem)
       {
           activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
           return;
       }

       // Get the scroll type - Yesod
       if (scroll.getItemId() >= 6569 && scroll.getItemId() <= 6578)
           blessedScroll = true;
       else
           for (int crystalscroll : CRYSTAL_SCROLLS)
               if(scroll.getItemId() == crystalscroll)
               {
                   blessedScroll = true; break;
               }

       scroll = activeChar.getInventory().destroyItem("Enchant", scroll, activeChar, item);
       if(scroll == null)
       {
           activeChar.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_ITEMS));
           Util.handleIllegalPlayerAction(activeChar,"Player "+activeChar.getName()+" tried to enchant with a scroll he doesnt have", Config.DEFAULT_PUNISH);
           return;
       }

    // SystemMessage sm = new 
    		                        // SystemMessage(SystemMessageId.ENCHANT_SCROLL_CANCELLED); 
    		                        // activeChar.sendPacket(sm); 
    		                        SystemMessage sm; 
    		                        int chance = 0; 
    		                        int maxEnchantLevel = 0; 
    		                        if (item.getItem().getType2() == L2Item.TYPE2_WEAPON) 
    		                        { 
    		                                maxEnchantLevel = Config.ENCHANT_MAX_WEAPON; 
    		                                for (int scrollId : ENCHANT_SCROLLS) 
    		                                { 
    		                                        if (scroll.getItemId() == scrollId) 
                                            { 
    		                                                chance = Config.ENCHANT_CHANCE_WEAPON; 
    		                                                break; 
    		                                        } 
    		                                } 
    		                                for (int scrollId : CRYSTAL_SCROLLS) 
    		                                { 
    		                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    		                                                chance = Config.ENCHANT_CHANCE_WEAPON_CRYSTAL; 
    		                                                ; 
    		                                                break; 
    		                                        } 
    		                                } 
    		                                for (int scrollId : BLESSED_SCROLLS) 
    		                                { 
    		                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    		                                                chance = Config.ENCHANT_CHANCE_WEAPON_BLESSED; 
    		                                                break; 
    		                                        } 
    		                                } 
    		                        } else if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR) 
    		                        { 
    		                                maxEnchantLevel = Config.ENCHANT_MAX_ARMOR; 
    		                                for (int scrollId : ENCHANT_SCROLLS) 
    		                                { 
    		                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    		                                                chance = Config.ENCHANT_CHANCE_ARMOR; 
    		                                                break; 
    		                                        } 
    		                                } 
    		                                for (int scrollId : CRYSTAL_SCROLLS) 
    		                                { 
    		                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    		                                                chance = Config.ENCHANT_CHANCE_ARMOR_CRYSTAL; 
    		                                                break; 
    		                                        } 
    		                                } 
    		                                for (int scrollId : BLESSED_SCROLLS) 
    		                                { 
    		                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    	                                                chance = Config.ENCHANT_CHANCE_ARMOR_BLESSED; 
    		                                                break; 
    		                                        } 
    	                                } 
    		                        } else if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY) 
    		                        { 
    		                                maxEnchantLevel = Config.ENCHANT_MAX_JEWELRY; 
    		                                for (int scrollId : ENCHANT_SCROLLS) 
    		                                { 
    	                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    		                                                chance = Config.ENCHANT_CHANCE_JEWELRY; 
    		                                                break; 
    		                                        } 
    		                                } 
    		                                for (int scrollId : CRYSTAL_SCROLLS) 
    	                                { 
    		                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    		                                                chance = Config.ENCHANT_CHANCE_JEWELRY_CRYSTAL; 
    	                                               break; 
    	                                        } 
    		                                } 
    		                                for (int scrollId : BLESSED_SCROLLS) 
    		                                { 
    		                                        if (scroll.getItemId() == scrollId) 
    		                                        { 
    		                                                chance = Config.ENCHANT_CHANCE_JEWELRY_BLESSED; 
    		                                                break; 
    		                                        } 
    		                                } 
    		                        } 

       if (item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX
               || (item.getItem().getBodyPart() == L2Item.SLOT_FULL_ARMOR
                       && item.getEnchantLevel() < Config.ENCHANT_SAFE_MAX_FULL))
           chance = 100;

       if (Rnd.get(100) < chance)
       {
           synchronized(item)
           {
           	if (item.getOwnerId() != activeChar.getObjectId() // has just lost the item
           	    || (item.getEnchantLevel() >= maxEnchantLevel && maxEnchantLevel != 0))
           	{
           		activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
           		return;
           	}
           	if (item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY && item.getLocation() != L2ItemInstance.ItemLocation.PAPERDOLL)
           	{
           		activeChar.sendPacket(new SystemMessage(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION));
           		return;
           	}
           	if (item.getEnchantLevel() == 0)
           	{
           		sm = new SystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);
           		sm.addItemName(item.getItemId());
           		activeChar.sendPacket(sm);
           	}
           	else
           	{
           		sm = new SystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);
           		sm.addNumber(item.getEnchantLevel());
           		sm.addItemName(item.getItemId());
           		activeChar.sendPacket(sm);
           	}
           	item.setEnchantLevel(item.getEnchantLevel()+1);
           	item.updateDatabase();
           }
       }
       else
       {
           if (!blessedScroll)
           {
               if (item.getEnchantLevel() > 0)
               {
                   sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_S2_EVAPORATED);
                   sm.addNumber(item.getEnchantLevel());
                   sm.addItemName(item.getItemId());
                   activeChar.sendPacket(sm);
               }
               else
               {
                   sm = new SystemMessage(SystemMessageId.ENCHANTMENT_FAILED_S1_EVAPORATED);
                   sm.addItemName(item.getItemId());
                   activeChar.sendPacket(sm);
               }
           }
           else
           {
               sm = new SystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED);
               activeChar.sendPacket(sm);
           }
           
           if (!blessedScroll)
           {
               if (item.getEnchantLevel() > 0)
               {
                   sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
                   sm.addNumber(item.getEnchantLevel());
                   sm.addItemName(item.getItemId());
                   activeChar.sendPacket(sm);
               }
               else
               {
                   sm = new SystemMessage(SystemMessageId.S1_DISARMED);
                   sm.addItemName(item.getItemId());
                   activeChar.sendPacket(sm);
               }

               L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInSlotAndRecord(item.getEquipSlot());
               if (item.isEquipped())
               {
                   InventoryUpdate iu = new InventoryUpdate();
                   for (int i = 0; i < unequiped.length; i++)
                   {
                       iu.addModifiedItem(unequiped[i]);
                   }
                   activeChar.sendPacket(iu);
               
                   activeChar.broadcastUserInfo();
               }
               
               int count = item.getCrystalCount() - (item.getItem().getCrystalCount() +1) / 2;
               if (count < 1) count = 1;
   
               L2ItemInstance destroyItem = activeChar.getInventory().destroyItem("Enchant", item, activeChar, null);
               if (destroyItem == null) return;
               
               L2ItemInstance crystals = activeChar.getInventory().addItem("Enchant", crystalId, count, activeChar, destroyItem);
           
               sm = new SystemMessage(SystemMessageId.EARNED_S2_S1_S);
               sm.addItemName(crystals.getItemId());
               sm.addNumber(count);
               activeChar.sendPacket(sm);
   
               if (!Config.FORCE_INVENTORY_UPDATE)
               {
                   InventoryUpdate iu = new InventoryUpdate();
                   if (destroyItem.getCount() == 0) iu.addRemovedItem(destroyItem);
                   else iu.addModifiedItem(destroyItem);
                   iu.addItem(crystals);
                   
                   activeChar.sendPacket(iu);
               }
               else activeChar.sendPacket(new ItemList(activeChar, true));
           
               StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
               su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
               activeChar.sendPacket(su);
           
               activeChar.broadcastUserInfo();
           
               L2World world = L2World.getInstance();
               world.removeObject(destroyItem);
           }
           else
           {
               item.setEnchantLevel(0);
               item.updateDatabase();
           }
       }
       sm = null;
       
       StatusUpdate su = new StatusUpdate(activeChar.getObjectId());
       su.addAttribute(StatusUpdate.CUR_LOAD, activeChar.getCurrentLoad());
       activeChar.sendPacket(su);      
       su = null;
       
       activeChar.sendPacket(new EnchantResult(item.getEnchantLevel())); //FIXME i'm really not sure about this...
       activeChar.sendPacket(new ItemList(activeChar, false)); //TODO update only the enchanted item
       activeChar.broadcastUserInfo();
   }
   
   /* (non-Javadoc)
    * @see net.sf.l2j.gameserver.network.clientpackets.ClientBasePacket#getType()
    */
   @Override
public String getType()
   {
       return _C__58_REQUESTENCHANTITEM;
   }
}

 

Config.java > Search existing enchant variables to find where to put it.

 

    /** Chance blessed-crystal enchants */
   public static int ENCHANT_CHANCE_WEAPON_CRYSTAL; 
	public static int ENCHANT_CHANCE_ARMOR_CRYSTAL; 
	public static int ENCHANT_CHANCE_JEWELRY_CRYSTAL; 
	public static int ENCHANT_CHANCE_WEAPON_BLESSED; 
	public static int ENCHANT_CHANCE_ARMOR_BLESSED; 
	public static int ENCHANT_CHANCE_JEWELRY_BLESSED;



               /** Chance blessed-crystal enchants */
               ENCHANT_CHANCE_WEAPON_CRYSTAL = Integer.parseInt(otherSettings.getProperty("EnchantChanceWeaponCrystal", "100"));  
            	ENCHANT_CHANCE_ARMOR_CRYSTAL = Integer.parseInt(otherSettings.getProperty("EnchantChanceArmorCrystal", "100"));  
            	ENCHANT_CHANCE_JEWELRY_CRYSTAL = Integer.parseInt(otherSettings.getProperty("EnchantChanceJewelryCrystal", "100"));  
            	ENCHANT_CHANCE_WEAPON_BLESSED = Integer.parseInt(otherSettings.getProperty("EnchantChanceWeaponBlessed", "85"));  
               ENCHANT_CHANCE_ARMOR_BLESSED = Integer.parseInt(otherSettings.getProperty("EnchantChanceArmorBlessed", "85"));  
            	ENCHANT_CHANCE_JEWELRY_BLESSED = Integer.parseInt(otherSettings.getProperty("EnchantChanceJewelryBlessed", "85"));
               

 

others.properties

 

# Chance a Crystal Enchant Scroll will succeed after safe enchant. 
EnchantChanceWeaponCrystal = 100
EnchantChanceArmorCrystal = 100
EnchantChanceJewelryCrystal = 100

# Chance a Blessed Enchant Scroll will succeed after safe enchant. 
EnchantChanceWeaponBlessed = 85
EnchantChanceArmorBlessed = 85
EnchantChanceJewelryBlessed = 85

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...