End of the Witherspoon ghost quest, some more fun.
git-svn-id: svn://svn.code.sf.net/p/crossfire/code/maps/trunk@8261 282e977c-c81d-0410-88c4-b93c2d0d6712master
parent
31e1c262ad
commit
e8e7424399
|
@ -0,0 +1,23 @@
|
|||
All the scripts in this directory are for the Witherspoon ghost quest.
|
||||
|
||||
Player can help a ghost accept his death and disappear.
|
||||
|
||||
Basic storyline: player finds a ghost and is supposed to go dig a find the body.
|
||||
|
||||
Body is near Scorn's east lake.
|
||||
|
||||
Quest has 3 endings:
|
||||
* dig the body, lose it: ghost becomes angry and tries to kill the player (high level ghost, don't mess!)
|
||||
* give back the body, small reward
|
||||
* find the real story, get a bigger reward
|
||||
|
||||
|
||||
All the dialogs are in the scripts and not in the maps.
|
||||
|
||||
|
||||
Scripts and associated maps:
|
||||
* devourers.py: for the Devourers priest in Scorn's temple, will recognize the runes on the dagger
|
||||
* ghost.py: Witherspoon's ghost script, quest start and end
|
||||
* rolanda.py: Rolanda the witch, in /scorn/houses/rolanda, will give the real story
|
||||
* tomb.py: linked to the detector near the lake west of Scorn, will give the body and the dagger
|
||||
* weapon_shop.py: merchand in Scorn's weapon shop, will direct to a priest to identify the runes on the dagger
|
|
@ -0,0 +1,96 @@
|
|||
'''
|
||||
This script is part of the Witherspoon quest, that starts in /scorn/mansion/witherspoon_manor_attic.
|
||||
Check the README file in the same directory as this file for more details.
|
||||
|
||||
Script for the priest of Devourers in Scorn.
|
||||
|
||||
Will handle the 'give' event to examine the dagger or money, and various events.
|
||||
|
||||
This script should be called for the 'TIMER', 'TIME' and 'custom' events.
|
||||
'''
|
||||
|
||||
import Crossfire
|
||||
|
||||
whoami = Crossfire.WhoAmI()
|
||||
whoisother = Crossfire.WhoIsOther()
|
||||
command = Crossfire.WhatIsMessage()
|
||||
event = Crossfire.WhatIsEvent()
|
||||
pl = Crossfire.WhoIsActivator()
|
||||
|
||||
#Message color for player
|
||||
color = Crossfire.MessageFlag.NDI_BROWN
|
||||
|
||||
def do_give():
|
||||
'''Player gives an item to the priest.'''
|
||||
if whoami.ReadKey('got_offrand') == '':
|
||||
if whoisother.ArchName == 'platinacoin':
|
||||
if whoisother.Quantity < 10:
|
||||
pl.Message('The priest looks at your money and sighes deeply, but doesn\'t take it.', color)
|
||||
return
|
||||
|
||||
rem = whoisother.Quantity
|
||||
if whoisother.Quantity > 50:
|
||||
rem = 50
|
||||
whoami.Say('Now, now, I can\' accept all that money.')
|
||||
pl.Message('The priest takes 50 platinum coins.', color)
|
||||
else:
|
||||
pl.Message('The priest accepts your money.', color)
|
||||
|
||||
whoisother.Quantity = whoisother.Quantity - rem
|
||||
|
||||
whoami.WriteKey('got_offrand', '1', 1)
|
||||
whoami.Say('Many thanks for your offrand!')
|
||||
|
||||
return
|
||||
|
||||
whoami.Say('Our church needs some restoration, could you donate to it?')
|
||||
|
||||
return
|
||||
|
||||
whoami.WriteKey('got_offrand', '', 1)
|
||||
|
||||
if whoisother.ReadKey('special_item') != 'ghost_dagger':
|
||||
whoami.Say('Nice %s.'%whoisother.Name)
|
||||
return
|
||||
|
||||
whoami.Say('My, my, those runes are pretty interesting.')
|
||||
pl.Message('The priest takes the %s and looks at it carefully.'%whoisother.Name, color)
|
||||
whoami.CreateTimer(8, 1)
|
||||
whoami.WriteKey('examining_item', '1', 1)
|
||||
whoami.WriteKey('examining_for', pl.Name, 1)
|
||||
|
||||
return
|
||||
|
||||
def do_timer():
|
||||
'''Priest finished examining the item.'''
|
||||
whoami.WriteKey('examining_item', '0', 1)
|
||||
|
||||
#let's see if the player is still around
|
||||
pl = Crossfire.FindPlayer(whoami.ReadKey('examining_for'))
|
||||
if pl == None:
|
||||
# just in case someone else is around ^_-
|
||||
whoami.Say('Tss, people just aren\'t patient...')
|
||||
return
|
||||
|
||||
pl.WriteKey('witherspoon_know_dagger', '1', 1)
|
||||
whoami.Say('As far as I can tell, the runes on this dagger represent an invocation to our Lord. It is meant to keep the soul in the body for hours after the death.')
|
||||
whoami.Map.Print('The priest shudders.', color)
|
||||
whoami.Say('The victim of the spell can still feel pain, even agonizing one, but will not die before the spell effect wears out.')
|
||||
whoami.Say('Even our Lord, in his mercy, does not inflict on his followers such agonizing pain.')
|
||||
whoami.Say('For someone to use such a spell, the victim must have been so hated!')
|
||||
whoami.Map.Print('The priest thinks for a few seconds.', color)
|
||||
whoami.Say('I think there is a witch, Olandi or something, who lives south of Scorn and specializes in Devourers magic.')
|
||||
whoami.Say('Maybe she could help you?')
|
||||
|
||||
if command == 'give':
|
||||
if whoami.ReadKey('examining_item') == '1':
|
||||
pl.Message('The priest is busy.', color)
|
||||
else:
|
||||
do_give()
|
||||
elif event.Subtype == Crossfire.EventType.TIMER:
|
||||
do_timer()
|
||||
elif event.Subtype == Crossfire.EventType.TIME:
|
||||
if whoami.ReadKey('examining_item') == '1':
|
||||
#No moving while examining.
|
||||
Crossfire.SetReturnValue(1)
|
||||
|
|
@ -1,9 +1,8 @@
|
|||
'''
|
||||
Script for the ghost in Witherspoon manor (south-west of Scorn).
|
||||
This script is part of the Witherspoon quest, that starts in /scorn/mansion/witherspoon_manor_attic.
|
||||
Check the README file in the same directory as this file for more details.
|
||||
|
||||
Associated script is tomb.py which should be in the same directory.
|
||||
|
||||
Both scripts are linked, so if you change something make sure to change both scripts!
|
||||
Script for the ghost in Witherspoon manor (south-east of Scorn).
|
||||
'''
|
||||
|
||||
import random
|
||||
|
@ -30,13 +29,20 @@ def check_body(player, rule):
|
|||
|
||||
return False
|
||||
|
||||
def start_disappear(ghost, player):
|
||||
'''ghost should disappear, called for 2 endings.'''
|
||||
ghost.WriteKey(key_disappear, '1', 1)
|
||||
ghost.CreateTimer(5, 1)
|
||||
ghost.StandStill = True
|
||||
player.Write('The %s starts fading...'%ghost.Name)
|
||||
|
||||
def found_body(player, rule):
|
||||
'''Does the player have the body?'''
|
||||
if player.ReadKey('witherspoon_tomb') != 'dig':
|
||||
return False
|
||||
|
||||
player.WriteKey('witherspoon_tomb', '', 1)
|
||||
#reset our dialog anyway - the player did dig, so quest ends (for now)
|
||||
#reset our dialog anyway - the player did dig, so quest ends (nicely or badly)
|
||||
player.WriteKey('dialog_witherspoon_ghost', '', 1)
|
||||
|
||||
#try to find the body, if not found then get angry
|
||||
|
@ -47,10 +53,7 @@ def found_body(player, rule):
|
|||
if body:
|
||||
#all fine!
|
||||
body.Remove()
|
||||
ghost.WriteKey(key_disappear, '1', 1)
|
||||
ghost.CreateTimer(5, 1)
|
||||
ghost.StandStill = True
|
||||
player.Write('The %s starts fading...'%ghost.Name)
|
||||
start_disappearing(ghost, player)
|
||||
return 1
|
||||
|
||||
#oh oh, bad, ghost is getting angry!
|
||||
|
@ -73,6 +76,25 @@ def do_dialog():
|
|||
if not can_talk(None, None):
|
||||
return
|
||||
|
||||
whoami = Crossfire.WhoAmI()
|
||||
pl = Crossfire.WhoIsActivator()
|
||||
if pl.ReadKey('witherspoon_know_all') == '1':
|
||||
# player found the real story, through Rolanda.
|
||||
whoami.Say('Oh...')
|
||||
whoami.Map.Print('The %s manages to blush.'%whoami.Name)
|
||||
whoami.Say('Now I remember. I\'m so stupid. Poor Rolanda, will she ever forgive me...')
|
||||
whoami.Say('Well, I guess I can go now. Many thanks for your help!')
|
||||
whoami.WriteKey('bonus', '1', 1)
|
||||
start_disappear(whoami, pl)
|
||||
return
|
||||
|
||||
if pl.ReadKey('witherspoon_know_dagger') == '1':
|
||||
# player talked to the priest of Devourers, and knows the dagger is special.
|
||||
whoami.Say('Oh, please find who could be as cruel as to use such a horrible spell on me!')
|
||||
return
|
||||
|
||||
# default dialog, just talk
|
||||
|
||||
# If you ever change this key, change the value in tomb.py too!
|
||||
speech = Dialog(Crossfire.WhoIsActivator(), Crossfire.WhoAmI(), "witherspoon_ghost")
|
||||
|
||||
|
@ -138,9 +160,13 @@ def do_disappear():
|
|||
|
||||
ghost.Say('Thanks a lot! Please take those small presents as a token of my gratitude.')
|
||||
|
||||
bonus = 0
|
||||
if ghost.ReadKey('bonus') == '1':
|
||||
bonus = 25
|
||||
|
||||
presents = ['gem', 'ruby', 'emerald', 'pearl', 'sapphire']
|
||||
got = ghost.Map.CreateObject(presents[random.randint(0, len(presents) - 1)], ghost.X, ghost.Y)
|
||||
got.Quantity = random.randint(3, 7)
|
||||
got.Quantity = random.randint(3 + bonus, 7 + bonus)
|
||||
|
||||
ghost.Remove()
|
||||
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
'''
|
||||
This script is part of the Witherspoon quest, that starts in /scorn/mansion/witherspoon_manor_attic.
|
||||
Check the README file in the same directory as this file for more details.
|
||||
|
||||
Script for Rolanda, in /scorn/houses/rolanda.
|
||||
|
||||
Support to be called for TIME, TIMER and CUSTOM events.
|
||||
'''
|
||||
|
||||
import Crossfire
|
||||
import CFMove
|
||||
import random
|
||||
|
||||
whoami = Crossfire.WhoAmI()
|
||||
whoisother = Crossfire.WhoIsOther()
|
||||
command = Crossfire.WhatIsMessage()
|
||||
event = Crossfire.WhatIsEvent()
|
||||
pl = Crossfire.WhoIsActivator()
|
||||
|
||||
|
||||
# Message color for player
|
||||
color = Crossfire.MessageFlag.NDI_BROWN
|
||||
|
||||
# coordinates to look for chairs
|
||||
search_chairs = [ [ 0, -1 ], [ 0, 1 ], [ -1, 0 ], [ 1, 0 ] ]
|
||||
|
||||
def do_give():
|
||||
'''handle the player giving an item.'''
|
||||
if whoisother.ReadKey('special_item') != 'ghost_dagger':
|
||||
whoami.Say('And what am I supposed to do with this %s.'%whoisother.Name)
|
||||
return
|
||||
|
||||
whoami.Say('Ohhhhhhhh... This, this dagger...');
|
||||
pl.Message('%s puts her hand to her forehead, and staggers.'%whoami.Name)
|
||||
whoami.WriteKey('witherspoon_saw_dagger', '1', 1)
|
||||
whoami.WriteKey('witherspoon_seated', '', 1)
|
||||
whoami.WriteKey('explaining_for', pl.Name, 1)
|
||||
|
||||
def search_chair():
|
||||
'''if fainting, try to find a chair when TIME happens.'''
|
||||
for search in range(0, len(search_chairs)):
|
||||
x = whoami.X + search_chairs[search][0]
|
||||
y = whoami.Y + search_chairs[search][1]
|
||||
obj = whoami.Map.ObjectAt(x, y)
|
||||
while obj:
|
||||
if obj.Name == 'chair':
|
||||
whoami.WriteKey('witherspoon_seated', '1', 1)
|
||||
whoami.Say('Thank you very much.')
|
||||
whoami.WriteKey('chair_x', str(x), 1)
|
||||
whoami.WriteKey('chair_y', str(y), 1)
|
||||
return
|
||||
obj = obj.Above
|
||||
|
||||
def move_to_chair():
|
||||
'''trying to move to first found chair.'''
|
||||
m = CFMove.get_object_to(whoami, int(whoami.ReadKey('chair_x')), int(whoami.ReadKey('chair_y')))
|
||||
if m == 0:
|
||||
whoami.WriteKey('witherspoon_seated', '2', 1)
|
||||
whoami.Map.Print('%s sits on the chair.'%whoami.Name, color)
|
||||
whoami.Say('I shall explain everything...')
|
||||
whoami.Map.Print('%s starts sobbing.'%whoami.Name, color)
|
||||
whoami.CreateTimer(random.randint(5, 10), 1)
|
||||
elif m == 2:
|
||||
whoami.Say('Please let me sit...')
|
||||
|
||||
def explain():
|
||||
'''explanation of the ghost story. Let Rolanda be still from now on.'''
|
||||
|
||||
pl = Crossfire.FindPlayer(whoami.ReadKey('explaining_for'))
|
||||
if pl == None:
|
||||
# just in case someone else is around ^_-
|
||||
whoami.Say('Tss, people just aren\'t patient...')
|
||||
return
|
||||
pl.WriteKey('witherspoon_know_all', '1', 1)
|
||||
|
||||
whoami.Say('See, this dagger...')
|
||||
whoami.Say('Alfred wanted...')
|
||||
whoami.Map.Print('%s sighes deeply, and goes on.'%whoami.Name)
|
||||
whoami.Say('he wanted to have some, shall I say, different experience, the kind a man and a woman can have together.')
|
||||
whoami.Say('And since he likes pain, he asked to suffer, to see if the pain would... excite him.')
|
||||
whoami.Map.Print('%s sobs'%whoami.Name)
|
||||
whoami.Say('But he didn\'t think he would die!')
|
||||
whoami.Say('So I... I hide the body, hoping to forget him.')
|
||||
whoami.Say('But now I can\'t forget him! Ever!')
|
||||
pl.Write('You wonder what the ghost (Alfred, according to %s) will make of that...'%whoami.Name, color)
|
||||
|
||||
if event.Subtype == Crossfire.EventType.USER and command == 'give':
|
||||
do_give()
|
||||
elif event.Subtype == Crossfire.EventType.TIME:
|
||||
if whoami.ReadKey('witherspoon_saw_dagger') != '':
|
||||
# No moving while fainting
|
||||
Crossfire.SetReturnValue(1)
|
||||
if whoami.ReadKey('witherspoon_seated') == '':
|
||||
search_chair()
|
||||
elif whoami.ReadKey('witherspoon_seated') == '1':
|
||||
move_to_chair()
|
||||
elif event.Subtype == Crossfire.EventType.SAY:
|
||||
if whoami.ReadKey('witherspoon_saw_dagger') != '':
|
||||
# No talking while fainting
|
||||
Crossfire.SetReturnValue(1)
|
||||
whoami.Say('Ohhhhhhh......')
|
||||
pl.Message('%s seems to be ready to faint.'%whoami.Name)
|
||||
elif event.Subtype == Crossfire.EventType.TIMER:
|
||||
if whoami.ReadKey('witherspoon_seated') == '2':
|
||||
explain()
|
|
@ -1,11 +1,10 @@
|
|||
'''
|
||||
Script for the ghost in Witherspoon manor (south-west of Scorn).
|
||||
This script is part of the Witherspoon quest, that starts in /scorn/mansion/witherspoon_manor_attic.
|
||||
Check the README file in the same directory as this file for more details.
|
||||
|
||||
Script for the tomb near the lake west of Scorn.
|
||||
|
||||
This script is called when the player steps on the correct spot where the body is buried.
|
||||
|
||||
Associated script is ghost.py which should be in the same directory.
|
||||
|
||||
Both scripts are linked, so if you change something make sure to change both scripts!
|
||||
'''
|
||||
|
||||
import Crossfire
|
||||
|
@ -53,10 +52,20 @@ def main():
|
|||
#don't want the player to dig again! Will be reset by the ghost later on
|
||||
pl.WriteKey('witherspoon_tomb', 'dig', 1)
|
||||
|
||||
body = pl.CreateObject('corpse')
|
||||
body = Crossfire.CreateObjectByName('corpse') # so it doesn't merge with another item
|
||||
body.WriteKey('special_item', 'ghost_body', 1)
|
||||
body.Name = 'tortured body'
|
||||
body.NamePl = 'tortured bodies'
|
||||
body.Message = 'You suppose this is the body of the ghost in Witherspoon Manor. It is covered in scars, as if someone really wanted to make him pay for something.'
|
||||
body.InsertInto(pl)
|
||||
|
||||
pl.Write('You find a body!')
|
||||
dagger = Crossfire.CreateObjectByName('dagger')
|
||||
dagger.WriteKey('special_item', 'ghost_dagger', 1)
|
||||
dagger.Name = 'strange dagger'
|
||||
dagger.NamePl = 'strange daggers'
|
||||
dagger.Message = 'You found this dagger with the body of the Witherspoon Manor ghost. It has some weird look. You wonder if a marchant could figure what the symbols mean.'
|
||||
dagger.InsertInto(pl)
|
||||
|
||||
pl.Write('You find a body with a dagger in it!')
|
||||
|
||||
main()
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
'''
|
||||
This script is part of the Witherspoon quest, that starts in /scorn/mansion/witherspoon_manor_attic.
|
||||
Check the README file in the same directory as this file for more details.
|
||||
|
||||
Script for the shop owner of the weapon shop in Scorn.
|
||||
|
||||
Will handle the 'give' event to examine the dagger, and various events.
|
||||
|
||||
This script should be called for the 'TIMER', 'TIME' and 'custom' events.
|
||||
'''
|
||||
|
||||
import Crossfire
|
||||
|
||||
whoami = Crossfire.WhoAmI()
|
||||
whoisother = Crossfire.WhoIsOther()
|
||||
command = Crossfire.WhatIsMessage()
|
||||
event = Crossfire.WhatIsEvent()
|
||||
pl = Crossfire.WhoIsActivator()
|
||||
|
||||
#Message color for player
|
||||
color = Crossfire.MessageFlag.NDI_BROWN
|
||||
|
||||
def do_give():
|
||||
'''Player gives an item to the owner.'''
|
||||
if whoisother.ReadKey('special_item') != 'ghost_dagger':
|
||||
whoami.Say('Nice %s.'%whoisother.Name)
|
||||
return
|
||||
|
||||
whoami.Say('Oh, this looks like a really interesting dagger.')
|
||||
pl.Message('The owner takes the %s and starts examining it carefully.'%whoisother.Name, color)
|
||||
whoami.CreateTimer(8, 1)
|
||||
whoami.WriteKey('examining_item', '1', 1)
|
||||
whoami.WriteKey('examining_for', pl.Name, 1)
|
||||
|
||||
return
|
||||
|
||||
def do_timer():
|
||||
'''Owner finished examining the item.'''
|
||||
whoami.WriteKey('examining_item', '0', 1)
|
||||
|
||||
#let's see if the player is still around
|
||||
pl = Crossfire.FindPlayer(whoami.ReadKey('examining_for'))
|
||||
if pl == None:
|
||||
# just in case someone else is around ^_-
|
||||
whoami.Say('Tss, people just aren\'t patient...')
|
||||
return
|
||||
|
||||
whoami.Say('This dagger is pretty old, and is covered with runes. Unfortunately I can\'t describe what they mean, but they sure look like religious ones. Maybe you could go ask a priest?')
|
||||
|
||||
if command == 'give':
|
||||
if whoami.ReadKey('examining_item') == '1':
|
||||
pl.Message('The owner is busy.', color)
|
||||
else:
|
||||
do_give()
|
||||
elif event.Subtype == Crossfire.EventType.TIMER:
|
||||
do_timer()
|
||||
elif event.Subtype == Crossfire.EventType.TIME:
|
||||
if whoami.ReadKey('examining_item') == '1':
|
||||
#No moving while examining.
|
||||
Crossfire.SetReturnValue(1)
|
||||
|
|
@ -0,0 +1,620 @@
|
|||
arch map
|
||||
name Rolanda's house
|
||||
width 10
|
||||
height 10
|
||||
msg
|
||||
Created: 2008-01-24 Nicolas Weeger
|
||||
Modified: 2008-01-24 Nicolas Weeger
|
||||
endmsg
|
||||
end
|
||||
arch marble
|
||||
end
|
||||
arch woodwall_2_2_2
|
||||
end
|
||||
arch marble
|
||||
y 1
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
y 1
|
||||
end
|
||||
arch marble
|
||||
y 2
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
y 2
|
||||
end
|
||||
arch marble
|
||||
y 3
|
||||
end
|
||||
arch woodwall_win1
|
||||
y 3
|
||||
end
|
||||
arch marble
|
||||
y 4
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
y 5
|
||||
end
|
||||
arch woodwall_3_2
|
||||
y 5
|
||||
end
|
||||
arch marble
|
||||
y 6
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
y 6
|
||||
end
|
||||
arch marble
|
||||
y 7
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
y 7
|
||||
end
|
||||
arch marble
|
||||
y 8
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
y 8
|
||||
end
|
||||
arch marble
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_2_1
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 1
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 1
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 1
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 1
|
||||
y 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 1
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
x 1
|
||||
y 5
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 1
|
||||
y 5
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 1
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 1
|
||||
y 7
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 1
|
||||
y 8
|
||||
end
|
||||
arch cauldron
|
||||
x 1
|
||||
y 8
|
||||
container 0
|
||||
is_cauldron 0
|
||||
end
|
||||
arch marble
|
||||
x 1
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 1
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 2
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 2
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 2
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 2
|
||||
y 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 2
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
x 2
|
||||
y 5
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 2
|
||||
y 5
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 2
|
||||
y 6
|
||||
end
|
||||
arch chair_1.1
|
||||
x 2
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 2
|
||||
y 7
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 2
|
||||
y 8
|
||||
end
|
||||
arch marble
|
||||
x 2
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 2
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 3
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 3
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 3
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 3
|
||||
y 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 3
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
x 3
|
||||
y 5
|
||||
end
|
||||
arch woodwall_2_2_3
|
||||
x 3
|
||||
y 5
|
||||
end
|
||||
arch marble
|
||||
x 3
|
||||
y 6
|
||||
end
|
||||
arch woodwall_1_2
|
||||
x 3
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 3
|
||||
y 7
|
||||
end
|
||||
arch door_1
|
||||
x 3
|
||||
y 7
|
||||
move_block 0
|
||||
end
|
||||
arch marble
|
||||
x 3
|
||||
y 8
|
||||
end
|
||||
arch woodwall_1_1
|
||||
x 3
|
||||
y 8
|
||||
end
|
||||
arch marble
|
||||
x 3
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_2_4
|
||||
x 3
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 4
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 4
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 4
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 4
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 4
|
||||
y 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 4
|
||||
y 4
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 4
|
||||
y 5
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 4
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 4
|
||||
y 7
|
||||
end
|
||||
arch marble
|
||||
x 4
|
||||
y 8
|
||||
end
|
||||
arch exit
|
||||
slaying /world/world_105_116
|
||||
hp 7
|
||||
sp 4
|
||||
x 4
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 4
|
||||
y 9
|
||||
end
|
||||
arch door_look_1
|
||||
x 4
|
||||
y 9
|
||||
move_block 0
|
||||
end
|
||||
arch marble
|
||||
x 5
|
||||
end
|
||||
arch woodwall_win2
|
||||
x 5
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 5
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 5
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 5
|
||||
y 3
|
||||
end
|
||||
arch woman2
|
||||
name Rolanda
|
||||
x 5
|
||||
y 3
|
||||
speed -0.05
|
||||
random_movement 1
|
||||
arch event_user
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/rolanda.py
|
||||
end
|
||||
arch event_timer
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/rolanda.py
|
||||
end
|
||||
arch event_time
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/rolanda.py
|
||||
end
|
||||
arch event_say
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/rolanda.py
|
||||
end
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 5
|
||||
y 4
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 5
|
||||
y 5
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 5
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 5
|
||||
y 7
|
||||
end
|
||||
arch marble
|
||||
x 5
|
||||
y 8
|
||||
end
|
||||
arch exit
|
||||
slaying /world/world_105_116
|
||||
hp 7
|
||||
sp 4
|
||||
x 5
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 5
|
||||
y 9
|
||||
end
|
||||
arch door_look_1
|
||||
x 5
|
||||
y 9
|
||||
move_block 0
|
||||
end
|
||||
arch marble
|
||||
x 6
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 6
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 6
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 6
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 6
|
||||
y 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 6
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
x 6
|
||||
y 5
|
||||
end
|
||||
arch woodwall_2_2_2
|
||||
x 6
|
||||
y 5
|
||||
end
|
||||
arch marble
|
||||
x 6
|
||||
y 6
|
||||
end
|
||||
arch woodwall_1_2
|
||||
x 6
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 6
|
||||
y 7
|
||||
end
|
||||
arch door_1
|
||||
x 6
|
||||
y 7
|
||||
move_block 0
|
||||
end
|
||||
arch marble
|
||||
x 6
|
||||
y 8
|
||||
end
|
||||
arch woodwall_1_1
|
||||
x 6
|
||||
y 8
|
||||
end
|
||||
arch marble
|
||||
x 6
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_2_1
|
||||
x 6
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 7
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 7
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 7
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 7
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 7
|
||||
y 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 7
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
x 7
|
||||
y 5
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 7
|
||||
y 5
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 7
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 7
|
||||
y 7
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 7
|
||||
y 8
|
||||
end
|
||||
arch marble
|
||||
x 7
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 7
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 8
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 8
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 8
|
||||
y 1
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 8
|
||||
y 2
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 8
|
||||
y 3
|
||||
end
|
||||
arch bluemarblemedium
|
||||
x 8
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
x 8
|
||||
y 5
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 8
|
||||
y 5
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 8
|
||||
y 6
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 8
|
||||
y 7
|
||||
end
|
||||
arch table_3
|
||||
x 8
|
||||
y 7
|
||||
end
|
||||
arch lightgreenmarble
|
||||
x 8
|
||||
y 8
|
||||
end
|
||||
arch chair_1.3
|
||||
x 8
|
||||
y 8
|
||||
end
|
||||
arch marble
|
||||
x 8
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_1_2
|
||||
x 8
|
||||
y 9
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
end
|
||||
arch woodwall_2_2_3
|
||||
x 9
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 1
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
x 9
|
||||
y 1
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 2
|
||||
end
|
||||
arch woodwall_win1
|
||||
x 9
|
||||
y 2
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 3
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
x 9
|
||||
y 3
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 4
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
x 9
|
||||
y 4
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 5
|
||||
end
|
||||
arch woodwall_3_4
|
||||
x 9
|
||||
y 5
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 6
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
x 9
|
||||
y 6
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 7
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
x 9
|
||||
y 7
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 8
|
||||
end
|
||||
arch woodwall_2_1_1
|
||||
x 9
|
||||
y 8
|
||||
end
|
||||
arch marble
|
||||
x 9
|
||||
y 9
|
||||
end
|
||||
arch woodwall_2_2_4
|
||||
x 9
|
||||
y 9
|
||||
end
|
|
@ -7,6 +7,7 @@ height 16
|
|||
msg
|
||||
Created: 1997-04-16 David Sundqvist (azzie@tellutec.se)
|
||||
Altar to level 120 20050527 (cvstry2)
|
||||
Modified: 2008-01-03 Nicolas Weeger
|
||||
endmsg
|
||||
end
|
||||
arch grass
|
||||
|
@ -275,15 +276,26 @@ arch blackmarble
|
|||
x 2
|
||||
y 10
|
||||
end
|
||||
arch sage
|
||||
msg
|
||||
@match devourers|Devourers
|
||||
They will suck your soul out!
|
||||
@match *
|
||||
Welcome to the temple of Devourers.
|
||||
endmsg
|
||||
arch dave
|
||||
name priest of Devourers
|
||||
x 2
|
||||
y 10
|
||||
speed 0.05
|
||||
unaggressive 1
|
||||
sleep 0
|
||||
random_movement 1
|
||||
arch event_time
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/devourers.py
|
||||
end
|
||||
arch event_timer
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/devourers.py
|
||||
end
|
||||
arch event_user
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/devourers.py
|
||||
end
|
||||
end
|
||||
arch blackmarble
|
||||
x 2
|
||||
|
|
|
@ -10,6 +10,7 @@ height 16
|
|||
enter_y 14
|
||||
msg
|
||||
Created: 1993-10-15
|
||||
Modified: 2008-01-03 Nicolas Weeger
|
||||
endmsg
|
||||
end
|
||||
arch shop_empty
|
||||
|
@ -504,6 +505,27 @@ arch shop_empty
|
|||
x 5
|
||||
y 6
|
||||
end
|
||||
arch fighter
|
||||
name Shop owner
|
||||
x 5
|
||||
y 6
|
||||
speed 0.05
|
||||
sleep 0
|
||||
no_damage 1
|
||||
random_movement 1
|
||||
arch event_user
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/weapon_shop.py
|
||||
end
|
||||
arch event_time
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/weapon_shop.py
|
||||
end
|
||||
arch event_timer
|
||||
title Python
|
||||
slaying /python/maps/witherspoon_manor/weapon_shop.py
|
||||
end
|
||||
end
|
||||
arch shop_empty
|
||||
x 5
|
||||
y 7
|
||||
|
|
|
@ -8,7 +8,7 @@ height 50
|
|||
enter_x 1
|
||||
enter_y 1
|
||||
msg
|
||||
Modified: 2007-12-24 tchize
|
||||
Modified: 2008-01-24 Nicolas Weeger
|
||||
endmsg
|
||||
outdoor 1
|
||||
tile_path_1 world_105_115
|
||||
|
@ -2360,7 +2360,10 @@ y 4
|
|||
elevation 11718
|
||||
end
|
||||
arch house_2
|
||||
name Rolando's house
|
||||
name Rolanda's house
|
||||
slaying /scorn/houses/rolanda
|
||||
hp 5
|
||||
sp 9
|
||||
x 7
|
||||
y 4
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue