383 lines
7.2 KiB
Python
Executable File
383 lines
7.2 KiB
Python
Executable File
import Crossfire,random,math
|
|
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)
|
|
|
|
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.Weight=(3+random.randint(1,10+int(math.sqrt(FogsTmp))))
|
|
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)
|
|
|
|
|
|
|