89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
| # Script for Lursendis the gourmet (/wolfsburg/lursendis).
 | |
| # Idea courtesy Yann Chachkoff.
 | |
| #
 | |
| # The script assumes you have:
 | |
| # * Lursendis
 | |
| # * a place where the player will drop the special omelet
 | |
| #
 | |
| # Copyright 2007 Nicolas Weeger
 | |
| # Released as GPL
 | |
| #
 | |
| # This script is supposed to be called for the time event of Lursendis.
 | |
| 
 | |
| import Crossfire
 | |
| import CFMove
 | |
| import random
 | |
| 
 | |
| key_status = 'gourmet_status'
 | |
| st_getting = 'getting'
 | |
| st_eating = 'eating'
 | |
| key_eating_step = 'eating_step'
 | |
| plate_x = 2
 | |
| plate_y = 6
 | |
| 
 | |
| banquet_path = '/python/items/banquet.py'
 | |
| banquet_archetype = 'tome'
 | |
| event_archetype = 'event_apply'
 | |
| 
 | |
| color = Crossfire.MessageFlag.NDI_GREEN	# color to display messages
 | |
| 
 | |
| def check_plate():
 | |
| 	obj = whoami.Map.ObjectAt(plate_x, plate_y)
 | |
| 	while obj != None:
 | |
| 		if obj.NamePl == 'Farnass\'s Special Caramels' and obj.Slaying == 'Farnass\'s Special Caramel':
 | |
| 			if whoami.ReadKey(key_status) == st_getting:
 | |
| 				whoami.Map.Print('%s grabs %s and starts eating with an obvious pleasure.'%(whoami.Name, obj.Name))
 | |
| 				obj.Quantity = obj.Quantity - 1
 | |
| 				whoami.WriteKey(key_status, st_eating, 1)
 | |
| 				whoami.WriteKey(key_eating_step, str(random.randint(5, 10)), 1)
 | |
| 				Crossfire.SetReturnValue(1)
 | |
| 				return
 | |
| 			
 | |
| 			whoami.Say('Oh! Could this be...')
 | |
| 			whoami.WriteKey(key_status, st_getting, 1)
 | |
| 			Crossfire.SetReturnValue(1)
 | |
| 			return
 | |
| 
 | |
| 		obj = obj.Above
 | |
| 	
 | |
| 	if whoami.ReadKey(key_status) == st_getting:
 | |
| 		# we were on the spot, but no more omelet...
 | |
| 		whoami.WriteKey(key_status, '', 1)
 | |
| 
 | |
| def create_book():
 | |
| 	book = whoami.Map.CreateObject(banquet_archetype, whoami.X, whoami.Y)
 | |
| 	book.Name = 'Unforgettable Banquet of %s'%whoami.Name
 | |
| 	book.NamePl = 'Unforgettable Banquets of %s'%whoami.Name
 | |
| 	event = book.CreateObject(event_archetype)
 | |
| 	event.Slaying = banquet_path
 | |
| 	event.Title = Crossfire.WhatIsEvent().Title
 | |
| 
 | |
| def move_gourmet():
 | |
| 	st = whoami.ReadKey(key_status)
 | |
| 	if st == st_getting:
 | |
| 		move = CFMove.get_object_to(whoami, plate_x, plate_y)
 | |
| 		if move == 0:
 | |
| 			check_plate()
 | |
| 			return
 | |
| 		elif move == 2:
 | |
| 			whoami.Say('Get outta my way!')
 | |
| 		Crossfire.SetReturnValue(1)
 | |
| 		return
 | |
| 	elif st == st_eating:
 | |
| 		step = int(whoami.ReadKey(key_eating_step)) - 1
 | |
| 		if step == 0:
 | |
| 			whoami.WriteKey(key_eating_step, '', 1)
 | |
| 			whoami.WriteKey(key_status, '', 1)
 | |
| 			whoami.Say('Now that\'s what I call a caramel! Thank you very much!')
 | |
| 			whoami.Say('Here, take this as a token of my gratitude.')
 | |
| 			create_book()
 | |
| 			return
 | |
| 		whoami.WriteKey(key_eating_step, str(step), 1)
 | |
| 		Crossfire.SetReturnValue(1)
 | |
| 		return
 | |
| 	
 | |
| 	check_plate()
 | |
| 
 | |
| whoami = Crossfire.WhoAmI()
 | |
| move_gourmet()
 |