61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
import Crossfire
|
|
import CFWorld
|
|
import math
|
|
|
|
scorn_loc = (5272, 5786)
|
|
navar_loc = (6112, 5850)
|
|
|
|
Crossfire.SetReturnValue( 1 )
|
|
|
|
def getdiff(loc1, loc2):
|
|
return (loc1[0]-loc2[0], loc1[1]-loc2[1])
|
|
|
|
def getdir(loc1, loc2):
|
|
loc = getdiff(loc1, loc2)
|
|
if (loc[1] > 0):
|
|
start="south"
|
|
elif(loc[1] < 0):
|
|
start="north"
|
|
else:
|
|
start=""
|
|
if (loc[0] > 0):
|
|
return start+"east"
|
|
elif(loc[0] < 0):
|
|
return start+"west"
|
|
else:
|
|
return start
|
|
|
|
#outputs in furlongs (outdoor tiles)
|
|
def getdist(loc1, loc2):
|
|
loc = getdiff(loc1, loc2)
|
|
return int(math.sqrt((loc[0]*loc[0])+(loc[1]*loc[1])))
|
|
|
|
#outputs in miles
|
|
def getuserdist(dist):
|
|
return (int(dist/8.0+0.5))
|
|
|
|
def gettext(loc1, loc2, name):
|
|
loc_raw_dist = getdist(loc1, loc2)
|
|
loc_dist = getuserdist(loc_raw_dist)
|
|
loc_dir = getdir(loc2, loc1)
|
|
if (abs(loc_dist) > 5):
|
|
loc_distmsg = "A "+name+" arrow flashes "+str(loc_dist)+" times"
|
|
else:
|
|
loc_distmsg = "A "+name+" arrow glows steady"
|
|
if (loc_raw_dist):
|
|
loc_distmsg += ", pointing to the "+loc_dir+"."
|
|
else:
|
|
loc_distmsg += ", spinning in one place."
|
|
return loc_distmsg
|
|
|
|
pl = Crossfire.WhoIsActivator()
|
|
me = Crossfire.WhoAmI()
|
|
|
|
location = CFWorld.loc_from_ob(pl)
|
|
if (location):
|
|
scorntxt = gettext(location, scorn_loc, "red")
|
|
navartxt = gettext(location, navar_loc, "blue")
|
|
pl.Write(scorntxt+" "+navartxt)
|
|
else:
|
|
pl.Write("The amulet doesn't seem to work here.")
|