Jump to content

DOWNLOAD MODS

Are you looking for something shiny for your load order? We have many exclusive mods and resources you won't find anywhere else. Start your search now...

LEARN MODDING

Ready to try your hand at making your own mod creations? Visit the Enclave, the original ES/FO modding school, and learn the tricks of the trade from veteran modders...

JOIN THE ALLIANCE

Membership is free and registering unlocks image galleries, project hosting, live chat, unlimited downloads, & more...

Summon Food Script please help


WildWitch
 Share

Recommended Posts

Hello all Im trying to make a spell to summon food
 
Here is my script, it wont compile it says zzzRPC_SummonFoodScript.psc(31,0): mismatched input 'Event' expecting ENDEVENT
 
Any help would be appreciated
thank you
 
Scriptname zzzRPC_SummonFoodScript extends activemagiceffect  
 
Message Property SummonFoodmenuMESG Auto
Message Property DesertMESG Auto
Message Property MainMESG Auto
Message Property SideMESG Auto
Potion Property Dessert0  Auto  
Potion Property Dessert1  Auto  
Potion Property Dessert2  Auto  
Potion Property Dessert3  Auto  
Potion Property Dessert4  Auto  
Potion Property Dessert5  Auto  
Potion Property Dessert6  Auto  
Potion Property Main0  Auto 
Potion Property Main1  Auto 
Potion Property Main2  Auto 
Potion Property Main3  Auto 
Potion Property Main4  Auto 
Potion Property Main5  Auto 
Potion Property Side0  Auto  
Potion Property Side1  Auto 
Potion Property Side2  Auto 
Potion Property Side3  Auto 
Potion Property Side4  Auto 
Potion Property Side5  Auto 
Potion Property Side6  Auto 
 
EVENT OnEffectStart(Actor akTarget, Actor akCaster)
objectReference caster = akCaster
 
Event OnRead()
Game.DisablePlayerControls(False, False, False, False, False, True) ; Ensure MessageBox is not on  top of other menus & prevent book from opening normally.
Game.EnablePlayerControls(False, False, False, False, False, True) ; Undo DisablePlayerControls
Menu()
 EndEvent
 
Function Menu(Bool abMenu = True, Int aiButton = 0)
While abMenu
If aiButton != -1 ; Wait for input (this can prevent problems if recycling the aiButton  argument in submenus)
aiButton = SummonFoodmenuMESG.Show() ; Main Menu
abMenu = False ; End the function
If aiButton == 0 ; Dessert
aiButton = DesertMESG.Show()
If aiButton == 0 ; Sweet Roll
caster.addItem(Dessert0)
ElseIf aiButton == 1 ; Apple Pie
caster.addItem(Dessert1)
ElseIf aiButton == 2 ; Boiled Cream Treat
caster.addItem(Dessert2)
ElseIf aiButton == 3 ; Honey Nut Treat
caster.addItem(Dessert3)
ElseIf aiButton == 4 ; Snowberry Crostata
caster.addItem(Dessert4)
ElseIf aiButton == 5 ; Juniper Berry Crostata
caster.addItem(Dessert5)
ElseIf aiButton == 6 ; Jazbay Crostata
caster.addItem(Dessert6)
ElseIf aiButton == 1 ; Main
aiButton = MainMESG .Show()
If aiButton == 0 ;  Pheasent Roast
caster.addItem(Main0)
ElseIf aiButton == 1 ; Salmon Steak
caster.addItem(Main1)
ElseIf aiButton == 2 ; Cooked Beef
caster.addItem(Main2)
ElseIf aiButton == 3 ; Grilled Chicken Breast
caster.addItem(Main3)
ElseIf aiButton == 4 ; Steamed Mudcrab Legs
caster.addItem(Main4)
ElseIf aiButton == 5 ; Horker Loaf
caster.addItem(Main5)
EndIf
ElseIf aiButton == 2 ; side
aiButton = SideMESG .Show()
If aiButton == 0 ;  Goat Cheese Wedge
caster.addItem(Side0)
ElseIf aiButton == 1 ; Garlic Bread
caster.addItem(Side1)
ElseIf aiButton == 2 ; Vegetable Soup
caster.addItem(Side2)
ElseIf aiButton == 3 ; Tomato Soup
caster.addItem(Side3)
ElseIf aiButton == 4 ; Elsweyr Fondue
caster.addItem(Side4)
ElseIf aiButton == 5 ; Braided Bread
caster.addItem(Side5)
ElseIf aiButton == 6 ; Chicken Dumpling
caster.addItem(Side6)
EndIf
Endif
Endif
Endif
EndWhile
endFunction
Link to comment
Share on other sites

When you post a script like this, it is a great help if you put it in code format using the <> button in the editor toolbar. Reading a script without any indentation is an enormous pain! Also, when a script is lengthy, it is a good idea to enclose it in spoiler tags. If you don't know how to use those, use the "Special BB Code" button on the toolbar, which is just to the left of the font window.

 

That out of the way, your problem is that you are missing an "EndEvent" statement for "Event OnEffectStart". Events can not be nested within other events, so the compiler does not expect to see a new Event statement in the middle of some other event. Your "Event OnRead" is confusing the compiler because you haven't yet ended the previous event.

 

But I don't quite understand your concept here. Are you ordering the food through a book? If so, why are you using an ActiveMagicEffect script? I would think the book should be set up as an activator, using an ObjectReference script to display the menu and add the items to your inventory.

 

Your OnEffectStart event has no code in it, so it seems to have no reason for existing. What exactly starts this summoning effect? It appears that it will trigger whenever the player picks up any book, which means that a player with this effect in place will never be able to actually read any book again, but will always get a menu of food.

Edited by BrettM
Link to comment
Share on other sites

Kay thank you for your help, the script was once summoned from a plate of food activator but I decided to cannibalize it to make a summon food spell, does this mean I can get rid of the entire Event on read?.

 

Also Im not sure what you mean by putting it in code format as Im a complete beginner to scripting, the script is a direct copy from papyrus in the creation kit

 

thank you again for your help

Link to comment
Share on other sites

By "putting it in code format" I mean that you should highlight the script after you paste it and then hit the <> button in the editor toolbar to format it with a fixed-pitch font and indent it properly so that it's easier to read, just the way it appears in the CK when you copy it. For example:

Scriptname SomeScript Extends SomeOtherScript

Event OnWhatever()

    ... some code

    if x == y
        ... more code
    elseif y == x
        ... yet more code
    endif

EndEvent

See the difference between that and everything else typed in this post? Code should be formatted like that so that it's easier to understand things like the extremely-long series of if-elseif statements in your menu function.

 

My main point is that what you are doing is doesn't look like a spell at all and doesn't seem to summon anything, unless it somehow produces the book. Where does this book come from? Have you defined a Magic Effect and created a Spell that uses it? If not, then you're putting the cart before the horse, I think, by trying to script something that doesn't yet exist. But your spell would only add the book to the player's inventory in the OnEffectStart event, and not have anything to do with your OnRead event, properties, or menu function.

 

If the player gets the book by some ordinary means, such as finding it in a chest or buying it from a merchant, then you don't need any Magic Effect, Spell, or ActiveMagicEffect script at all.

 

No matter how the book is obtained, what happens when the player finally has the book and reads it is still not a magic effect or a summoning, since reading a book is not casting a spell. What you would need to do do is to create the book in the CK and attach a script to that. The script would be an ObjectReference script that would have an OnRead event which activates whenever the player tries to open the book. So you would keep the properties, OnRead event, and menu function that you already have, change the script to extend ObjectReference instead of ActiveMagicEffect, and get rid of the OnEffectStart event.

 

If the book was summoned by your spell and is supposed to disappear after it is read, then your OnRead event would also have to handle that.

 

However, if you want to actually summon the food directly, then there is no need for any book to be involved at all, so there would be no OnRead event. You would define your MagicEffect and your Spell, then write your ActiveMagicEffect script to call your menu function from the OnEffectStart event. I've never done any spell scripts, so I don't know exactly how you would have to define the MagicEffect and Spell, but I'm sure there are a large number of tutorials out there on how to create those things properly.

Link to comment
Share on other sites


Scriptname zzzRPC_SummonFoodScript extends activemagiceffect  
Message Property SummonFoodmenuMESG Auto
Message Property DesertMESG Auto
Message Property MainMESG Auto
Message Property SideMESG Auto
Potion Property Dessert0  Auto  
Potion Property Dessert1  Auto  
Potion Property Dessert2  Auto  
Potion Property Dessert3  Auto  
Potion Property Dessert4  Auto  
Potion Property Dessert5  Auto  
Potion Property Dessert6  Auto  
Potion Property Main0  Auto 
Potion Property Main1  Auto 
Potion Property Main2  Auto 
Potion Property Main3  Auto 
Potion Property Main4  Auto 
Potion Property Main5  Auto 
Potion Property Side0  Auto  
Potion Property Side1  Auto 
Potion Property Side2  Auto 
Potion Property Side3  Auto 
Potion Property Side4  Auto 
Potion Property Side5  Auto 
Potion Property Side6  Auto 


EVENT OnEffectStart(Actor akTarget, Actor akCaster)
objectReference caster = akCaster
endevent


Function Menu(Bool abMenu = True, Int aiButton = 0)
While abMenu
If aiButton != -1 ; Wait for input (this can prevent problems if recycling the aiButton  argument in submenus)
aiButton = SummonFoodmenuMESG.Show() ; Main Menu
abMenu = False ; End the function
If aiButton == 0 ; Dessert
aiButton = DesertMESG.Show()
If aiButton == 0 ; Sweet Roll
caster.addItem(Dessert0)
ElseIf aiButton == 1 ; Apple Pie
caster.addItem(Dessert1)
ElseIf aiButton == 2 ; Boiled Cream Treat
caster.addItem(Dessert2)
ElseIf aiButton == 3 ; Honey Nut Treat
caster.addItem(Dessert3)
ElseIf aiButton == 4 ; Snowberry Crostata
caster.addItem(Dessert4)
ElseIf aiButton == 5 ; Juniper Berry Crostata
caster.addItem(Dessert5)
ElseIf aiButton == 6 ; Jazbay Crostata
caster.addItem(Dessert6)
ElseIf aiButton == 1 ; Main
aiButton = MainMESG .Show()
If aiButton == 0 ;  Pheasent Roast
caster.addItem(Main0)
ElseIf aiButton == 1 ; Salmon Steak
caster.addItem(Main1)
ElseIf aiButton == 2 ; Cooked Beef
caster.addItem(Main2)
ElseIf aiButton == 3 ; Grilled Chicken Breast
caster.addItem(Main3)
ElseIf aiButton == 4 ; Steamed Mudcrab Legs
caster.addItem(Main4)
ElseIf aiButton == 5 ; Horker Loaf
caster.addItem(Main5)
EndIf
ElseIf aiButton == 2 ; side
aiButton = SideMESG .Show()
If aiButton == 0 ;  Goat Cheese Wedge
caster.addItem(Side0)
ElseIf aiButton == 1 ; Garlic Bread
caster.addItem(Side1)
ElseIf aiButton == 2 ; Vegetable Soup
caster.addItem(Side2)
ElseIf aiButton == 3 ; Tomato Soup
caster.addItem(Side3)
ElseIf aiButton == 4 ; Elsweyr Fondue
caster.addItem(Side4)
ElseIf aiButton == 5 ; Braided Bread
caster.addItem(Side5)
ElseIf aiButton == 6 ; Chicken Dumpling
caster.addItem(Side6)
EndIf
Endif
Endif
Endif
EndWhile
endFunction
endevent

Ok now it says

 

 

zzzRPC_SummonFoodScript.psc(90,0): missing EOF at 'endevent'
 
Unfortunately the <> button is not working for me
Edited by WildWitch
Link to comment
Share on other sites

"Missing EOF" stands for "Missing Event or Function."

 

You have an extra "EndEvent" statement following your menu function that does not have a matching "Event" statement before it, so the compiler thinks that an event is missing.

 

Statements other than comments and declarations must be within an "Event ... EndEvent" or "Function ... EndFunction" block, and blocks can't be contained within other blocks.

 

It isn't clear to me why you're trying to compile that, though. There is no code in your OnEffectStart block, so nothing in that script will ever be executed.

Link to comment
Share on other sites

Ah well then maybe I should just leave it to the professionals, Like I said I cannibalized another script I wrote that used a plate of food and a food spawn marker. Thank you for your help, its a pity I cant get it to work but maybe Ill put my ideas into an ideas thread. :) 

Link to comment
Share on other sites

Why give up now? All you need to do is to remove the extra EndEvent statement and call your menu function from your OnEffectStart block and you will have a script that actually does something. As to whether the whole thing will work, I guess that would depend on how you set up the Magic Effect and Spell that will use it.

 

It seems to me that it shouldn't be any harder to summon food than it is to summon a ball of light that floats over your head. Personally, I would just have a look at how the CandleLight spell works to see how a basic summoning should be set up.

Link to comment
Share on other sites

You got me curious, Willie. :) Never having done any magic spells, I knew that the Magic Effect dialog looked kind of intimidating, but it didn't seem like summoning a little food into inventory was starting at the deep end of the pool. Not like, say, making it rain bread and salmon.

 

So I made a copy of the Candlelight magic effect, set the Effect Archetype to Script, and changed the school to Conjuration. Then I added a simple script to it:

Scriptname fpiSummonFoodSCRIPT extends activemagiceffect  

Potion Property SummonedSweetroll  Auto

ObjectReference CasterREF

EVENT OnEffectStart(Actor akTarget, Actor akCaster)
    CasterREF = akCaster as ObjectReference

    CasterREF.AddItem(SummonedSweetroll)

endevent

I made a SummonFood spell to call it, set at the Conjuration Novice level, again working from a copy of the Candlelight spell.

 

In-game, I added it to my character through the console Player.Addspell command and tried it. I got a sweetroll.

 

If I replaced CasterREF.AddItem with a call to a menu function, would it somehow screw things up?

Link to comment
Share on other sites

The difficulty is not the script, the difficulty is getting the script attached to a magic spell correctly.

 

The menu is simple. Here is a multi-menu spell script that teleports the player to different locations.

There are multiple nested menu's.

 

*Note - since this is in the OnEffectStart event, it only runs once, so I cannot 'go back' to a previous menu as the code is executed from top to bottom.

Scriptname LevelersSpellHomeScript extends activemagiceffect  
{Teleport Home Spell Script}

ObjectReference property HomeTarget auto
ObjectReference property TeleTarget auto
ObjectReference Property WhiterunMarker  Auto  
ObjectReference Property RiftenMarker  Auto  
ObjectReference Property WindhelmMarker  Auto  
ObjectReference Property WinterholdMarker  Auto  
ObjectReference Property DawnstarMarker  Auto  
ObjectReference Property SolitudeMarker  Auto  
ObjectReference Property MarkarthMarker  Auto  
ObjectReference Property FalkreathMarker  Auto  
ObjectReference Property MorthalMarker  Auto  
ObjectReference Property RiverwoodMarker  Auto  
ObjectReference Property IvarsteadMarker  Auto  
ObjectReference Property RoriksteadMarker  Auto  

ObjectReference Property Unique1Marker  Auto  
ObjectReference Property Unique2Marker  Auto  
ObjectReference Property Unique3Marker  Auto  
ObjectReference Property CollegeWinterholdMarker  Auto  
ObjectReference Property DawnstarSantuaryMarker  Auto  
ObjectReference Property RaggedFlagonMarker  Auto  
ObjectReference Property JorrvaskrMarker  Auto  

ObjectReference Property LevTeleportMarker02REF  Auto  
ObjectReference Property LevTeleportMarker3REF  Auto  
ObjectReference Property LevTeleportMarker4REF  Auto  
ObjectReference Property LevTeleportMarker5REF  Auto  
ObjectReference Property LevTeleportMarker6REF  Auto  
ObjectReference Property LevTeleportMarker7REF  Auto  
ObjectReference Property LevTeleportMarker8REF  Auto  
ObjectReference Property LevTeleportMarker99REF  Auto  
ObjectReference Property LevTeleportMarker9REF  Auto  

ObjectReference Property LevMarker01REF  Auto  
ObjectReference Property LevMarker02REF  Auto  
ObjectReference Property LevMarker03REF  Auto  
ObjectReference Property LevMarker04REF  Auto  
ObjectReference Property LevMarker05REF  Auto  
ObjectReference Property LevMarker06REF  Auto  
ObjectReference Property LevMarker07REF  Auto  
ObjectReference Property LevMarker08REF  Auto  

GlobalVariable Property LevelersTeleportPadGBL  Auto  

Message Property Question01MSG  Auto  
Message Property Question10MSG  Auto  
Message Property Question11MSG  Auto  
Message Property Question12MSG  Auto  
Message Property Question20MSG  Auto  
Message Property Question21MSG  Auto  
Message Property Question30MSG  Auto  
Message Property Question31MSG  Auto  
Message Property LevelersHome16MarkedMSG  Auto  

Actor caster
ObjectReference casterRef

int Button
int Button2
int Button3
int Button4
int Button5
int Button6
int Button7
int Button8
int myMarker

Event OnEffectStart(Actor akTarget, Actor akCaster)
	caster = akCaster
	casterRef = (caster as ObjectReference)
	Button = Question01MSG.Show()

	if Button == 0
;tower
		myMarker = LevelersTeleportPadGBL.GetValue() as int
		TeleTarget.MoveTo(caster)
		Utility.Wait(1.0)
		if myMarker == 0
			casterRef.MoveTo(HomeTarget)
		elseif myMarker == 1
			casterRef.MoveTo(LevTeleportMarker02REF)
		elseif myMarker == 2
			casterRef.MoveTo(LevTeleportMarker3REF)
		elseif myMarker == 3
			casterRef.MoveTo(LevTeleportMarker4REF)
		elseif myMarker == 4
			casterRef.MoveTo(LevTeleportMarker5REF)
		elseif myMarker == 5
			casterRef.MoveTo(LevTeleportMarker6REF)
		elseif myMarker == 7
			casterRef.MoveTo(LevTeleportMarker7REF)
		elseif myMarker == 8
			casterRef.MoveTo(LevTeleportMarker8REF)
		elseif myMarker == 99
			casterRef.MoveTo(LevTeleportMarker99REF)
		elseif myMarker == 9
			casterRef.MoveTo(LevTeleportMarker9REF)
		else
			casterRef.MoveTo(HomeTarget)
		endif
	elseif Button == 1
;return
		Utility.Wait(1.0)
		casterRef.MoveTo(TeleTarget)
	elseif Button == 2
;===markers
		Button4 = Question10MSG.Show()
		if Button4 == 0
;mark
			Button5 = Question11MSG.Show()
			if Button5 == 0
				LevMarker01REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(1)
			elseif Button5 == 1
				LevMarker02REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(2)
			elseif Button5 == 2
				LevMarker03REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(3)
			elseif Button5 == 3
				LevMarker04REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(4)
			elseif Button5 == 4
				LevMarker05REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(5)
			elseif Button5 == 5
				LevMarker06REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(6)
			elseif Button5 == 6
				LevMarker07REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(7)
			elseif Button5 == 7
				LevMarker08REF.MoveTo(casterRef)
				LevelersHome16MarkedMSG.Show(8)
			elseif Button5 == 8
;cancel
			endif
		elseif Button4 == 1
;recall
			Button6 = Question12MSG.Show()
			if Button6 == 0
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker01REF)
			elseif Button6 == 1
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker02REF)
			elseif Button6 == 2
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker03REF)
			elseif Button6 == 3
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker04REF)
			elseif Button6 == 4
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker05REF)
			elseif Button6 == 5
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker06REF)
			elseif Button6 == 6
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker07REF)
			elseif Button6 == 7
				Utility.Wait(1.0)
				casterRef.MoveTo(LevMarker08REF)
			elseif Button6 == 8
;cancel
			endif
		elseif Button4 == 2
;cancel
		endif
	elseif Button == 3
;===Cities
		Button2 = Question20MSG.Show()
		if Button2 == 0
;markarth
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(MarkarthMarker)
		elseif Button2 == 1
;riften
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(RiftenMarker)
		elseif Button2 == 2
;solitude
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(SolitudeMarker)
		elseif Button2 == 3
;whiterun
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(WhiterunMarker)
		elseif Button2 == 4
;windhelm
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(WindhelmMarker)
		elseif Button2 == 5
			Button3 = Question21MSG.Show()
			if Button3 == 0
;dawnstar
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(DawnstarMarker)
			elseif Button3 == 1
;falkreath
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(FalkreathMarker)
			elseif Button3 == 2
;morthal
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(MorthalMarker)
			elseif Button3 == 3
;winterhold
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(WinterholdMarker)
			elseif Button3 == 4
;riverwood
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(RiverwoodMarker)
			elseif Button3 == 5
;Ivarstead
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(IvarsteadMarker)
			elseif Button3 == 6
;Rorikstead
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(RoriksteadMarker)
			elseif Button3 == 7
;cancel
			endif
		elseif Button2 == 6
;cancel
		endif
	elseif Button == 4
;===unique
		Button7 = Question30MSG.Show()
		if Button7 == 0
;Unique1
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(Unique1Marker)
		elseif Button7 == 1
;Unique2
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(Unique2Marker)
		elseif Button7 == 2
;Unique3
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(Unique3Marker)
		elseif Button7 == 3
;Unique4
			TeleTarget.MoveTo(caster)
			Utility.Wait(1.0)
			casterRef.MoveTo(CollegeWinterholdMarker)
		elseif Button7 == 4
			Button8 = Question31MSG.Show()
			if Button8 == 0
;Unique5
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(DawnstarSantuaryMarker)
			elseif Button8 == 1
;Unique6
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(RaggedFlagonMarker)
			elseif Button8 == 2
;Unique7
				TeleTarget.MoveTo(caster)
				Utility.Wait(1.0)
				casterRef.MoveTo(JorrvaskrMarker)
			elseif Button7 == 5
;cancel
			endif
		elseif Button7 == 5
;cancel
		endif
	elseif Button == 5
;cancel
	endif

endEVENT
Link to comment
Share on other sites

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
Reply to this topic...

×   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.

 Share

×
×
  • Create New...