WORLD
NAME Underworld2
CLUSTER Underworld
VERSION 9.7.7
' See underworld.dxw for details
'AUTHOR Cris, Lorenzo Ficarra
' English revision by JoKen Jash
SITE http://www.underworld-game.net/
IMAGESFOLDER_LOCAL /dimx/uwpics/
' The following for network (light) mode
IMAGESFOLDER_PUBLIC http://www.dimensionex.net/underworld/uwpics/
'alternates
'IMAGESFOLDER_PUBLIC http://www.underworld-game.net/uwpics/
'IMAGESFOLDER_PUBLIC http://digilander.libero.it/dimensionexy/uwpics/
HELP http://www.underworld-game.net/?page_id=12
SAVEGAME_PERSISTENCE 2
INTERPHONE 1
' The following only for network (light) mode
COUNTERHTML
MUTING 1
GUI
SCENE SIZE 400x230
SCREEN SIZE 800x600
LOGOSRC uw2/logoarea2.jpg
MSGLISTSIZE 4
COMPASS true
SKINS bloody.txt
'PAGE flash flash.htm
MAP map_uw2.gif
HOOKS findobj=doFindObj,viewitem=doViewItem,expertswitch=doExpertSwitch
Include "uwpanels.dxl"
PANEL pronald
BUTTON dothis, "Do this: ", "Command", doCommand
DROPDOWN ronaldops, "getChoices(ronald)", 0
PANEL prookie
BUTTON dothis, "Do this: ", "Command", doCommand
DROPDOWN rookieops, "getChoices(rookie)", 0
END_GUI
ROOMS
ROOM entrance DEFAULT
NAME Start
DESCRIPTION I am entering the Reign of Graiel.
The forward arrow in the grey box will let me get closer to the Castle.
(Direct access to this area is not allowed, you will be now brought to the main entrance).
IMAGE uw2/clouds.jpg
PANEL initial
ROOM outside
NAME Outside
ROOM start
NAME the mountain side
DESCRIPTION There's an ancient pathway carved in the rocky side, probably it was meant to be an escape way from the castle.
IMAGE S SHOWAREA 90,-1,-1 uw2/mroad.png
IMAGE N SHOWAREA 70,300,-1 uw2/canyon1.png
ATTRLIST mapx=82,mapy=188
ROOM rockpath
NAME the path
DESCRIPTION The castle lays south-west, un pathway leads far away...
IMAGE S uw2/rockpath.png
IMAGE E uw2/castleside.png
ATTRLIST mapx=82,mapy=140
ROOM castlebridge
NAME the bridge
DESCRIPTION I am on the bridge leading to the castle. Up there I see a closed gate.
IMAGE N SHOWAREA 80,255,-1 uw2/castlebridge.png
IMAGE E uw2/bridge.png
ATTRLIST mapx=33,mapy=122
PANEL pgather
ROOM path2
NAME a grass field
IMAGE W uw2/grassfield.png
ATTRLIST mapx=100,mapy=95
ROOM grassf
NAME a grass field 2
IMAGE W uw2/mplaints.png
ATTRLIST mapx=135,mapy=95
ROOM grassfm
NAME a grass field 3
IMAGE N uw2/grass2.png
ATTRLIST mapx=139,mapy=127
ROOM bof3
NAME river woods
IMAGE N uw2/bof3.jpg
ATTRLIST mapx=140,mapy=147
ROOM bof2
NAME beginning of forest
IMAGE S uw2/bof2.jpg
ATTRLIST mapx=102,mapy=75
ROOM forest1
NAME ghost forest
IMAGE S uw2/ghostforest.jpg
ATTRLIST mapx=102,mapy=60
ROOM lunarc
NAME ghost forest 2
IMAGE S uw2/lunarc.jpg
ATTRLIST mapx=118,mapy=59
ROOM lunarb
NAME ghost forest 3
IMAGE S uw2/lunarb.jpg
ATTRLIST mapx=135,mapy=55
ROOM hellfire
NAME the pit
PANEL initial
ROOM foggyp
NAME foggy plains
DESCRIPTION In the distance I see the river that flows to the Castle.
IMAGE W uw2/foggyplains.png
ATTRLIST mapx=162,mapy=95
ROOM canyonplains
NAME canyon plains
IMAGE S uw2/canyon_plains.png
ATTRLIST mapx=157,mapy=50
ROOM lunar4
NAME trees near the rocks
IMAGE E uw2/lunar4.jpg
ATTRLIST mapx=139,mapy=40
ROOM riverplains
NAME river plains
IMAGE N uw2/plains.png
ATTRLIST mapx=161,mapy=127
ROOM rockborder
NAME the rocks' border
IMAGE S uw2/rockborder.jpg
ATTRLIST mapx=149,mapy=18
ROOM lunarg
NAME devil's valley
DESCRIPTION @panelhtml("pbuyshop")+"
At Kovalsky's I can buy with confidence."
IMAGE S uw2/lunarg.png
ATTRLIST mapx=135,mapy=13,shop=1,shopkeeper=kovalsky
PANEL pshop
ROOM forestborder
NAME forest border
IMAGE S uw2/forestborder.jpg
ATTRLIST mapx=132,mapy=73
ROOM bof4
NAME dry zone
IMAGE S SHOWAREA 60,-1,-1 uw2/bof4.jpg
ATTRLIST mapx=115,mapy=7
END_ROOMS
LINKS
LINK toA1 entrance-outside N
LINK w1 start-rockpath S
LINK w2 rockpath-path2 S
LINK w2a rockpath-castlebridge D
LINK w3 path2-grassf W
LINK w4 path2-bof2 S
LINK w5 bof2-forest1 S
LINK w6 grassf-foggyp W
LINK w6a grassf-grassfm N
LINK w7 foggyp-canyonplains S
LINK w8 foggyp-riverplains N
LINK w9 grassfm-bof3 N
LINK w10 canyonplains-lunar4 E
LINK w11 grassfm-riverplains W
LINK w12 canyonplains-rockborder S
LINK w13 bof2-forestborder W
MLINK w14 forestborder-canyonplains W
LINK w16 grassf-forestborder S
LINK w17 rockborder-lunarg E
LINK w18 lunarg-bof4 E
LINK w19 forest1-lunarc W
LINK w20 lunarc-lunarb W
LINK w21 lunarb-forestborder N
LINK w22 lunarb-lunar4 S
END_LINKS
CHARACTERS
ATTRLIST Health=10,Strength=1,Experience=0,type=0,Level=1,gender=M
' Types from 10 to up are monsters
' from 1 to 9 are humans
' 0 means unattackable character
CHARACTER rookie
NAME Rookie
DESCRIPTION Rookie is a busy guy
POSITION grassf
IMAGE 37x95 uw2/rookie.gif
ATTRLIST type=0
'ACCEPTS money
SHOW ONSCREEN
CHARACTER ronald
NAME Ronald the druid
DESCRIPTION He's a wiseman
POSITION bof2
IMAGE 62x95 uw2/anziano.gif
ATTRLIST type=0
ACCEPTS money
SHOW ONSCREEN
CHARACTER kovalsky
NAME Kovalsky
DESCRIPTION He's a travelling merchant
POSITION lunarg
IMAGE 37x97 uw2/kovalsky.gif
ATTRLIST type=0
ACCEPTS money
SHOW ONSCREEN
END_CHARACTERS
ITEMS
ITEM lionsword
NAME lions sword
POSITION start
DESCRIPTION An ancient sword with magical powers
ATTRLIST type=weapon.swordlion,pickable,Power=4,Value=40,sound=swordlong.wav,Level=4
ICON uw2/lionswordico.gif
IMAGE 32x54 uw2/lionswordsmall.gif
SHOW ONSCREEN
ITEM bluepill
NAME blue pill
POSITION lunarg
DESCRIPTION Blue pill gives you 5 minutes of invulnerability
ATTRLIST type=pill.blue,pickable,Value=20,seller=kovalsky
ICON magicpill.gif
IMAGE 50x52 magicpill.gif
SHOW ICON
ITEM garlic
NAME garlic
TYPE garlic
POSITION lunarg
DESCRIPTION a piece of garlic. It stinks a little bit.
ATTRLIST type=garlic,pickable,Value=20,seller=kovalsky
ICON garlic.gif
IMAGE 70x70 garlic.gif
SHOW ICON
ITEM eyespell
NAME Eye Spell
POSITION lunarg
DESCRIPTION Psychic attack producing a distorted view in the victim
ATTRLIST type=spell.eye,pickable,Value=30,seller=kovalsky
ICON spelleye.gif
IMAGE 48x48 spelleye.gif
SHOW ICON
END_ITEMS
SETS
SET setAll start,rockpath,path2,grassf,bof2,bof3,forest1,foggyp,canyonplains,riverplains,lunar4,rockborder,forestborder,lunarg,bof4,lunarb,lunarc
'covered places - needed for stepAway procedure (vampires movement)
SET setCovered forest1,lunarc,lunarb
END_SETS
SCRIPTS
Include "commons.dxl"
EVENT onStart
Call common_onStart()
Call config()
rookie.todo = NewSet()
rookie.requests = NewSet()
rookie.choices = NewSet("s1=Build a HUT,s2=Build a HOUSE,s3=Build a FORT,x_1rep=Repair HQ of your guild")
rookie.costs = NewSet("s1=500,s2=1000,s3=2000,x_1rep=100")
rookie.houseimages = NewSet("s1=uw2/hut.gif|246|160,s2=uw2/house.gif|189|170,s3=uw2/fort.gif|237|170")
rookie.house_places = NewSet("path2,grassf,grassfm,bof3,bof2,forest1,foggyp,canyonplains,lunar4,riverplains,rockborder,forestborder,bof4,lunarc")
ronald.todo = NewSet()
ronald.choices = NewSet("s1=heal from infection,s2=change your look,s3=restore your personal weapon,s4=write a message")
ronald.costs = NewSet("s1=200,s2=500,s3=10,s4=10")
arrShopkeepers = NewArray("kovalsky")
Call LoadContext() ' Reads game saved status from disk
If debugtype Or mode=2
passg = NewItem(start,"a passage","An exit to outside",NewImage("uw2/crack2.gif",46,64),"type=passg,pickable=0,showmode=1,showx=0,showy=150,hideable,showFor=uw2/mroad.png")
AttachEvent passg,"onLook","transfer1"
End_If
If tournament=2
Dim month = Int(getTime("MM"))
Dim knife = NewItem(hellfire,"bloody knife","It is a knife covered with human blood!!",NewImage("uw2/knife2.gif",64,64),"type=weapon.knife,pickable,Power=1,Value=0,sound=sword1.wav,icon=uw2/knife.gif,showmode=2")
If month >= 5 ' Game phase
Move knife,RndSet(setAll)
End_If
End_If
END_EVENT
'
' Game configuration parameters
'
Sub config()
debugtype=0 '1=debug mode ON
monstersPopupSet=setAll 'Set of rooms where monsters will pop up
escapeSet=setAll 'Set of rooms where monsters can escape
End_Sub
Sub onNew_local()
If debugtype
Call giveMoney($AGENT,2000)
End_If
$AGENT.lastreporter = ""
End_Sub
Sub onNewDay_local()
Dim people = getPlayersIn(foggyp)
Dim w
If SetLen(people) > 0
w = MakeWeapon("xe",RndSet(people))
Speak SYS,w.container.container,"An Eye spell was given to: " + w.container.name + "!"
End_If
' Auto-restore headquarters...
' Update headquarters' capacity...
End_Sub
Sub LoadContext_Local()
buildingtypes = getSetting("ctx_buildingtypes","!set!")
buildingplaces = getSetting("ctx_buildingplaces","!set!")
buildingguilds = getSetting("ctx_buildingguilds","!set!")
Dim buildingname
For Each buildingname In SetKeys(buildingtypes)
'Debug "Rebuilding " + buildingname
Call buildBuilding(buildingtypes(buildingname),buildingplaces(buildingname),buildingname,buildingguilds(buildingname))
Next
mode = getSetting("ctx_mode",mode)
End_Sub
EVENT onExit
If $TARGET=toA1
' User is exiting to Main Area
MoveOutside $AGENT,"Underworld"
Return False
End_If
END_EVENT
EVENT entrance.onReceive
If $TARGET.type <> 0
'Player has restored from saved game, he saved inside a building
Move $TARGET,start
End_If
If $TARGET.fromarea <> ""
' Teleport comers from other areas to correct places
If Not(Exists(passg))
passg = NewItem(start,"a passage","An exit to outside",NewImage("uw2/crack2.gif",46,64),"type=passg,pickable=0,showmode=1,showx=0,showy=150,hideable,showFor=uw2/mroad.png")
AttachEvent passg,"onLook","transfer1"
End_If
$TARGET.fromarea = ""
Move $TARGET,start
$TARGET.facing = "S"
End_If
If debugtype=1
' Debug mode - accept direct access
Move $TARGET,start
End_If
End_EVENT
EVENT entrance.onReceiveItem
If $TARGET.type <> "msg"
'Unknown object, make it visible
Move $TARGET,start
Return
End_If
Call HandleCommandMessage_Common($TARGET)
Kill $TARGET
End_EVENT
' Transfer function to move people to Area 1
Function transfer1
$AGENT.fromarea = $WORLD.name
MoveOutside $AGENT,"Underworld"
Return False
End_Function
'Local explosives management
'input: cont=bomb container
Sub bombExplode_local(cont)
Dim houses = getObjectsType(cont,"house")
If SetLen(houses) > 0 And tournament <> 2
Dim h = houses(1)
Dim buildingname = h.name
Dim txt = buildingname + " has been attacked!"
Journal txt,gameInfo("site"),txt&"\nIt's located in the place named: "&cont.name&"\n"&" and it is abuilding of type: "&Replace(rookie.choices(buildingtypes(buildingname)),"Build a ",""),"news,disasters,guild:"&guildnames(buildingguilds(buildingname))
Call BroadcastOtherWorlds("shout","txt="+txt)
h.Resist = h.Resist-1
If h.Resist < 1
DropItems h
Kill h
Dim logos = getObjectsType(cont,"logo")
If SetLen(logos) > 0
Kill logos(1)
End_If
SetRemove buildingtypes, buildingname
SetRemove buildingplaces, buildingname
SetRemove buildingguilds, buildingname
saveSetting "ctx_buildingtypes",buildingtypes
saveSetting "ctx_buildingplaces",buildingplaces
saveSetting "ctx_buildingguilds",buildingguilds
End_If
End_If
End_Sub
Sub popMonster_Local(new)
Dim dummy
End_Sub
EVENT rookie.onLook
Print PanelHtml("prookie")
Speak "I can make buildings!","Just ask me, and I'll do everything!"
$AGENT.__clearFocus=true
$OWNER.__clearInfo=true
End_EVENT
EVENT ronald.onLook
Print PanelHtml("pronald")
Speak "I have learnt to listen to the words of the trees... They taught me their secrets.","Tell me what you want me to do."
$AGENT.__clearFocus=true
$OWNER.__clearInfo=true
End_EVENT
Function getChoices(person)
Dim i
Dim choices = NewSet()
For Each k In SetKeys(person.choices)
choices(k) = person.choices(k) + " (" + person.costs(k) + " coins)"
Next
Return choices
End_Function
Sub rookie_doCommand(cmd)
Dim what = rookie.choices(cmd)
Dim cost = Int(rookie.costs(cmd))
If getMoneyFrom($AGENT,cost)
Speak rookie,$AGENT,"So you want: " + what + ". It costs " + cost + " coins."
If Left(cmd,2) = "x_"
Dim guild = guildSubscribed($AGENT)
If guild = null
Speak rookie,$AGENT,"You don't belong to any guild! I don't understand which HQ I should be repairing..."
Call giveMoney($AGENT,cost)
Return false
End_If
Dim buildingname = "Headquarters of " + guildnames(guild)
Dim c
Dim found=null
For Each c In getObjectsType($WORLD,"house")
If c.name=buildingname
found=c
End_If
Next
If found <> null
Move rookie,found.container
found.Resist = getGuildCount(guild)*10
Speak rookie,$AGENT,"Repaired!"
Else
Speak rookie,$AGENT,"Could not find it. Perhaps it had been destroyed..."
Call giveMoney($AGENT,cost)
Return false
End_If
Else
Dim guild = guildSubscribed($AGENT)
If guild = null
Speak rookie,$AGENT,"I had permission to build, but only for who is member of a guild!","You know, each guild is supposed to have its headquarters!"
Call giveMoney($AGENT,cost)
Return false
End_If
Dim builder = $AGENT
Dim buildingname = "House of " + builder.name
'If tournament
guild = guildSubscribed($AGENT)
buildingname = "Headquarters of " + guildnames(guild)
'End_If
If buildingtypes(buildingname) <> null
Speak rookie,$AGENT,"There is " + buildingname + " already in " + buildingplaces(buildingname).name + " I cannot build another."
Call giveMoney($AGENT,cost)
Return false
End_If
rookie.requests($AGENT.name) = cmd
'Print $AGENT,"Richieste: " + rookie.requests + " Da fare: " + rookie.todo
Dim new = NewItem($AGENT,"flag","a flag",null,"volume=0,pickable,vanishing,icon=uw2/flag.gif,housetype=" + cmd)
AttachEvent new,"whenDropped","flag_whenDropped"
Speak rookie,$AGENT,"Well, now go and place the flag I just gave you where you would like it to be built."
End_If
Else
Print "Don't have enough money. It costs " + value + " coins."
End_If
Return true
End_Sub
EVENT doCommand_Local(input)
Dim cmd = input("ronaldops")
If (cmd <> null)
Call ronald_doCommand(cmd)
Else
cmd = input("rookieops")
Call rookie_doCommand(cmd)
End_If
END_EVENT
EVENT ronald.onHear()
If ronald.todo($AGENT.name) = "avatar"
If Left($TARGET,7) = "http://"
ronald.todo($AGENT.name) = "set"
If $AGENT.type = 12
$AGENT.oldimage = NewImage($TARGET,64,100)
Else
$AGENT.image = NewImage($TARGET,64,100)
End_If
Speak ronald, $AGENT, "Done!"
Else
Speak ronald, $AGENT, "You need to tell me an URL (starts with http://)"
End_If
Return true
End_If
If ronald.todo($AGENT.name) = "msg"
If $TARGET <> ""
ronald.todo($AGENT.name) = ""
Dim new = NewItem($AGENT.container,"a message","...",NewImage("pergamena.gif",100,100),"icon=scrollspecial.gif,showmode=2,pickable,volume=0")
new.description = $TARGET
Move new,$AGENT
Speak ronald, $AGENT, "Done!"
End_If
Return true
End_If
End_EVENT
Sub ronald_doCommand(cmd)
Dim what = ronald.choices(cmd)
Dim cost = ronald.costs(cmd)
If cmd="s1" And $AGENT.type = 16
Speak ronald,$AGENT,"Vi dispiacerebbe tornare in forma umana, prima?"
Return false
End_If
If cmd = "s3"
If $AGENT.pw = null
Speak "You don't own any personal weapon, by now."
Return false
End_If
If weaponsfactory($AGENT.pw) = null
Speak "Impossible to make personal weapons of type: " + $AGENT.pw
Return false
End_If
End_If
If getMoneyFrom($AGENT,cost)
Speak ronald,$AGENT,"So you wanna " + what + ". This will cost you " + cost + " coins."
Else
Speak ronald,$AGENT,"This service will cost you "+cost+" coins!","Hey, can you afford it?"
Return false
End_If
Dim req=cmd
If req = "s1"
If $AGENT.type = 10 Or $AGENT.type = 12 Or $AGENT.type = 14
If $AGENT.prevtype > 0
$AGENT.type = $AGENT.prevtype
$AGENT.prevtype = ""
If Not($AGENT.type = 10)
Call restoreAvatar($AGENT)
End_If
Call restoreClass($AGENT)
Speak ronald,$AGENT,"Done!"
Return true
Else
Speak "The infection is gone too far away. You are incurable now."
End_If
Else
Speak "You don't look infected. Perhaps you just have to accept your nature, heh heh."
End_If
Call giveMoney($AGENT,cost)
End_If
If req = "s2"
Speak ronald,$AGENT,"Well now tell me the URL of the image you have chosen. Check well or you will lose your money!"
SetAdd ronald.todo,$AGENT.name,"avatar"
Return true
End_If
If req = "s3"
If SetLen(getObjectsType($AGENT,"weapon.personal")) > 0
Speak ronald,$AGENT,"You have got it, already. Nothing to restore."
Else
Call MakeWeapon($AGENT.pw,$AGENT)
Speak ronald,$AGENT,"Done!"
Return true
End_If
Call giveMoney($AGENT,cost)
End_If
If req = "s4"
Speak "Well, now tell me what you want me to write!"
SetAdd ronald.todo,$AGENT.name,"msg"
Return true
End_If
Return false
End_Sub
Function restoreClass(person)
If Not(IsPlayer(person))
Speak SYS,$AGENT,"Cannot operate on robots"
Return False
End_If
If person.type=1 And person.gender = "M"
person.Class = "Warrior"
Return true
End_If
If person.type=1 And person.gender = "F"
person.Class = "Female Warrior"
Return true
End_If
If person.type=2 And person.gender = "M"
person.Class = "Cleric"
Return true
End_If
If person.type=2 And person.gender = "F"
person.Class = "Sorceress"
Return true
End_If
If person.type=4 And person.gender = "M"
person.Class = "Craftsman"
Return true
End_If
Speak $AGENT,"Not implemented yet for this player type."
Return False
End_Function
EVENT flag_whenDropped
Dim builder = $AGENT
Dim buildingname = "House of " + builder.name
Dim guild
Dim where = $TARGET
If rookie = null ' Flag dropped in wrong area
Print "Rookie won't follow me here."
Return false
End_If
If containsType(where,"house",false)
Move rookie,where
Speak rookie,$AGENT,"Here it is not allowed: there is already a building. Try elsewhere."
Return false
End_If
If Not(SetContainsKey(rookie.house_places,where.id))
Move rookie,where
Speak rookie,$AGENT,"This place is not suitable. Try elsewhere."
Return false
End_If
'If QG...
guild = guildSubscribed($AGENT)
buildingname = "Headquarters of " + guildnames(guild)
'End_If
Dim req = rookie.requests($OWNER.housetype)
Move rookie, where
new = buildBuilding($OWNER.housetype,where,buildingname,guild)
buildingtypes(buildingname) = $OWNER.housetype
buildingplaces(buildingname) = where.id
buildingguilds(buildingname) = guild
saveSetting "ctx_buildingtypes",buildingtypes
saveSetting "ctx_buildingplaces",buildingplaces
saveSetting "ctx_buildingguilds",buildingguilds
Speak "Done sir! Please come back in a minute, just the time to fix the interiors..."
Speak rookie.choices(buildingtypes(buildingname))
Journal "New Headquarters!",guildwebs(guild),"Somebody has built a new headquarters building for the guild "&guildnames(guild)&".\nIt is located in the place named: "&where.name&"\n and it is a building of type: "&Replace(rookie.choices(buildingtypes(buildingname)),"Build a ",""),"news,guild:"&guildnames(guild)
End_EVENT
Function buildBuilding(housetype,where,buildingname,guild)
Dim imagecomps = Split(rookie.houseimages(housetype),"|")
Dim imagefile = imagecomps(1)
Dim imagewidth = imagecomps(2)
Dim imageheight = imagecomps(3)
Dim showx = (400-imagewidth) / 2
If where = null
Debug "Unexistent place in buildBuilding: "+ where
Return null
End_If
If guild <> null
Dim logo = guildlogos(guild)
If logo <> null
Call NewItem(where,"logo " + guildnames(guild),"It's the logo of " + guildnames(buildingguilds(buildingname)),NewImage(logo,32,32),"type=logo,showmode=1,hideable=0,showy=200,showx="+(showx+imagewidth/2))
End_If
End_If
Dim new = NewItem(where,buildingname,buildingname,NewImage(imagefile,imagewidth,imageheight),"capacity=100,showmode=1,showy=50,showx="+showx+",type=house,dark=1,hideable=0,showPolicyPeople=1")
new.innerimage = NewImage("uw2/inner.gif",400,230)
If SetContainsKey(guildnames,guild) ' Guild still exists
new.guild = guild
new.Resist = getGuildCount(guild)*10
new.Capacit = 1+getGuildCount(guild)
new.capacity = 10*new.Capacit
Else
new.guild = null
new.Resist = 50
new.Capacit = 5
new.capacity = 25
End_If
If logo <> null
new.icon = logo
End_If
AttachEvent new,"onReceive","building_onReceive"
SetPanel where,"penterexit"
SetPanel new,"penterexit"
If tournament=2 And guild = assassinguild
Dim new1 = NewItem($AGENT,"a note","",NewImage("pergamena.gif",100,100),"icon=scroll.gif,pickable,volume=0,showmode=2")
new1.description = "The note says:
Mi dispiace doverti lasciare questa lettera, so di avervi messo nei guai. Lei diceva che ci sarebbe stata fedele, ma non potevamo fidarci di lei, e io lo sapevo. Ci avrebbe traditi, io la conoscevo troppo bene.
Farò in modo che la mia colpa non ricada sugli altri, dì loro che non potuto fare altrimenti.
Ti prometto che da dove sto per andare, non sentirai più parlare di me.
Addio." End_If Return new End_Function EVENT building_onReceive Dim person = $TARGET Dim private If person <> null If Left($OWNER.name,8) = "House of" 'Private house private = true If LCase(person.name) <> LCase(Right($OWNER.name,Len(person.name))) And Not(person.master) Print "It's not my house..." Move person,$OWNER.container Return false End_If Else If LCase(person.guild) <> LCase($OWNER.guild) And Not(person.master) And $OWNER.guild <> null Print "I don't belong to " + guildnames($OWNER.guild) + "... and this is their headquarters." Move person,$OWNER.container Return false Else If containsUnique(person) Print "Cannot enter until a carry a unique object." Move person,$OWNER.container Return false End_If End_If End_If End_If If Not(private Or $OWNER.guild=null) If $OWNER.laststats <> getTime("dd") Dim new = NewItem(person,"situation "+ guildnames($OWNER.guild),"...",NewImage("pergamena.gif",100,100),"icon=scroll.gif,showmode=2,vanishing,pickable,volume=0") new.description = getGuildKillStats($OWNER.guild,true) AttachEvent new,"whenPicked","stats_whenPicked" $OWNER.laststats = getTime("dd") $OWNER.lastreporter = person.name Else If $OWNER.lastreporter Print "The last statistics were taken by: " + $OWNER.lastreporter End_If End_If End_If END_EVENT EVENT stats_whenPicked $OWNER.container.lastreporter = $AGENT.name End_EVENT EVENT kovalsky.onLook Speak "Hello, I'm Kovalsky. Need something?", "I've got rare stuff, I've travelled a lot to bring it here","I'll stay just a few days. It's a deal." $AGENT.__clearFocus=true $OWNER.__clearInfo=true END_EVENT EVENT lunarg.onLooseItem ' Management of sold items If $TARGET.seller <> "" Display "This item is sold by " + $TARGET.seller.name Speak $TARGET.seller, $AGENT, "It costs " + $TARGET.Value + " coins!", "Need " + $TARGET.name + " right? It's a deal!", "Just for you: buy it for "+ $TARGET.Value + " coins!" Return false End_If END_EVENT END_SCRIPTS END_WORLD