380 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			380 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Python
		
	
	
| import Crossfire,random,math,sys
 | |
| import CFDataBase
 | |
| CFDB=CFDataBase.CFDataBase("PShop")
 | |
| 
 | |
| Params=Crossfire.ScriptParameters()
 | |
| 
 | |
| def GetObjectByName(object, Name):
 | |
| 	while object.Name!=Name:
 | |
| 		object=object.Above
 | |
| 		if not object:
 | |
| 			return 0
 | |
| 	return object
 | |
| def FindFridge(object):
 | |
| 	TRUE=False
 | |
| 	while object!=None:
 | |
| 		if object.Name=="Shop Floor":
 | |
| 			TRUE=True
 | |
| 			object=None
 | |
| 		else:
 | |
| 			object=object.Below
 | |
| 	return TRUE
 | |
| def FindPuddle(object):
 | |
| 	a=object
 | |
| 	while object!=None:
 | |
| 		if object.Name.find("Puddle")>-1:
 | |
| 
 | |
| 			return object
 | |
| 		else:
 | |
| 			object=object.Above
 | |
| 	object=a
 | |
| 	while object!=None:
 | |
| 		if object.Name.find("Puddle")>-1:
 | |
| 
 | |
| 			return object
 | |
| 		else:
 | |
| 			object=object.Below
 | |
| 	return None
 | |
| if Params=="Destroy":
 | |
| 
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 	a=whoami.Inventory
 | |
| 	while a !=None:
 | |
| 		a.Remove()
 | |
| 		a=whoami.Inventory
 | |
| 
 | |
| 
 | |
| 
 | |
| 	b=whoami.CreateObject("icecube")
 | |
| 	b.Weight=0
 | |
| 	z=b.CreateObject("event_time")
 | |
| 	b.Speed=0.0010000000475*4
 | |
| 	if whoami.Map.Path.find("/world_")>-1:
 | |
| 		b.Speed=b.Speed*10
 | |
| 	z.Title="Python"
 | |
| 	z.Name="Puddle"
 | |
| 	z.Slaying="/python/pshop/Ice.py"
 | |
| 	z=b.CreateObject("event_destroy")
 | |
| 	z.Title="Python"
 | |
| 	z.Name="PuddleDeath"
 | |
| 	z.Slaying="/python/pshop/Ice.py"
 | |
| 	b.NamePl=str(1)
 | |
| 	b.Teleport(whoami.Map,whoami.X,whoami.Y)
 | |
| 	g=FindPuddle(b)
 | |
| 	if g!=None:
 | |
| 		b.Remove()
 | |
| 		b=g
 | |
| 
 | |
| 	b.Weight+=whoami.Weight
 | |
| 	b.Name="Puddle"
 | |
| 	if b.Weight<2000:
 | |
| 		b.Face="rain1.111"
 | |
| 	elif b.Weight<20000:
 | |
| 		b.Face="rain2.111"
 | |
| 	elif b.Weight<200000:
 | |
| 		b.Face="rain3.111"
 | |
| 	elif b.Weight<2000000:
 | |
| 		b.Face="rain4.111"
 | |
| 	else:
 | |
| 		b.Face="rain5.111"
 | |
| 	b.Pickable=0
 | |
| elif Params=="FogDeath":
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 	a=whoami.Inventory
 | |
| 
 | |
| 	while a !=None:
 | |
| 
 | |
| 		a.Remove()
 | |
| 		a=whoami.Inventory
 | |
| elif Params=="Fog":
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 	Rand=random.randint(0,8)
 | |
| 	if Rand!=0:
 | |
| 		whoami.Move(Rand)
 | |
| 
 | |
| 	whoami.Weight-=1
 | |
| 	if whoami.Weight>=0:
 | |
| 		Crossfire.SetReturnValue(1)
 | |
| 
 | |
| 
 | |
| elif Params=="Get":
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 	activator=Crossfire.WhoIsActivator()
 | |
| 
 | |
| 
 | |
| 	Dict=CFDB.get("pshop")
 | |
| 
 | |
| 	WL=str(whoami.WeightLimit)
 | |
| 	Me=Dict.get(WL)
 | |
| 
 | |
| 	a=(Me[0],"PickedUp",Me[2])
 | |
| 
 | |
| 	#Me=str(Me[0],(activator.X,activator.Y),Me[1])
 | |
| 
 | |
| 
 | |
| 	Dict.update({str(whoami.WeightLimit):(a[0],a[1],a[2])})
 | |
| 	CFDB.store("pshop",Dict)
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| elif Params=="Player":
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| elif Params=="PuddleDeath":
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 
 | |
| 	Fogs=int(whoami.Weight/1000)
 | |
| 	Fogs=max(Fogs,1)
 | |
| 	a=whoami.Inventory
 | |
| 	while a !=None:
 | |
| 		a.Remove()
 | |
| 		a=whoami.Inventory
 | |
| 	FogsTmp=Fogs
 | |
| 	if whoami.Name=="fog":
 | |
| 		FogsTmp=whoami.Value
 | |
| 	if Fogs > 50:
 | |
| 		z=whoami.CreateObject("temp_fog")
 | |
| 		Z=z.CreateObject("event_destroy")
 | |
| 		Z.Name="PuddleDeath"
 | |
| 		Z.Title="Python"
 | |
| 		Z.Slaying="/python/pshop/Ice.py"
 | |
| 		z.Weight=(Fogs-50)*1000
 | |
| 		Fogs=50
 | |
| 		z.Speed*=2
 | |
| 		z.Value=FogsTmp
 | |
| 
 | |
| 	for i in range(Fogs):
 | |
| 
 | |
| 		z=whoami.CreateObject("temp_fog")
 | |
| 		z.Speed+=0.3
 | |
| 		z.Weight=(3+random.randint(1,10+int(math.sqrt(FogsTmp))))*3
 | |
| 		Rand=random.randint(1,2+int(FogsTmp/10))
 | |
| 		z.Speed*=Rand
 | |
| 		z.Weight*=int(Rand/10)+1
 | |
| 
 | |
| 		y=z.CreateObject("event_time")
 | |
| 		y.Name="Fog"
 | |
| 		y.Title="Python"
 | |
| 		y.Slaying="/python/pshop/Ice.py"
 | |
| 		#y=z.CreateObject("event_destroy")
 | |
| 		#y.Name="FogDeath"
 | |
| 		#y.Title="Python"
 | |
| 		#y.Slaying="/python/pshop/Ice.py"
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| elif Params=="Puddle":
 | |
| 
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 	whoami.Value+=1
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	#whoami.Speed+=(0.00010000000475/2)
 | |
| 
 | |
| 	Mass=int(math.sqrt(whoami.Weight))
 | |
| 	IntMass=int(Mass/1000)
 | |
| 	for i in range(IntMass):
 | |
| 		z=whoami.CreateObject("temp_fog")
 | |
| 		y=z.CreateObject("event_time")
 | |
| 		y.Name="Fog"
 | |
| 		y.Title="Python"
 | |
| 		y.Slaying="/python/pshop/Ice.py"
 | |
| 		#y=z.CreateObject("event_destroy")
 | |
| 		#y.Name="FogDeath"
 | |
| 		#y.Title="Python"
 | |
| 		#y.Slaying="/python/pshop/Ice.py"
 | |
| 		z.Weight=(3+random.randint(1,int(IntMass)+10))
 | |
| 		z.Speed=5*z.Speed
 | |
| 		whoami.Drop(z)
 | |
| 	whoami.Weight-=Mass
 | |
| 	if whoami.Weight<=0:
 | |
| 
 | |
| 		whoami.Remove()
 | |
| 	else:
 | |
| 		if whoami.Weight>20000:
 | |
| 			a=whoami.CreateObject('icecube')
 | |
| 			Mass=random.randint(1,int(whoami.Weight/2))
 | |
| 			whoami.Weight-=Mass
 | |
| 
 | |
| 			a.Weight=Mass
 | |
| 			Direction=random.randint(1,8)
 | |
| 			whoami.Drop(a)
 | |
| 			tmp=0
 | |
| 			CTRL=0
 | |
| 
 | |
| 
 | |
| 			if whoami.Map.Path.find("/world/world_")>-1:
 | |
| 				tmp=0
 | |
| 				CTRL=0
 | |
| 				XY=(whoami.X,whoami.Y)
 | |
| 
 | |
| 				while tmp==0:
 | |
| 					tmp=whoami.Move(Direction)
 | |
| 					Direction+=1
 | |
| 					if Direction==9:
 | |
| 						Direction=1
 | |
| 					CTRL+=1
 | |
| 					if CTRL==8:
 | |
| 						tmp=2
 | |
| 				a.Teleport(whoami.Map, whoami.X,whoami.Y)
 | |
| 				whoami.Teleport(whoami.Map,XY[0],XY[1])
 | |
| 
 | |
| 			else:
 | |
| 				while tmp==0:
 | |
| 					tmp=a.Move(Direction)
 | |
| 					Direction+=1
 | |
| 					if Direction==9:
 | |
| 						Direction=1
 | |
| 					CTRL+=1
 | |
| 					if CTRL==8:
 | |
| 						tmp=1
 | |
| 
 | |
| 			b=a.Map.ObjectAt(a.X,a.Y)
 | |
| 			b=FindPuddle(b)
 | |
| 			if b!=None:
 | |
| 				b.Weight+=a.Weight
 | |
| 				a.Remove()
 | |
| 				a=b
 | |
| 
 | |
| 			else:
 | |
| 				a.Name=whoami.Name
 | |
| 			if a.Weight < 1600:
 | |
| 				a.Face="rain1.111"
 | |
| 			elif a.Weight < 3200:
 | |
| 				a.Face="rain2.111"
 | |
| 			elif a.Weight<6400:
 | |
| 				a.Face="rain3.111"
 | |
| 			elif a.Weight<12800:
 | |
| 				a.Face="rain4.111"
 | |
| 			else:
 | |
| 				a.Face="rain5.111"
 | |
| 			Z=False
 | |
| 			y=a.Inventory
 | |
| 			while y!=None:
 | |
| 				if y.Name.find("Puddle")>-1:
 | |
| 					Z=True
 | |
| 					y=None
 | |
| 				else:
 | |
| 					y=y.Below
 | |
| 			if Z==False:
 | |
| 				z=a.CreateObject("event_time")
 | |
| 				a.Speed=0.0010000000475*4
 | |
| 
 | |
| 				z.Title="Python"
 | |
| 				z.Name="Puddle"
 | |
| 				z.Slaying="/python/pshop/Ice.py"
 | |
| 				z=a.CreateObject("event_destroy")
 | |
| 				z.Title="Python"
 | |
| 				z.Name="PuddleDeath"
 | |
| 				z.Slaying="/python/pshop/Ice.py"
 | |
| 				#a.CreateTimer(500,2)
 | |
| 				a.NamePl=str(1)
 | |
| 			a.Pickable=0
 | |
| 			a.Speed=(0.0010000000475*4)
 | |
| 		if whoami.Weight < 1600:
 | |
| 			whoami.Face="rain1.111"
 | |
| 		elif whoami.Weight < 3200:
 | |
| 			whoami.Face="rain2.111"
 | |
| 		elif whoami.Weight<6400:
 | |
| 			whoami.Face="rain3.111"
 | |
| 		elif whoami.Weight<12800:
 | |
| 			whoami.Face="rain4.111"
 | |
| 		else:
 | |
| 			whoami.Face="rain5.111"
 | |
| 		whoami.Speed=(0.0010000000475*4)+0.0010000000475*whoami.Value/(whoami.Weight/1000)
 | |
| 
 | |
| 
 | |
| 	#whoami.Speed=max(whoami.Speed,0.0010000000475*4)
 | |
| 
 | |
| 
 | |
| elif Params=="Timer":
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 
 | |
| 	b=FindPuddle(whoami.Map.ObjectAt(whoami.X,whoami.Y))
 | |
| 
 | |
| 
 | |
| 	if b==None:
 | |
| 		b=whoami.CreateObject("icecube")
 | |
| 		b.Weight=0
 | |
| 		z=b.CreateObject("event_time")
 | |
| 		b.Speed=0.0010000000475*4
 | |
| 		if whoami.Map.Path.find("/world_")>-1:
 | |
| 			b.Speed=10*b.Speed
 | |
| 		z.Title="Python"
 | |
| 		z.Name="Puddle"
 | |
| 		z.Slaying="/python/pshop/Ice.py"
 | |
| 		z=b.CreateObject("event_destroy")
 | |
| 		z.Title="Python"
 | |
| 		z.Name="PuddleDeath"
 | |
| 		z.Slaying="/python/pshop/Ice.py"
 | |
| 		#b.CreateTimer(500,2)
 | |
| 		b.NamePl=str(1)
 | |
| 
 | |
| 		whoami.Drop(b)
 | |
| 	#b.Speed+=.00001
 | |
| 	b.Name="Puddle"
 | |
| 	Mass=int(100+math.sqrt(whoami.Weight))
 | |
| 	b.Weight+=max(Mass,50)
 | |
| 	whoami.Weight-=max(Mass,50)
 | |
| 	b.Pickable=0
 | |
| 
 | |
| 	if b.Weight<2000:
 | |
| 		b.Face="rain1.111"
 | |
| 	elif b.Weight<4000:
 | |
| 		b.Face="rain2.111"
 | |
| 	elif b.Weight<8000:
 | |
| 		b.Face="rain3.111"
 | |
| 	elif b.Weight<16000:
 | |
| 		b.Face="rain4.111"
 | |
| 	else:
 | |
| 		b.Face="rain5.111"
 | |
| 	if whoami.Weight<=0:
 | |
| 		whoami.Quantity=0
 | |
| 	whoami.Speed+=0.00010000000475
 | |
| else:
 | |
| 	whoami=Crossfire.WhoAmI()
 | |
| 
 | |
| 	activator=Crossfire.WhoIsActivator()
 | |
| 	mymap=activator.Map
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 	t=mymap.ObjectAt(activator.X, activator.Y)
 | |
| 
 | |
| 	if (FindFridge(t)):
 | |
| 		whoami.Speed=0
 | |
| 
 | |
| 
 | |
| 
 | |
| 		Dict=CFDB.get("pshop")
 | |
| 
 | |
| 		WL=str(whoami.WeightLimit)
 | |
| 		Me=Dict.get(WL)
 | |
| 
 | |
| 		a=(Me[0],(activator.X,activator.Y),Me[2])
 | |
| 
 | |
| 		#Me=str(Me[0],(activator.X,activator.Y),Me[1])
 | |
| 
 | |
| 
 | |
| 		Dict.update({str(whoami.WeightLimit):(a[0],a[1],a[2])})
 | |
| 		CFDB.store("pshop",Dict)
 | |
| 
 | |
| 		Crossfire.SetReturnValue(0)
 | |
| 
 | |
| 	else:
 | |
| 		whoami.Speed=0.0010000000475*4
 | |
| 		if activator.Map.Path.find("/world_")>-1:
 | |
| 
 | |
| 			#whoami.CreateTimer(1,2)
 | |
| 
 | |
| 			whoami.Speed=whoami.Speed*10
 | |
| 
 | |
| 
 | |
| 		Crossfire.SetReturnValue(0)
 |