// Enhanced Housing v2.4.3 Created by Mordaunt // Quite possibly the most complex, featureful housing system ever devised (by the mind of a madman) // // Features: No more keys to hand out everything runs off the house/guild rosta // Support for the new "custom" built houses & foundations. // Support for static buildings (Requires Crius' static housing script v2) // Put house up for sale via sign, Ideal for static buildings. // Castle/Keep owners can fill (some or all) of those obvious doorways with doors at their discretion. // ALL characters on the Owner's account have full access & privs within the house with def.account_ownership. // // House Vendor Setup: This should work with any vendor script, just ensure you set the defnames for vendor obodys adnd the deed. // The house keeps a tally on the number of vendors in it's regions and prevents more vendors being deployed when limit is met. // Dismissal and removal of vendors should be handled by your vendor script. // Vendors can only be placed in public houses. // // Variable Property Tax: This will allow you to set regions to be cheaper/more expensive than the default, ideal for building player towns or charging for those high traffic zones like Britain. // use this feature the def.maintenance_fee MUST be turned on. // To set an area with a different rate simple go to that place and set region.tag.maintenance_override to the percentage figure you want. // All houses placed in this area will be charge at that percent rather than the rate set in defs. // Players can check a region's maintenance rate by using .rate // // Estate Tax: This comes into effect when set to a number other than 0 (but lower than def.account_house_limit if set) and a player has MORE than this number of houses. // def.estate_rate will be overridden by regional maintenance rates. // Flate rate (def.estate_calc = 1) adds an extra def.estate_rate or regional maintenance rate to the cost to refresh a house when a player has more than houses regardless of how many. // Linear rate (def.estate_calc = 2) adds 1 def.estate_rate or regional maintenance rate for each house over (gets more expensive with more houses) // // IMPORTANT: If account ownership is turned on a player can still loose their house if they delete the character who name appears as house owner. // To retain the house the player should use another character on the account and use the transfer ownership option on that character // (you can use this to transfer the house around the chars in account) BEFORE they delete the named character. // // Statics: Static houses may be turned into purchasable property with the use of Crius' static housing system. // Regions must be set using the steps in that script, once complete the area will be given the housing sign from this script and the building MUST // then be given a price via the sign by the person setting up the building. Inactivity with static houses follows the same rule as the "decay" setting however once the timer expires // the building will be automatically placed as "for sale" at the originally specified price. // // Cleanup: To clear the list of houses owned by an account when the account is deleted add: // serv.LIST._houses.CLEAR to your sphere_serv_triggers.scp under [FUNCTION f_onaccount_delete] // // New 2.4: FIXED: Missing check which would prevent players from transfering a house when account_house_limit is set to 0 // New 2.4.1: ADDED: Dialog close on region exit // New 2.4.2: FIXED: f_add_list ban error, reported by Shamino // New 2.4.3: FIXED: Added code to prevent raising items into the sky/burying items into the ground, reported by Criminal //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [DEFNAME housing_control] //general settings account_ownership 1 // set to 1 to grant ANY char on house owners account full ownership privs, set to 0 for owner char only account_house_limit 0 // Number of houses allowed PER ACCOUNT, set to 0 to disable limits can_bank 1 // set to 1 to allow players to bank from home. (verbal command)(owner, co-owners & friends only) allow_custom 1 // Allow players to convert to custom houses 0 to disable redeed_custom 0 // 1 allows redeed of custom multi, 0 disables (IF ACTIVE YOU MUST HAVE ALL CUSTOM FOUNDATION DEEDS SCRIPTED) wipe_switch_lists 1 // if set to 1 access/ban lists are wiped when house is switched between private/public (helps reduce server memory) allow_sign_color 1 // Allow player to change the color of their house signs. secure_locks_limit 1 // Lockdowns & Secures Zero to turn off limitations //vendor settings vendor_control 1 // Maximum house vendors per house. Zero to turn off limitations house_list_vendors 0 // set to 1 to allow players on house list to place vendors, 0 = owner only conservative_vendors 1 // 0 = A vendor slot for co-owner and friend +2 extra, 1= half that amount (can be changed after initial set up but change will only affect new placed/moved houses) //Set these to the body types for vendors in your script vendor_deed_id i_deed_vendor vendor_obody_male c_vendor_player vendor_obody_female c_vendor_player //Taxes & Fees redeed_fee 10 // Cost to redeed a house % of house value, zero disables. can_decay 30 // set to number of days for a house to decay, or set to 0 to disable property_tax 10 // Set to % figure of house value to pay for maintenance on houses, WORKS ONLY WHEN can_decay IS ON! zero disables. estate_tax 2 // Extra charges for player with MORE than this many houses. 0 disables estate_rate 10 // % per house over the estate_tax estate_calc 1 // 1 = flat % rate 2 = linear charge increase per house (1 over = + premium rate, 2 over = + premium rate*2, 3 over = + premium rate*3 e.t.c..) buy_storage 1 // if set to 1 allows players to increase secure storage by up to 100% via house sign, 0 to disable buy_increased_list 1 // if set to 1 players with houses with basic value over 100k can add extra friends/co-owners up to def limits xtra_friend_price 5000 // Price for extra Friend slots on house list xtra_co-owner_price 7000 // As above for co-owners //DO NOT ALTER THE FOLLOWING AFTER INITIAL SETUP!!! - - Doing so could cause problems when players go over these limits. max_friends 20 // DO NOT SET THIS ONE ABOVE 20 Dialog doesn't have extra pages for above that amount (actual number is set from building size) max_co_owners 10 // DO NOT SET THIS ONE ABOVE 10 Dialog is not set up for more than that amount (actual number is set from building size) max_container_items 150 // Maximum items per secure container. min_secure 4 // Minimum secure containers will not be lower than this number (affects only small houses & foundations) min_lockdowns 100 // Minimum lockdowns will not be lower than this number (affects only small houses & foundations) max_secure 100 // Cap for secure containers, actual number is set from building size, but will not exceed this number max_lockdowns 500 // As above //Available sign colors - Test colors only, set to suit your hues and tastes. sign_color_1 06d6 sign_color_2 07ad sign_color_3 0641 sign_color_4 0975 sign_color_5 07a1 sign_color_6 0770 sign_color_7 079c sign_color_8 0455 sign_color_9 0796 sign_color_10 0665 sign_color_11 07d1 sign_color_12 0400 sign_color_13 0750 sign_color_14 0515 sign_color_15 04de sign_color_16 0538 sign_color_17 079b sign_color_18 04ab sign_color_19 04a9 sign_color_20 04aa sign_color_21 0157 sign_color_22 0676 sign_color_23 0157 sign_color_24 0235 sign_color_25 06c0 sign_color_26 04ac sign_color_27 0473 sign_color_28 02e9 sign_color_29 04a8 sign_color_30 0490 //-------------------------------------------------------------------------end of defname settings----------------------------------------------------------------// [PLEVEL 1] rate [ITEMDEF 0bd1] //brass sign DEFNAME=i_sign_brass TYPE=t_script CAN=can_i_dcignorelos CATEGORY=Decoration - Signs SUBSECTION=Blank DESCRIPTION=Brass Blank DUPELIST=0bd2 ON=@Create attr=012 timerf 1, f_initialise ON=@Click if ! if message message [.abbrev>] return 1 else return 0 endif else message For Sale message gp return 1 endif ON=@ClientToolTip if (==04fffffff) return 0 endif link.regionchk if src.addcliloc 1070722, Demolition Scheduled in /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days> elif src.addcliloc 1070722, FOR SALE gp endif src.addcliloc 1061639, src.addcliloc 1061640,.name> if src.addcliloc 1042971,[.abbrev>] Guild House endif src.addcliloc )? 1061642:1061641> return 1 ON=@DClick if (!=04fffffff) if !() if (&02) attr &~ 02 endif else if !(&02) attr |= 02 endif endif endif if ? ():()> || () if !() || !() f_initialise return 1 endif endif if ? ():()> || () || () || () if (==) dialog d_house_menu return 1 else src.sysmessage @32,,1 You must be standing on your doorstep to access the house menu. return 1 endif else if ! dialog d_house_visitor return 1 else dialog d_house_forsale return 1 endif endif ON=@Timer ref2= if () if !() attr 012 if ref2.sysmessage @,,1 Your in has collapsed endif if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> serv.list.house__coowners.clear serv.list.house__friends.clear serv.list.house__access.clear serv.list.house__bans.clear link.f_empty link.remove else attr 04010 timer= -1 link.tag0.price= link.region.tag0.forsale=1 tag0.boughtstorage= tag0.xtrastorage= local.multi= call co_f_calc link.f_empty link.f_open_house ref2= if && ! ref2.sysmessage @,,1 Your in has been repossessed endif if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> serv.list.house__coowners.clear serv.list.house__friends.clear serv.list.house__access.clear serv.list.house__bans.clear link.tag0.private= newitem=i_realtor new.p=

more1= link.more1= resendtooltip return 1 endif else return 1 endif [ITEMDEF i_realtor] NAME=Britannic Realtors ID=022c4 TYPE=t_script ON=@Create attr=attr_invis|attr_can_decay|attr_move_never color=03d6 [FUNCTION f_initialise] if !(==04fffffff) if ! attr=02|010 more1= local.multi= call co_f_calc call lockdown_calc tag.Oname= name= link.tag0.private=1 if (&09c000000) if (==m_castle) tag.doors=48 tag.dused=4 elif (==m_small_stone_keep) tag.doors=22 tag.dused=2 endif else if (==i_multi_castle) tag.doors=48 tag.dused=4 elif (==i_multi_keep) tag.doors=22 tag.dused=2 endif endif if !() attr 04010 link.region.tag0.noredeed=1 local.topx=> local.topy=>> local.bottomx= >>> local.bottomy= >>>> local.x -)+1> local.y -> local.xy x link.tag0.footprint= endif ref1= ref1.region.events +r_houses ref1.region.tag0.sign= ref1.f_door_setup ref1= ref1.attr=012 if attr=02|010 timer=60*60*24* else timer =-1 attr=010 endif ref3= if ( > 4) && () timer=-1 endif ref2= ref4 call f_remove_keys if !() ref1= if !() ref2= if _houses.count> //list switch if if (_houses.count> < ) serv.list._houses.add ref2.sysmessage @,,1 The number of houses you own is now _houses.count> else ref1= local.src= if (&09c000000) serv.newitem i_deed_> else serv.newitem i_deed_> endif new.cont= ref1.link.remove ref2= ref2.sysmessage @,,1 House redeeded, You already own the maximum number of houses permitable endif else serv.list._houses.add ref2.sysmessage @,,1 The number of houses you own is now _houses.count> endif else serv.list._houses.add ref2.sysmessage @,,1 The number of houses you own is now _houses.count> endif endif else ref2= serv.list._houses.add ref2.sysmessage @,,1 The number of houses you own is now _houses.count> endif resendtooltip endif endif [FUNCTION render_list] ref1= local.list = dtext 125 130 90 List if ((strmatch(*ban*,) || (strmatch(*access*,)) dtext 230 140 90 _.count> / 10 else dtext 230 140 90 _.count> / s> endif if (strmatch(*ban*,) local.fontcolor = 32 elif (strmatch(*access*,) local.fontcolor = 367 else local.fontcolor = 90 endif local.y=170 if _.count> for 0 _.count>-1> if ( < 11) local.txt = 57 local.btn = 7 else local.txt = 250 local.btn = 200 endif if (==11) local.y=170 endif if (>) && ((strmatch(*coowner*,) || (strmatch(*friend*,)) if (_.>==) dtext 57 _.>.name> button 7 4017 4018 1 0 )> else dtext 57 _.>.name> endif elif ? ():()> || (( && ((strmatch(*friend*,) || (strmatch(*access*,) ||(strmatch(*ban*,))) dtext 57 _.>.name> button 7 4017 4018 1 0 )> endif local.y += 20 endfor endif [function render_signs] local.y=157 local.btn1 = 7 local.btn2 = 37 local.sign=2979 buttontileart 7 132 07588 07588 1 0 2965 2965 0 -10 -5 buttontileart 37 132 07588 07588 1 0 2966 2966 0 -10 -5 for 1 112 if ( > 360) local.y=132 local.btn1 += 60 local.btn2 += 60 endif buttontileart 07588 07588 1 0 0 -10 -5 local.sign +=1 buttontileart 07588 07588 1 0 0 -10 -5 local.sign +=1 local._for +=1 local.y += 25 if ( == 3087) local.sign = 3139 elif ( > 3140) return endif endfor [REGIONTYPE r_houses] ON=@Enter if src.events +e_house_player_events //I.timerf 1,regionchk src.timerf 1, visitor_count ref2 ref1= if ! if ==1 if ? (>):(>)> || (>) || (>) || (>) return 0 elif () if (==) return 0 else src.sysmessage @32,,1 You are not a member of this guild return 1 endif else src.sysmessage @32,,1 This is private property. src.sysmessage @32,,1 You may not trespass. return 1 endif else if > src.sysmessage @32,,1 You are banned from this property return 1 else return 0 endif endif endif endif ON=@Exit src.dialogclose d_house_menu src.events -e_house_player_events //Begin main menu [DIALOG d_house_menu] 100,100 page 0 ref1= tag0.inclocks=*10)*)/1000> tag0.incconts=*10)*)/1000> resizepic 0 0 2620 400 118 //top box checkertrans 5 5 390 108 //top box resizepic 0 123 2620 400 267 //middle box checkertrans 5 128 390 257 //middle box resizepic 0 395 2620 400 60 //bottom box checkertrans 5 400 390 50 //bottom box gumppic 7 8 100 //brass sign gump dhtmlgump 25 30 100 60 0 0 button 150 8 4005 4007 0 1 1 dtext 200 8 90 Information button 150 28 4005 4007 0 2 2 dtext 200 28 90 Security button 150 48 4005 4007 0 3 3 dtext 200 48 90 Storage button 150 68 4005 4007 0 4 4 dtext 200 68 90 Customize button 150 88 4005 4007 0 5 5 dtext 200 88 90 Ownership if ? ():()> || () || () button 7 405 4005 4007 1 0 )? 14:15> dtext 57 405 )? 367 Grant Access:32 Ban Person> button 7 425 4005 4007 1 9 )? 12:13> dtext 57 425 )? 32 Revoke Access:367 Unban Person> else dtext 57 405 992 )? Grant Access:Ban Person> dtext 57 425 992 )? Revoke Access:Unban Person> endif button 200 415 4005 4007 1 0 29 dtext 250 415 1509 Eject Person page 1 dtext 57 140 90 Owner: dtext 150 140 90 .name> if () dtext 20 170 90 This house is designated as the [.abbrev>] guild house endif dtext 20 190 90 This house is )? private property:public> dtext 20 210 90 This house is of ==t_multi_custom)? custom:prebuilt> design dtext 20 230 )? 32 This house is improperly placed:90 This house is properly placed> if dtext 20 250 90 This house is currently for sale for gp endif local.value=+++++> if && if local.maint=,,100> else local.maint=,,100> endif endif if if (==1) dtext 20 270 90 This house has been made exempt from decay else if ! if () dtext 20 270 90 This house repossessed in /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days> else dtext 20 270 90 This house )? will be demolished:will decay> in /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days> endif else dtext 20 270 90 Propery Tax covered for /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days> dtext 20 310 90 Property Tax for this house gp every days endif endif else dtext 20 270 90 This house is currently set to auto refresh endif dtext 20 290 90 House Value dtext 150 290 90 gp dtext 20 350 90 Number of visits this house has had: dtext 300 350 90 > page 2 if ? ():()> || () button 7 140 4005 4007 1 7 9 dtext 57 140 90 House Co-Owners button 7 160 4005 4007 1 0 17 dtext 57 160 90 Add a Co-Owner button 7 180 4005 4007 1 0 18 dtext 57 180 90 Clear Co-Owner List else dtext 57 160 992 Add a Co-Owner if () button 7 140 4005 4007 1 7 9 endif dtext 57 140 )? 90:992> House Co-Owners dtext 57 180 992 Clear Co-Owner List endif if ? ():()> || () || () button 7 240 4005 4007 1 8 11 dtext 57 240 90 House Friends button 7 260 4005 4007 1 0 19 dtext 57 260 90 Add a Friend button 7 280 4005 4007 1 0 20 dtext 57 280 90 Clear Friends List else dtext 57 260 992 Add a Friend if () dtext 57 140 90 House Co-Owners button 7 140 4005 4007 1 7 9 button 7 240 4005 4007 1 8 11 endif dtext 57 240 )? 90:992> House Friends dtext 57 280 992 Clear Friends List endif if button 7 340 4005 4007 1 6 12 dtext 57 340 90 View Access List if ? ():()> || () || () button 7 360 4005 4007 1 0 21 dtext 57 360 90 Clear Access List else dtext 57 360 992 Clear Access List endif else button 7 340 4005 4007 1 6 13 dtext 57 340 90 View Ban List if ? ():()> || () || () button 7 360 4005 4007 1 0 22 dtext 57 360 90 Clear Ban List else dtext 57 360 992 Clear Ban List endif endif if ? ():()> || () dtext 250 190 90 )? Remove Guild Declaration:Declare Guildhouse> button 200 190 4005 4007 1 0 50 button 200 250 4005 4007 1 0 23 button 200 220 4005 4007 1 2 26 dtext 250 220 90 Recode Doors dtext 250 250 90 Change to )? Public:Private> if dhtmlgump 230 280 150 60 0 0 (Will also clear )? access:ban> list, not needed in )? private:public> config) endif else dtext 250 190 992 )? Remove Guild Declaration:Declare Guildhouse> dtext 250 220 992 Recode Doors dtext 250 250 992 Change to )? Public:Private> endif page 3 if && if ? ():()> || () dtext 20 150 90 Increased Storage dtext 200 150 90 % button 240 150 4005 4007 0 11 35 dtext 280 150 90 Buy Storage else dtext 20 150 992 Increased Storage dtext 200 150 992 % dtext 280 150 992 Buy Storage endif endif dtext 20 180 90 Maximum Secure Containers dtext 200 180 90 )? +)>:Unlimited> dtext 20 200 90 Available Secured Containers dtext 200 200 90 )? +)-)>:Unlimited> dtext 20 230 90 Maximum Secure Storage dtext 200 230 90 )? +)*>:Unlimited> dtext 20 250 90 Available Secure Storage dtext 200 250 90 )? +)*)-)>:Unlimited> dtext 20 280 90 Maximum Lockdowns dtext 200 280 90 )? +)>:Unlimited> dtext 20 300 90 Available Lockdowns dtext 200 300 90 )? +)-)>:Unlimited> dtext 20 320 90 Vendors dtext 20 320 90 Vendors dtext 200 320 90 )? /:/Unlimited> page 4 if ? ():()> || () if (==t_multi_custom) dtext 57 140 90 Convert into customizable house button 7 160 4005 4007 1 0 35 dtext 57 160 90 Customize this house else if (==&09c000000)? m_small_stone_keep:i_multi_keep>) || (==&09c000000)? m_castle:i_multi_castle>) || () dtext 57 140 992 Convert into customizable house dtext 57 160 992 Customize this house else if button 7 140 4005 4007 1 0 53 dtext 57 140 90 Convert into customizable house else dtext 57 140 992 Convert into customizable house endif dtext 57 160 992 Customize this house endif endif button 7 200 4005 4007 1 0 24 dtext 57 200 90 Rename this house button 7 220 4005 4007 0 14 25 dtext 57 220 90 Change house sign if (==t_multi_custom) || (==2) button 7 240 4005 4007 0 12 37 endif if (==t_multi_custom) button 7 260 4005 4007 1 0 36 endif dtext 57 240 ==t_multi_custom) || (==2)? 90 Change house sign hanger:992 Change house sign hanger> dtext 57 260 ==t_multi_custom)? 90 Change sign post:992 Change sign post> if () button 7 280 4005 4007 1 0 58 dtext 57 280 90 Flip house sign if (==1) button 7 300 4005 4007 1 0 59 dtext 57 300 90 Create house sign hanger elif (==2) button 7 300 4005 4007 1 0 59 dtext 57 300 90 Remove house sign hanger endif else dtext 57 280 992 Flip house sign dtext 57 300 992 Create house sign hanger endif if (==&09c000000)? m_small_stone_keep:i_multi_keep>) || (==&09c000000)? m_castle:i_multi_castle>) button 7 320 4005 4007 1 0 52 dtext 57 320 90 Place/Remove Door(s) (-> available) else dtext 57 320 992 Place/Remove Door(s) endif else dtext 57 140 992 Convert into customizable house dtext 57 160 992 Customize this house dtext 57 200 992 Rename this house dtext 57 220 992 Change house sign dtext 57 240 992 Change house sign hanger dtext 57 260 992 Change sign post dtext 57 280 992 Flip house sign dtext 57 300 992 Create house sign hanger dtext 57 320 992 Place Door(s) endif if () if ( > 100000) || ( > 100000) dtext 57 340 90 Add Co-Owner/Friend slots button 7 340 4005 4007 0 13 74 else dtext 57 340 992 Add Co-Owner/Friend slots endif endif dtext 57 360 90 Placed trashcan? (? Yes:No>) page 5 if && if ? ():()> || () button 7 140 4005 4007 0 16 84 dtext 57 140 90 Pay Property Tax endif endif if ? ():()> || () button 7 160 4005 4007 1 0 27 dtext 57 160 90 Transfer Ownership of this house button 7 180 4005 4007 0 10 30 dtext 57 180 90 )? Take this house off the market:Put this house up for sale> if ! button 7 200 4005 4007 1 0 28 endif dtext 57 200 )? 992 Demolish this house:90 Demolish this house> else dtext 57 160 992 Transfer Ownership of this house dtext 57 180 992 Put this house up for sale dtext 57 200 992 Demolish this house endif if () dtext 140 240 90 Administrative Options button 7 270 4005 4007 1 0 ==1>? 88:87> dtext 57 270 90 ==1>? Allow decay on this property:Make this property exempt from decay> if () dtext 57 300 90 Footprint dtext 200 300 90 button 7 320 4005 4007 1 0 55 dtext 57 320 90 Set property value & place on market else if !() dtext 100 300 90 Schedule this property for demolition dtext 40 320 90 Number of days until demolition (between 7 & 30) gumppic 210 350 2444 dtextentrylimited 220 350 40 20 90 1 2 dtext 290 350 90 days endif dtext 57 350 90 )? Cancel scheduled demolition:Demolish this propery in> button 7 350 4023 4025 1 0 75 endif endif page 6 ref1= if () render_list Access else render_list Ban endif page 7 render_list Coowner page 8 render_list Friend page 9 ref1= if () render_list Access else render_list Ban endif page 10 dtext 150 130 90 Sell This House if ! gumppic 130 170 2501 dtextentrylimited 135 170 100 20 90 0 10 dhtmlgump 40 230 300 200 0 0 Please ensure that your house is empty before you put it on the market. All lists will be wiped and all doors will be unlocked. Your house will be open to viewing, however you will retain control over it, until it is bought. else dtext 160 250 90 gp endif dtext )? 80 200 90 This house is currently for sale for:130 200 90 Enter your asking price> button )? 180 340 4023 4025 1 0 30:70 340 4023 4025 1 0 30> dtext )? 100 310 90 Take my house off the market:120 340 90 Put this house on the market> page 11 dtext 150 130 90 Increase Storage dhtmlgump 40 150 300 120 0 0 You may buy up to a 100% increase in storage space. The value listed for this property will be adjusted to reflect your investment. The price for a 100% upgrade should not cost more than 50% of the property price, however you buy it. dhtmlgump 40 260 300 120 0 0 The value of purchased storage will be refunded to your bankbox upon redeeding. if ! button 7 360 4023 4025 1 0 34 dtext 57 360 90 Add 100% for: )? /2>:/2>> gp else dtext 57 360 992 Add 100% endif if (> < 26) button 7 340 4023 4025 1 0 33 dtext 57 340 90 Add 75% for: )? /8)*3)>:/8)*3)>> gp else dtext 57 340 992 Add 75% endif if (> < 51) button 7 320 4023 4025 1 0 32 dtext 57 320 90 Add 50% for: )? /4>:/4>> gp else dtext 57 320 992 Add 50% endif if (> < 76) button 7 300 4023 4025 1 0 31 dtext 57 300 90 Add 25% for: )? /8)>:/8)>> gp else dtext 57 300 992 Add 25% endif page 12 local.number .dispid> if (/2>*2>==) button 30 180 4005 4007 1 0 12968 tilepic 70 180 2968 button 150 180 4005 4007 1 0 12970 tilepic 190 180 2970 button 280 180 4005 4007 1 0 12972 tilepic 320 180 2972 button 30 280 4005 4007 1 0 12974 tilepic 70 280 2974 button 150 280 4005 4007 1 0 12976 tilepic 190 280 2976 button 280 280 4005 4007 1 0 12978 tilepic 320 280 2978 else button 30 180 4005 4007 1 0 12967 tilepic 70 180 2967 button 150 180 4005 4007 1 0 12969 tilepic 190 180 2969 button 280 180 4005 4007 1 0 12971 tilepic 320 180 2971 button 30 280 4005 4007 1 0 12973 tilepic 70 280 2973 button 150 280 4005 4007 1 0 12975 tilepic 190 280 2975 button 280 280 4005 4007 1 0 12977 tilepic 320 280 2977 endif page 13 dtext 150 130 90 Increase House Lists dtext 57 150 90 Add Friend Slot(s) dtext 80 170 90 gp each dtext 200 150 90 Add Co-Owner Slots(s) dtext 257 170 90 gp each if ( < ) button 7 220 4005 4007 1 0 76 //1 dtext 57 220 90 Add 1 for gp else dtext 57 220 992 Add 1 endif if ( <= -2>) button 7 240 4005 4007 1 0 77 //2 dtext 57 240 90 Add 2 for *2>gp else dtext 57 240 992 Add 2 endif if ( <= -5>) button 7 260 4005 4007 1 0 78 //5 dtext 57 260 90 Add 5 for *5>gp else dtext 57 260 992 Add 5 endif if ( <= -10>) button 7 280 4005 4007 1 0 79 //10 dtext 57 280 90 Add 10 for *10>gp else dtext 57 280 992 Add 10 endif if ( < ) button 207 220 4005 4007 1 0 80 //1 dtext 257 220 90 Add 1 for gp else dtext 257 220 992 Add 1 endif if ( <= -2>) button 207 240 4005 4007 1 0 81 //2 dtext 257 240 90 Add 2 for *2>gp else dtext 257 240 992 Add 2 endif if ( <= -5>) button 207 260 4005 4007 1 0 82 //5 dtext 257 260 90 Add 5 for *5>gp else dtext 257 260 992 Add 5 endif dtext 57 320 90 -> Available dtext 257 320 90 -> Available page 14 //sign change render_signs if button 310 340 4005 4007 0 15 83 dtext 340 340 90 Colorize endif page 15 //sign colorizer ref1= dtext 120 140 90 Choose the color for your sign button 300 250 4017 4019 1 0 86 dtext 340 250 90 Reset local.x=40 local.y=190 for 1 30 if ( > 351) local.y 190 local.x +=50 endif buttontileart 07588 07588 1 0 +5000> > -10 -5 local.y += 30 end page 16 //Property tax ref2= ref2= ref2= if !(strmatch(*Britannic Realtors*,.name>)) if _houses.count> dtext 300 140 992 houses _houses.count> endif endif if (!) if (==1) dtext 20 180 90 This property has been made exempt from decay dtext 20 200 90 As such you have no Property Tax to pay. dtext 20 220 90 This exemption is reflected on the main page of this menu dtext 20 260 90 If this house is put for sale or moved the exemption will be lost. else local.daysleft /60)/60)/24)> local.days -)> local.value +++++)> if if _houses.count> if (_houses.count> > ) dtext 100 210 32 Estate Tax applies for _houses.count>-> house(s) dtext 180 280 32 PLUS if (==1) dtext 60 300 90 Additional ? :>% of house value (flat rate) if local.rate=*2> local.maint=,,100> else local.rate=+> local.maint=,,100> endif elif (==2) dtext 110 300 90 Additional ? :> % house value dtext 80 320 90 for each house over standard allowance (_houses.count> - >) local.overage= _houses.count>-> if local.rate=*> local.rate =+> local.maint=,,100> else local.rate=*> local.rate +def.property_tax>> local.maint=,,100> endif endif else if local.maint=,,100> else local.maint=,,100> endif endif endif else if local.maint=,,100> else local.maint=,,100> endif endif local.maintenance= /30> local.maintpay = *)> dtext 70 160 90 Reset your house's decay timer to days dtext 60 180 90 Property Tax may be paid whenever any is due dtext 60 240 90 The price of your Property Tax per days dtext 60 260 90 is ? :> % of ? house value [ rate]:house value> if < (-1)> if && button 100 340 4005 4007 1 18 85 dtext 140 340 90 Pay gp to add days endif else dtext 80 340 90 No Property Tax is due on this building. endif endif else dtext 140 230 90 Staff Override dtext 140 340 90 Reset decay timer to days button 100 340 4005 4007 1 18 85 endif [DIALOG d_house_menu button] on=0,88 ref1= if (==6) src.ctag0.list=access sdialog d_house_menu 6 elif (==9) src.ctag0.list=coowner sdialog d_house_menu 7 elif (==11) src.ctag0.list=friend sdialog d_house_menu 8 elif (==12) src.ctag0.list=access sdialog d_house_menu 6 elif (==13) src.ctag0.list=ban sdialog d_house_menu 6 elif (==14) //grant access targetf, f_add_list access elif (==15)//ban targetf, f_add_list ban elif (==17) //add coowner targetf, f_add_list coowner elif (==18) //clear coowner src.ctag0.list=coowner src.dialog d_clear_list elif (==19) //add friend targetf, f_add_list friend elif (==20) //clear friend src.ctag0.list=friend src.dialog d_clear_list elif (==21) //clear access src.ctag0.list=access src.dialog d_clear_list elif (==22) //clear bans src.ctag0.list=ban src.dialog d_clear_list elif (==23) //private/public toggle if () ref1.link.tag0.private= ref1.resendtooltip if if _access.count> serv.list.house.__access.clear endif endif src.sysmessage @,,1 This property is now to the public (shop setting), only those on the banned list may not enter. src.sysmessage @,,1 You should recode any doors you do not wish the general public to be able to open. else ref1.link.tag0.private=1 ref1.resendtooltip if if _ban.count> serv.list.house.__ban.clear endif endif src.sysmessage @,,1 This propery is now private & may only be accessed by co-owners/friends & those on the access list endif dialog d_house_menu elif (==24)//rename house src.dialog d_rename_house //elif (==25) // -------------------------- reserved change sign page elif (==26)//recode doors src.dialog d_secure return 1 elif (==27)//transfer ownership ref1= if () src.sysmessage @32,,1 This house is scheduled for demolition and cannot be traded. return 1 endif targetf, f_transfer_house src.sysmessage @,,1 To whom do you wish to transfer full ownership of this property? return 1 elif (==28)//demolish src.dialog d_demolish src.sysmessage @,,1 Selecting Demolish will destroy any items left in your house. src.sysmessage @,,1 Select Redeed to send items in your house to your bank. src.sysmessage @,,1 Person specific chests will be returned to their owner regardless. return 1 elif (==29)// eject targetf, f_eject return 1 elif (==30)// price/take off market ref1= if () src.sysmessage @32,,1 This house is scheduled for demolition and cannot be sold. return 1 endif if () ref1.region.tag0.forsale= ref1.link.tag0.price= src.sysmessage @,,1 You have taken this house off the market src.sysmessage @,,1 Don't forget to reset the house settings to your preferences. resendtooltip return 1 else if () || () src.sysmessage @,,1 You still have lockdowns/secure containers within the house return 1 else if (>) && (> > 0) ref1.link.tag0.price= ref1.region.tag0.forsale=1 ref1.link.f_open_house ref1.link.tag0.private= serv.list.house__friend.clear serv.list.house__coowner.clear serv.list.house__access.clear serv.list.house__ban.clear src.sysmessage @,,1 Your house is now on the market for gp if () ref1.tag0.decay_exempt= ref1.attr |= 02 endif resendtooltip return 1 else src.sysmessage @32,,1 Only positive numeric values are valid. return 1 endif endif endif elif (==31) // add 25% storage local.value=)? /8)>:8)>> call f_buy_storage return 1 elif (==32) //add 50% storage local.value=)? /4>:/4>> call f_buy_storage return 1 elif (==33) // add 75% storage local.value=)? /8)*3)>:/8)*3)>> call f_buy_storage return 1 elif (==34) //add 100% storage local.value=)? /2>:/2>> call f_buy_storage return 1 elif (==35) //custom builder ref1= if () src.sysmessage @32,,1 This house is scheduled for demolition and cannot be customized. return 1 endif if ( != ) return 2 elif () src.sysmessage @32,,1 You are already designing == )? this:another> building. return 1 elif !() src.events +e_house_customize endif link.customize return 1 elif (==36) //sign post menu src.dialog d_sign_post return 1 elif (==50) //guild declaration ref1= if () ref1.tag0.is_guild= resendtooltip src.sysmessage @,,1 This building is no longer a guildhouse. return 1 else src.targetf, f_declare_guild src.sysmessage @,,1 Target your guildstone return 1 endif elif (==52) //door menu src.dialog d_door_menu return 1 elif (==53)// convert ref1= if () src.sysmessage @32,,1 This house is scheduled for demolition and cannot be converted. return 1 endif ref1.link.f_swap //elif (==54) // ------------------------------------ unused elif (==55) //admin, value and market src.dialog d_static_pricing return 1 //elif (==57) // ----------------------------------------reserved authorise vendor elif (==58) //flip sign ref1.flip elif (==59) //create/remove hanger if (==1) serv.newitem 0b98 new.attr=04010 new.timer= -1 new.p=.p> src.region.tag0.hanger= src.region.tag0.noredeed=2 else ref3= ref3.remove src.region.tag0.hanger= src.region.tag0.noredeed=1 endif elif (==75) //schedule demolition GM only if !() if () ref1.region.tag.forsale= ref1.link.price= src.sysmessage @,,1 Property has been removed from housing market. endif if (>) if (> < 31) if (> > 6) ref1= ref1.tag0.demolition=> ref1.timer=60*60*24*> src.sysmessage @,,1 You have scheduled this house to be demolished in > days. resendtooltip return 1 else src.sysmessage @,,1 The minimum notice period before demolition can occur is 7 days. return 1 endif else src.sysmessage @,,1 Demolition must occur within 30 days return 1 endif else src.sysmessage @32,,1 Invalid entry, days must be numeric & < 30 return 1 endif else ref1.tag.demolition= resendtooltip src.sysmessage @,,1 The scheduled demolition has been cancelled. endif elif (==76) call f_addlist_friend 1 return 1 elif (==77) call f_addlist_friend 2 return 1 elif (==78) call f_addlist_friend 5 return 1 elif (==79) call f_addlist_friend 10 return 1 elif (==80) call f_addlist_coowner 1 return 1 elif (==81) call f_addlist_coowner 2 return 1 elif (==82) call f_addlist_coowner 5 return 1 // 83 = sign colorizer // 84 = property tax elif (==85) local.daysleft /60)/60)/24)> local.days -)> local.value +++++)> ref2= if ! if if _houses.count> if (_houses.count> > ) if (==1) if local.rate=*2> local.maintenance=,,100> else local.rate=+> local.maintenance=,,100> endif elif (==2) local.overage= _houses.count>-> if local.rate=*> local.rate =+> local.maintenance=,,100> else local.rate=*> local.rate +def.property_tax>> local.maintenance=,,100> endif endif else if local.maintenance=,,100> else local.maintenance=,,100> endif endif else if local.maintenance=,,100> else local.maintenance=,,100> endif endif else if local.maintenance=,,100> else local.maintenance=,,100> endif endif local.maintenance= /30> local.maintpay = *)> ref1= if (/60)/60)/24)> < ) if ( >= ) src.gold -= ref1.timer += -1)*60)*60)*24)> src.sysmessage @,,1 gp has been paid to cover days. src.sysmessage @,,1 Your property tax is now paid for the next days. else src.sysmessage @32,,1 You lack the funds to pay the property tax return 1 endif else src.sysmessage @32,,1 You cannot pay more property tax yet return 1 endif else ref1= ref1.timer=*24) *60) *60)> ref1= serv.log used staff refresh override on a house owned by (account: ) src.sysmessage @,,1 Property refreshed. endif elif (==86) ref1.color=00 return 1 elif (==87) //exempt ref1.tag0.decay_exempt = 1 ref1.attr &~ 02 elif (==88) //normal ref1.tag.decay_exempt= ref1.attr |= 02 ref1.timer=60*60*24* endif on=100,299 // rmv person from (x) list local.list local.button -100> ref1= if _.count> if (_.>==) src.sysmessage @,,1 You have removed yourself from the list. if () src.go .p> src.sysmessage @32,,1 This is private property, you no longer have permission to enter. endif else src.sysmessage @,,1 _.>.name> has been removed from the list. endif if (_.count> < 2 ) serv.list.house__.clear else serv.list.house__..remove endif endif // sign dispid on=2965,3140 ref1= ref1.dispid=> ref1.update return 1 //sign hanger on=12967,12978 foritems 3 if (==0b98) || (==0b97) || (==0b9a) || (==0b99) || (==0b9c) || (==0ba2) ||(==0ba0) || (==0b9e) || (==0b9b) || (==0ba1) || (==0b9f) || (==0b9d) ref1= ref1.dispid=-10000> ref1.update endif endfor // sign coloring on=5000,9000 ref1= ref1.color=-5000>> //-------------------------------------------------------------------------------End main menu--------------------------------------------------------------------// [DIALOG d_demolish] 100,100 ref1= resizepic 0 0 2620 240 220 checkertrans 5 5 230 210 dtext 70 10 32 !!! WARNING !!! dtext 30 30 90 You are about to demolish dtext 30 50 90 this property. dtext 30 70 90 Do you wish to proceed? button 7 100 4017 4018 1 0 0 dtext 47 100 90 Abort button 7 130 4005 4007 1 0 1 dtext 47 130 90 Demolish & Destroy Contents if ((.type>==t_multi_custom) && ) || ( && (.type>==t_multi)) if ! local.total=++++> local.refund=+++> local.redeedfee ,,100> if ( > ) local.refund -= dtext 47 180 367 gp Refund else local.redeedfee -= dtext 47 180 32 gp Charge endif else dtext 47 180 367 FREE FOR GM endif dtext 47 160 90 Redeed & Bank Contents button 7 160 4005 4007 1 0 2 elif (.type>==t_multi) button 7 160 4005 4007 1 0 2 dtext 47 160 90 Redeed & Bank Contents local.refund=+++> dtext 47 180 367 )? gp Refund: > else dtext 47 160 992 Redeed & Bank Contents endif [DIALOG d_demolish button] on=0 src.sysmessage @,,1 Aborted ON=1 // demolish ref1= ref2= if () src.sysmessage @32,,1 This house is a guild house. src.sysmessage @32,,1 You must remove the guild declaration and move the guildstone before you can demolish the building return 1 endif f_return_secure local.total=++++> ref2.gold += ref2.sysmessage @,,1 You have been refunded gp for this property. if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> serv.list.house__coowner.clear serv.list.house__friend.clear serv.list.house__access.clear serv.list.house__ban.clear ref1.link.f_empty ref1.link.remove region.allclients.update on=2 //redeed ref1= ref2= if () src.sysmessage @32,,1 This house is a guild house. src.sysmessage @32,,1 You must remove the guild declaration and move the guildstone before you can redeed the building return 1 endif if ((.type>==t_multi_custom) && ) || ( && (.type>==t_multi)) if f_redeed else local.total=++++> local.redeedfee ,,100> local.refund = +++> if ( > ) ref2.sysmessage @,,1 You spent gp for upgrades on this property local.refund -= ref2.gold += ref2.sysmessage @,,1 Your redeed fee of was paid from money ref2.sysmessage @,,1 You have been refunded f_redeed else local.redeedfee -= if ( < ) src.sysmessage @32,,1 you lack the funds to redeed this property return 1 else ref2.gold -= ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> ref2.sysmessage @,,1 gold has been deducted from your balance to pay for this redeed. f_redeed endif endif endif else local.refund = +++> if ( > 0) ref2.gold += ref2.sysmessage @,,1 You have been refunded gp for upgrades you made to this property endif f_redeed endif region.allclients.update [FUNCTION f_redeed] f_return_secure f_bank_items ref1= if (&09c000000) serv.newitem i_deed_> else serv.newitem i_deed_> endif new.p= new.bounce ref2= ref2= serv.list.house__coowner.clear serv.list.house__friend.clear serv.list.house__access.clear serv.list.house__ban.clear if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> ref1.link.remove return 1 [DIALOG d_house_forsale] 10,10 page 0 resizepic 0 0 2620 400 118 checkertrans 5 5 390 108 resizepic 0 123 2620 400 267 checkertrans 5 128 390 257 resizepic 0 395 2620 400 60 checkertrans 5 400 390 50 gumppic 7 8 100 dtext 50 50 0 FOR SALE dtext 200 40 90 List Price gp dtext 57 140 90 Owner: dtext 150 140 90 .name> dtext 20 160 90 This house is for sale by owner button 57 180 4005 4007 1 0 1 dtext 107 180 90 Buy this house for gp dtext 20 200 90 Maximum Co-Owners dtext 250 200 90 dtext 20 220 90 Maximum Friends dtext 250 220 90 dtext 20 240 90 Maximum Lockdowns dtext 250 240 90 )? +)>:Unlimited> dtext 20 260 90 Maximum Secure Containers dtext 250 260 90 )? +)>:Unlimited> if if !() dtext 20 280 90 This house )? will be demolished:will decay> in /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days> else if ( != -1) dtext 20 280 90 This house repossessed in /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days> endif endif endif dtext 20 300 90 House Value dtext 150 300 90 )? +>:++++>> gp dtext 20 340 90 Number of visits this house has had: dtext 300 340 90 [DIALOG d_house_forsale button] on=1 ref1= local.total=> if !() if _houses.count> if if (_houses.count> < ) if ( >= ) src.gold -= ref2= if (strmatch(*Britannic Realtors*, .name>) serv.list._houses.add ref2.remove if ref1.timer=60*60*24* endif else if (.isplayer) serv.list._houses.add if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref2.gold += if ref2.sysmessage @,,1 Your house has been sold, gp has been deposited in your bank box. ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> endif endif endif ref1= src.sysmessage @,,1 You are now the owner of this property. src.sysmessage @,,1 This house is currently set to public (shop setting) src.sysmessage @,,1 Do not forget to change the settings to your preferences. src.sysmessage @,,1 The number of houses you own is now _houses.count> ref1.region.tag0.forsale= ref1.link.tag0.price= ref1.more1= ref1.link.more1= ref1.link.name= ref1.region.name= ref1.name= ref1.resendtooltip else src.sysmessage @32,,1 You do not have the funds to purchase this property return 1 endif else src.sysmessage @32,,1 You already own the maximum number of houses permitable. return 1 endif else if ( >= ) src.gold -= ref2= if (strmatch(*Britannic Realtors*, .name>) serv.list._houses.add ref2.remove if ref1.timer=60*60*24* endif else if (.isplayer) serv.list._houses.add if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref2.gold += if ref2.sysmessage @,,1 Your house has been sold, gp has been deposited in your bank box. ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> endif endif endif ref1= src.sysmessage @,,1 You are now the owner of this property. src.sysmessage @,,1 This house is currently set to public (shop setting) src.sysmessage @,,1 Do not forget to change the settings to your preferences. src.sysmessage @,,1 The number of houses you own is now _houses.count> ref1.region.tag0.forsale= ref1.link.tag0.price= ref1.more1= ref1.link.more1= ref1.link.name= ref1.region.name= ref1.name= ref1.resendtooltip else src.sysmessage @32,,1 You do not have the funds to purchase this property return 1 endif endif else if ( >= ) src.gold -= ref2= if (strmatch(*Britannic Realtors*, .name>) serv.list._houses.add ref2.remove if ref1.timer=60*60*24* endif else if (.isplayer) serv.list._houses.add if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref2.gold += if ref2.sysmessage @,,1 Your house has been sold, gp has been deposited in your bank box. ref2.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> endif endif endif ref1= src.sysmessage @,,1 You are now the owner of this property. src.sysmessage @,,1 This house is currently set to public (shop setting) src.sysmessage @,,1 Do not forget to change the settings to your preferences. src.sysmessage @,,1 The number of houses you own is now _houses.count> ref1.region.tag0.forsale= ref1.link.tag0.price= ref1.more1= ref1.link.more1= ref1.link.name= ref1.region.name= ref1.name= ref1.resendtooltip else src.sysmessage @32,,1 You do not have the funds to purchase this property return 1 endif endif endif [DIALOG d_house_visitor] 100,100 gumppic 27 27 100 dhtmlgump 50 50 100 100 0 0 if dtext 85 25 90 [.abbrev>] endif [DIALOG d_rename_house] 100,100 resizepic 0 0 2620 200 200 checkertrans 5 5 190 190 gumppic 27 27 100 dtextentrylimited 50 40 95 90 0 1 60 button 107 140 4017 4018 1 0 0 dtext 147 140 90 Abort button 7 140 4005 4007 1 0 1 dtext 47 140 90 Confirm [DIALOG d_rename_house BUTTON] ON=0 src.sysmessage @,,1 House renaming cancelled. return 1 ON=1 ref1= ref1.name= ref1.link.region.name= return 1 [DIALOG d_clear_list] 100,100 ref1= resizepic 0 0 2620 200 200 checkertrans 5 5 190 190 dtext 50 10 32 !!! WARNING !!! dtext 10 30 90 You are about to clear dtext 10 50 90 your list dtext 10 90 90 Do you wish to proceed? button 107 140 4017 4018 1 0 0 dtext 147 140 90 Abort if !(strcmpi("","COOWNER")) button 7 140 4005 4007 1 0 1 elif !(strcmpi("","FRIEND")) button 7 140 4005 4007 1 0 2 elif !(strcmpi("","ACCESS")) button 7 140 4005 4007 1 0 3 elif !(strcmpi("","BAN")) button 7 140 4005 4007 1 0 4 endif dtext 47 140 90 Confirm [DIALOG d_clear_list button] ON=0 src.sysmessage @,,1 Aborted src.ctag.list= ON=1,4 ref1= if (==1)//co-owner serv.list.house__coowner.clear src.sysmessage @,,1 Coowner list has been cleared return 1 elif (==2)//friend serv.list.house__friend.clear src.sysmessage @,,1 Friend list has been cleared return 1 elif (==3)//access serv.list.house__access.clear src.sysmessage @,,1 Access list has been cleared return 1 elif (==4)//bans serv.list.house__ban.clear src.sysmessage @,,1 Ban list has been cleared return 1 endif [DEFNAME signs] sign_1 9 sign_2 29 sign_3 54 sign_4 90 sign_5 147 sign_6 169 sign_7 177 sign_8 204 sign_9 251 sign_10 257 sign_11 263 sign_12 298 sign_13 347 sign_14 424 sign_15 441 sign_16 466 sign_17 514 sign_18 600 sign_19 601 sign_20 602 sign_21 603 sign_22 660 sign_23 666 sign_24 672 sign_25 898 sign_26 970 sign_27 974 sign_28 982 [DIALOG d_sign_post] 0,0 page 0 resizepic 0 0 2620 600 620 checkertrans 5 5 590 610 local.y=10 for 1 28 if ( < 6) local.btn=7 local.pic=57 elif ( < 11) local.btn=107 local.pic=157 elif ( < 16) local.btn=207 local.pic=257 elif ( < 21) local.btn=307 local.pic=357 elif ( < 26) local.btn=407 local.pic=457 else local.btn=507 local.pic=557 endif if (==6) || (==11) || (==16) || (==21) || (==26) local.y=10 endif button 4005 4007 1 0 > tilepic > local.y += 125 endfor button 510 520 4017 4019 1 0 0 dtext 550 520 90 Cancel [DIALOG d_sign_post button] on=0 dialogclose on=1,1000 ref1= foritems 2 if (==i_wall_wood) && (==) ref1= ref1.dispid= ref1.update endif endfor [DIALOG d_secure] 100,100 ref1= resizepic 0 0 2620 280 250 checkertrans 5 5 270 240 dtext 100 10 90 )? Secure Containers:Door Recoding> dtext 47 50 90 Restrict to Owner/Co-owners dtext 47 80 90 Restrict to Owner/Co-owners/friends dtext 47 140 )? 90 Restrict to Guild members:992 Restrict to Guild members> dtext 47 110 90 Restrict to Unique UID button 7 50 4005 4007 1 0 )? 6:1> button 7 80 4005 4007 1 0 )? 7:2> button 7 110 4005 4007 1 0 )? 8:3> button 7 140 4005 4007 1 0 )? 9:4> if !() dtext 47 170 90 Reset button 7 170 4005 4007 1 0 5 endif button 7 210 4017 4019 1 0 0 dtext 47 210 90 Exit [DIALOG d_secure button] ON=0 dialogclose on=1,9 if (==1)//door restrict 1 src.targetf, f_restrict 1 src.sysmessage @,,1 Target the door you wish to make Owner/Co-owner only return 1 elif (==2)//door restrict 2 src.targetf, f_restrict 2 src.sysmessage @,,1 Target the door you wish to make Owner/Co-owner/Friend only return 1 elif (==3)//door uid only src.targetf, f_uidonly src.sysmessage @,,1 Who are you making a unique access door for? return 1 elif (==4)//door guild only src.targetf, f_guild src.sysmessage @,,1 Target the door you wish to make Guild access only return 1 elif (==5)//door reset src.targetf, f_reset src.sysmessage @,,1 Target the door you wish to reset. return 1 elif (==6)//cont owner/co-owner ref4= ref4.events +t_coowner ref4.resendtooltip src.sysmessage @,,1 Only the Owner & Co-owners may now open this src.ctag0.cont= return 1 elif (==7)//cont owner/co-owner/friend ref4= ref4.events +t_friend ref4.resendtooltip src.sysmessage @,,1 Only the Owner, Co-owners & Friends of the house may now open this src.ctag0.cont= return 1 elif (==8)//cont uid only targetf, f_uidonly_cont src.sysmessage @,,1 For whom are you making this unique access .name>? //src.ctag0.cont= return 1 elif (==9)//cont guild ref4= ref4.events +t_guild ref4.resendtooltip local.guildbox= ref1= src.sysmessage @,,1 Only .abbrev> guild members may now open this .name>. src.ctag0.cont= return 1 endif [FUNCTION f_buy_storage] ref1= if () src.sysmessage @32,,1 This house is scheduled for demolition and cannot be upgraded. return 1 endif if ( >= ) src.gold -= ref1.tag0.boughtstorage += if (==)? /8)>:8)>>) local.storage=25 elif (==)? /4>:/4>>) local.storage=50 elif (==)? /8)*3)>:/8)*3)>>) local.storage=75 else local.storage=100 endif ref1.tag0.xtrastorage += src.sysmessage @,,1 gp has been deducted from your bank to pay for this upgrade. else src.sysmessage @32,,1 You do not have the funds to pay for this storage upgrade. return 1 endif [function f_bank_items] ref1=.link> serv.newitem i_crate_lg new.name=Moving Crate local.uid= local.1=>>> local.2=>>>> If ( > ) local.radius = else local.radius = endif foritems ref2= if !(STRCMPI(,)) if !(strmatch(,*i_trashcan*) ref2.remove endif if () || () || () ref2.move 0,0,-20 ref2.attr= &~ attr_move_never local.secures = +1> ref2.events -t_coowner ref2.events -t_friend ref2.events -t_guild ref2.cont= endif ref1.f_return_secure if () ref2.move 0,0,-20 ref2.events -t_locked ref2.attr = &~ attr_move_never ref2.cont= local.lockcount= +1> endif if !() && !(==) ref2.move 0,0,-20 ref2.cont= endif endif endfor ref4 if (.rescount> > 0) ref4.cont= else ref4.remove //no items inside? no chest! endif forclients 18 resend endfor if (> > 0) src.sysmessage @,,1 > items have been unlocked, placed in a moving crate and sent to your bank. endif if (> > 0) src.sysmessage @,,1 > secure chests have been deactivated, placed in a moving crate and sent to your bank. endif if (> >0) src.sysmessage @,,1 > person specific secure chests have been returned to their owners banks. endif return 0 [FUNCTION f_return_secure] ref1=.link> local.1=>>> local.2=>>>> If ( > ) local.radius = else local.radius = endif foritems REF2= //the items checked if !(STRCMPI(,)) if () ref2.move 0,0,-20 ref2.attr= &~ attr_move_never if (>==) local.secures = +1> else local.returns = +1> endif ref2.events -t_uidonly ref2.cont= .findlayer.29> src.sysmessage @,,1 .name>'s secure chest has been sent to their bank ref7= if ref7.sysmessage @,,1 A secure chest has been returned to your bank endif ref2.tag0.uidonly= endif endif endfor region.allclients.update return 0 [FUNCTION f_add_list] local.list= ref1= ref2 = if if (==) src.sysmessage @32,,1 You cannot add yourself to the list. return 1 endif if (>) src.sysmessage @32,,1 is the owner of this property return 1 elif (>) src.sysmessage @32,,1 is a co-owner of this property. src.sysmessage @32,,1 remove them from this list before adding them to another. return 1 elif (>) src.sysmessage @32,,1 is a friend of this property. src.sysmessage @32,,1 remove them from this list before adding them to another. return 1 elif (>) src.sysmessage @32,,1 is on the access list. src.sysmessage @32,,1 remove them from this list before adding them to another. return 1 elif (>) src.sysmessage @32,,1 is on the bans list. src.sysmessage @32,,1 remove them from this list before adding them to another. return 1 else if _.count> if (strmatch(*ban*,) || (strmatch(*access*,) if (_.count> <= 10) serv.list.house__.add if (strmatch(*ban*,) src.sysmessage @32,,1 has been banned from the property ref2.sysmessage @32,,1 You have been banned from this property ref2.go return 1 elif (strmatch(*access*,) src.sysmessage @367,,1 has been granted access to the property ref2.sysmessage @367,,1 You have been granted access to the property return 1 endif else src.sysmessage @32,,1 Your is full. src.sysmessage @32,,1 Remove someone from the list and try again. return 1 endif else if (_.count> < s>) serv.list.house__.add src.sysmessage @,,1 has been added as a for this property ref2.sysmessage @,,1 You have been made a for this property return 1 else src.sysmessage @32,,1 You already have the maximum number of s permitted for this property. src.sysmessage @32,,1 Remove someone from the list and try again return 1 endif endif else if (strmatch(*ban*,) || (strmatch(*access*,) serv.list.house__.add if (strmatch(*ban*,) src.sysmessage @32,,1 has been banned from the property ref2.sysmessage @32,,1 You have been banned from this property return 1 elif (strmatch(*access*,) src.sysmessage @367,,1 has been granted access to the property ref2.sysmessage @367,,1 You have been granted access to the property return 1 endif else serv.list.house__.add src.sysmessage @,,1 has been added as a for this property ref2.sysmessage @,,1 You have been made a for this property return 1 endif endif endif endif [FUNCTION f_addlist_friend] ref1= if () src.sysmessage @32,,1 This house is scheduled for demolition and cannot be upgraded. return 1 endif local.value=*> if ( >= ) src.gold -= ref1.tag0.xtra_friends = ref1.tag.max_friends += src.sysmessage @,,1 friend slot(s) have been added to your house list for gp. else src.sysmessage @32,,1 You lack the funds to add extra friend slots. return 1 endif [FUNCTION f_addlist_coowner] ref1= if () src.sysmessage @32,,1 This house is scheduled for demolition and cannot be upgraded. return 1 endif local.value=*> if ( >= ) src.gold -= ref1.tag0.xtra_coowners = ref1.tag.max_coowners += src.sysmessage @,,1 co-owner slot(s) have been added to your house list for gp. else src.sysmessage @32,,1 You lack the funds to add extra co-owner slots. return 1 endif [FUNCTION f_eject] ref1= ref2= if if ! if (strmatch(,)) if (==) src.sysmessage @32,,1 You cannot eject yourself from this property. return 1 endif if () || () || () src.sysmessage @32,,1 You cannot eject this person else argo.go .p> endif else src.sysmessage @32,,1 That person is not in your house return 1 endif else src.sysmessage @32,,1 You cannot eject staff from your house return 1 endif endif [FUNCTION f_transfer_house] ref1= ref2= if () if () src.sysmessage @32,,1 is currently banned from this property, you must unban the before you can transfer the property to them. return 1 endif if (==) src.sysmessage @32,,1 You already own this property return 1 endif if _houses.count> if if (_houses.count> < ) if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif serv.list._houses.add ref1.link.more1= src.sysmessage @,,1 You transfer the property to src.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> ref2.sysmessage @,,1 has transferred ownership of this property to you. ref2.sysmessage @,,1 The number of houses you own is now _houses.count> ref2.list_shuffle resendtooltip 1 return 1 else src.sysmessage @32,,1 already owns the maximum number of houses permitable. ref2.sysmessage @32,,1 You already own the maximum number of houses permitable. return 1 endif else if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif serv.list._houses.add ref1.link.more1= src.sysmessage @,,1 You transfer the property to src.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> ref2.sysmessage @,,1 has transferred ownership of this property to you. ref2.sysmessage @,,1 The number of houses you own is now _houses.count> ref2.list_shuffle resendtooltip 1 return 1 endif else if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif serv.list._houses.add ref1.link.more1= ref1.more1= src.sysmessage @,,1 You transfer the property to src.sysmessage @,,1 The number of houses you own is now _houses.count>? _houses.count>:0> ref2.sysmessage @,,1 has transferred ownership of this property to you. ref2.sysmessage @,,1 The number of houses you own is now _houses.count> ref2.list_shuffle resendtooltip 1 return 1 endif endif [FUNCTION list_shuffle] ref1= ref2= if if (_coowner.count> < 2) serv.list.house__coowner.clear else serv.list.house__coowner._coowner.findelem >.remove endif elif if (_friend.count> < 2) serv.list.house__friend.clear else serv.list.house__friend._friend.findelem >.remove endif elif if (_access.count> < 2) serv.list.house__access.clear else serv.list.house__access._access.findelem >.remove endif endif [FUNCTION is_owner] if ref1= else ref1= endif if (==) return 1 endif return 0 [FUNCTION acc_is_owner] if ref1= else ref1= endif local.acc = for .chars> if (.char.-1>.is_owner >) return 1 endif endfor return 0 [FUNCTION is_coowner] if ref1= else ref1= endif if _coowner.count> if _coowner.findelem > != -1 return 1 endif endif return 0 [FUNCTION is_friend] if ref1= else ref1= endif if _friend.count> if _friend.findelem > != -1 return 1 endif endif return 0 [FUNCTION is_access] if ref1= else ref1= endif if _access.count> if _access.findelem > != -1 return 1 endif endif return 0 [FUNCTION is_ban] if ref1= else ref1= endif if _ban.count> if _ban.findelem > != -1 return 1 endif endif return 0 [FUNCTION co_f_calc] local.srx=) *2> local.sry=) *2> local.size=* > tag.max_coowners=/40)> if ( > ) tag.max_coowners= endif tag.max_friends=/20)> if ( > ) tag.max_friends= endif if tag0.max_vendors=++2)/2> else tag0.max_vendors=++2> endif [FUNCTION lockdown_calc] local.mrx=) *2> local.mry=) *2> local.space=* > tag.maxlockdowns=*4> if ( < ) tag.maxlockdowns= elif ( > ) tag.maxlockdowns= endif tag.maxsecure=/20)> if ( < ) tag.maxsecure=) elif ( > ) tag.maxsecure= endif [FUNCTION f_open_house] foritems >>>+>>>>)> local.sign= if (==t_door) && (==.link>) ref1= if ref1.tag0.restricted= endif if ref1.tag0.uidonly= endif if ref1.tag0.guild= endif elif (==t_door_locked) && (==.link>) ref1= ref1.type=t_door if ref1.tag0.restricted= endif if ref1.tag0.uidonly= endif if ref1.tag0.guild= endif endif endfor serv.list.house__coowner.clear serv.list.house__friend.clear serv.list.house__access.clear serv.list.house__ban.clear [FUNCTION f_remove_keys] ref1= FORINSTANCES i_key_copper if (==) remove endif ENDFOR [FUNCTION f_door_setup] foritems >>>+>>>>> if (==t_door_locked) ref5= ref5.type=t_door endif endfor return 0 [FUNCTION f_empty] REF1= REF1= local.1=>>> local.2=>>>> If ( > ) local.radius = else local.radius = endif foritems ref2= if !(STRCMPI(,)) if !(strmatch(,*i_trashcan*) ref2.remove endif if () || () || () ref2.move 0,0,-20 ref2.attr= &~ attr_move_never local.secures = +1> ref2.events -t_coowner ref2.events -t_friend ref2.events -t_guild ref2.remove endif ref1.f_return_secure if () ref2.z= +-10> ref2.events -t_locked ref2.attr = &~ attr_move_never ref2.remove local.lockcount= +1> endif if !() && !(==) ref2.z= +-10> ref2.remove endif endif endfor [ITEMDEF i_trashcan] NAME=trashcan ID=i_barrel_open TYPE=t_container ON=@CREATE COLOR=0835 ON=@Dropon_Self ref6= src.sound=011e ref6.remove return 1 [TYPEDEF t_door] ON=@DClick ref1= if !(==04fffffff) if if () ref1.timer=-1 else if ! if ? (>):(>)> if !() ref1.timer=60*60*24* else src.sysmessage @32,,1 This house is improperly placed and has been scheduled for demolition in /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days.> src.sysmessage @32,,1 Unless you redeed it yourself before that time the house and all items within will be lost without refund. endif endif else if () src.sysmessage @32,,1 This house is improperly placed and has been scheduled for demolition in /86400> < 1)? %86400)/3600> hours and %86400)%3600)/60> minutes.:/86400> days.> src.sysmessage @32,,1 Unless you redeed it yourself before that time the house and all items within will be lost without refund. endif endif endif endif if !() ref1= if !() if () src.sysmessage @32,,1 This door is locked. return 1 elif () if (==) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif elif () if (==) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif elif () if (==) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif elif () if (==1) if ? (>):(>)> || (>) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif elif (==2) if ? (>):(>)> || (>) || (>) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif endif else return 0 endif else if () if (==) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif elif () if (==) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif elif () if () if (==) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif endif elif () if (==1) if ? (>):(>)> || (>) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif elif (==2) if ? (>):(>)> || (>) || (>) return 0 else src.sysmessage @32,,1 This door is locked. return 1 endif endif else if ? (>):(>)> || (>) || (>) || (>) return 0 else src.sysmessage @32,,1 This door is locked return 1 endif endif endif endif endif ON=@Click if () message [.abbrev>] Guild Members Only. return 1 elif () message Private message .name> return 1 elif () message Restricted Access return 1 endif ON=@ClientToolTip if () src.addcliloc 1042971, [.abbrev>] Guild Members Only return 1 elif () src.addcliloc 1070722, Private src.addcliloc 1042971, .name> Only return 1 elif () if (==1) src.addcliloc 1042971, Restricted Access src.addcliloc 1070722, Owner & Co-owners Only return 1 elif (==2) src.addcliloc 1042971, Restricted Access src.addcliloc 1070722, Owner Co-owners & Friends Only return 1 endif endif [FUNCTION f_restrict] ref7= if () || () src.sysmessage @32,,1 That is not allowed return 1 endif if () || () src.sysmessage @,,1 You must reset this door before recoding. return 1 endif if (==t_door) || (==t_door_locked) if(==)) ref7.tag0.restricted= ref7.resendtooltip if (==1) src.sysmessage @,,1 Only the owner & co-owners can open this door. elif (==2) src.sysmessage @,,1 Only the owner, co-owners & friends of the house can open this door. endif endif else src.sysmessage @32,,1 That is not a door endif src.dialog d_secure [FUNCTION f_guild] ref1= local.guild= ref7= if () || () src.sysmessage @32,,1 That is not allowed return 1 endif if () || () src.sysmessage @,,1 You must reset this door before recoding. return 1 endif if (==t_door) || (==t_door_locked) if (==) ref7.tag0.guild= ref7.resendtooltip src.sysmessage @,,1 Only guild members may now open this door. return 1 endif else src.sysmessage @32,,1 That is not a door endif src.dialog d_secure [FUNCTION f_uidonly] if src.ctag0.key= targetf, f_uidonly_door src.sysmessage @,,1 Target the door. endif [FUNCTION f_uidonly_door] ref7= if () || () src.sysmessage @32,,1 That is not allowed return 1 endif if () || () src.sysmessage @,,1 You must reset this door before recoding. return 1 endif if (==t_door) || (==t_door_locked) if (==) ref7.tag0.uidonly= ref7.resendtooltip src.sysmessage @,,1 Door coded, only .name> can open this door endif else src.sysmessage @32,,1 That is not a door endif src.ctag0.key= src.dialog d_secure [FUNCTION f_reset] ref7= if () || () src.sysmessage @32,,1 That is not allowed return 1 endif //if (!=t_door) || (!=t_door_locked) // src.sysmessage @32,,1 That is not allowed // return 1 //endif if (==t_door_locked) ref7.type=t_door endif if (==t_door) || (==t_door_locked) if (==) ref7.tag0.restricted= ref7.tag0.uidonly= ref7.tag0.guild= ref7.resendtooltip src.sysmessage @,,1 Door Reset src.sysmessage @,,1 Warning, If your house is set to public, anyone will be able to open this door. endif else src.sysmessage @32,,1 That is not a door endif src.dialog d_secure [FUNCTION f_declare_guild] ref1= if () || () src.sysmessage @32,,1 That is not allowed return 1 endif if (!=t_stone_guild) src.sysmessage @32,,1 That is not allowed return 1 endif if (==t_stone_guild) && (==) ref1.tag0.is_guild= ref1.resendtooltip src.sysmessage @,,1 All .name> guild members now have access to this building. src.sysmessage @,,1 Don't forget to set your door codes if areas are/need to be restricted. endif [SPEECH spk_player] ON=*lock this* if ? ():()> || () || () src.targetf, f_lock src.sysmessage @,,1 What do you wish to lockdown? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*unlock this* if ? ():()> || () || () src.targetf, f_lock src.sysmessage @,,1 What do you wish to release? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*secure this* if ? ():()> || () || () src.targetf, f_secure src.sysmessage @,,1 What do you wish to secure? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*unsecure this* if ? ():()> || () || () src.targetf, f_secure src.sysmessage @,,1 What do you wish to release? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*move north* if ? ():()> || () || () src.targetf, f_moven src.sysmessage @,,1 What do you wish to move? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*move south* if ? ():()> || () || () src.targetf, f_moves src.sysmessage @,,1 What do you wish to move? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*move east* if ? ():()> || () || () src.targetf, f_movee src.sysmessage @,,1 What do you wish to move? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*move west* if ? ():()> || () || () src.targetf, f_movew src.sysmessage @,,1 What do you wish to move? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*raise this* if ? ():()> || () || () src.targetf, f_raise src.sysmessage @,,1 What do you wish to raise? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*lower this* if ? ():()> || () || () src.targetf, f_lower src.sysmessage @,,1 What do you wish to lower? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*flip this* if ? ():()> || () || () src.targetf, f_flip src.sysmessage @,,1 What do you wish to flip? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*release this* if ? ():()> || () || () src.targetf, f_release src.sysmessage @,,1 What do you wish to release? return 1 else src.sysmessage @32,,1 You must be in your house to do that. return 1 endif ON=*bank* if ! if if ? ():()> || () || () || () src.bankself src.sysmessage You have gold in your Bank Box else return 0 endif endif else src.bankself return 0 endif ON=*eject* if ? ():()> || () || () || () src.targetf, f_eject else return 0 endif ON=Ban Person if ? ():()> || () || () src.targetf, f_add_list ban else return 0 endif ON=Place trashcan if ? ():()> || () || () ref1= if () src.sysmessage @32,,1 You already have a trashcan. return 1 else serv.newitem i_trashcan new.p= new.attr=attr_move_never ref1.tag0.trashcan= endif else return 0 endif ON=Remove trashcan if ? ():()> || () || () ref1= if () try uid..remove ref1.tag.trashcan= else src.sysmessage @32,,1 You have no trashcan to remove. return 1 endif else return 0 endif ON=*house commands* src.sdialog d_house_commands [DIALOG d_house_commands] 0,0 page 0 resizepic 27 21 2620 445 44 checkertrans 32 26 435 34 button 438 28 4017 4018 1 0 0 dtext 170 35 90 HOUSE VERBAL COMMANDS resizepic 27 71 2620 445 394 checkertrans 32 76 435 384 dtext 60 80 90 COMMAND: dtext 60 110 90 Lock This dtext 60 130 90 Unlock This dtext 60 150 90 Release This dtext 60 170 90 Secure This dtext 60 190 90 Unsecure This dtext 60 210 90 Raise This dtext 60 230 90 Lower This dtext 60 250 90 Flip This dtext 60 270 90 Move North dtext 60 290 90 Move South dtext 60 310 90 Move East dtext 60 330 90 Move West dtext 60 350 90 Ban dtext 60 370 90 Eject dtext 60 390 90 Place Trashcan dtext 60 410 90 Remove Trashcan dtext 180 80 90 DESCRIPTION: dtext 180 110 90 Locks an item down dtext 180 130 90 Unlocks an item dtext 180 150 90 Releases an item dtext 180 170 90 Adds security to containers dtext 180 190 90 Removes security from containers dtext 180 210 90 Raises targeted item up dtext 180 230 90 Lowers targeted item down dtext 180 250 90 Flips targeted item. dtext 180 270 90 Moves targeted item north dtext 180 290 90 Moves targeted item south dtext 180 310 90 Moves targeted item east dtext 180 330 90 Moves targeted item west dtext 180 350 90 Bans a player from your house dtext 180 370 90 Removes a player from your house dtext 180 390 90 Places a trashcan where you are standing dtext 180 410 90 Removes a trashcan if dtext 60 430 90 Bank dtext 180 430 90 Opens your bank box endif [DIALOG d_house_commands button] [FUNCTION f_release] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) if (=t_container) || (=t_container_locked) || (=t_chest_locked) if ( & attr_move_never) ref8= ref8.attr &= ~attr_move_never ref8.message [Released] ref8.events -t_coowner ref8.events -t_friend ref8.events -t_uidonly ref8.events -t_guild ref8.resendtooltip if ref8.tag0.uidonly= endif src.sysmessage @,,1 This is now unsecured, anyone may access or move it. if ref1= ref1.tag.secure=-1> ref1.tag0.storage=-> endif return 1 else src.sysmessage @32,,1 This was not designated as a secure container. return 1 endif else if ( & attr_move_never) ref8= ref8.attr &= ~attr_move_never ref8.message [Released] ref8.events -t_locked ref8.resendtooltip if ref1= ref1.tag.locked=-1> endif src.sysmessage @,,1 This has been unlocked and may now be moved. return 1 else src.sysmessage @32,,1 This is not locked down. return 1 endif endif endif [FUNCTION f_lock] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) if (=t_container) || (=t_container_locked) || (=t_chest_locked) src.sysmessage @32,,1 You must use secure for containers. return 1 else if ( & attr_move_never) ref8= //ref8 &= ~attr_lockeddown ref8.attr &= ~attr_move_never ref8.message [Released] ref8.events -t_locked //ref8.lockeddown 0 ref8.resendtooltip if ref1= ref1.tag.locked=-1> endif return 1 else ref1= if (> < +)>) ref8= //ref8.attr |= attr_lockeddown ref8.attr |= attr_move_never ref8.message [Locked] ref8.events +t_locked //ref8.lockeddown 1 ref8.resendtooltip if ref1= ref1.tag.locked=+1> endif return 1 else src.sysmessage @32,,1 You have no more lockdown slots available. return 1 endif endif endif else src.sysmessage @32,,1 Nice try, but that's NOT in your house! return 1 endif [FUNCTION f_secure] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) if (==t_container) || (==t_container_locked) || (=t_chest_locked) if ( & attr_move_never) ref8= //ref8.attr &= ~attr_secure ref8.attr &= ~attr_move_never ref8.message [Released] ref8.events -t_coowner ref8.events -t_friend ref8.events -t_uidonly ref8.events -t_guild //ref8.secure 0 ref8.resendtooltip ref8.tag0.uidonly= src.sysmessage @,,1 This is now unsecured, anyone may access or move it. if ref1= ref1.tag.secure=-1> ref1.tag0.storage=-> endif return 1 else ref1= if (> < +)>) if ( < +)*)-)>) ref8= //ref8.attr |= attr_secure ref8.attr |= attr_move_never ref8.message [Secured] ref8.resendtooltip //ref8.secure 1 if ref1= ref1.tag0.secure=+1> ref1.tag0.storage=+> endif src.ctag0.cont= src.dialog d_secure src.sysmessage @,,1 Who do you wish to have access to this . else src.sysmessage @32,,1 You cannot secure this it contains items, you only have +)*100)-)> secure storage slots left. return 1 endif else src.sysmessage @32,,1 You have no more secure container slots available. return 1 endif endif else src.sysmessage @32,,1 You must use lockdowns for non containers. return 1 endif endif [FUNCTION f_moven] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) ref8= if ( == ) ref8.move 0,-1,0 ref8.update return 1 else src.sysmessage @32,,1 You cannot move this any further. return 1 endif else src.sysmessage @32,,1 Nice try, but that's NOT in your house! return 1 endif [FUNCTION f_moves] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) ref8= if ( == ) ref8.move 0,1,0 ref8.update return 1 else src.sysmessage @32,,1 You cannot move this any further. return 1 endif else src.sysmessage @32,,1 Nice try, but that's NOT in your house! return 1 endif [FUNCTION f_movee] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) ref8= if ( == ) ref8.move 1,0,0 ref8.update return 1 else src.sysmessage @32,,1 You cannot move this any further. return 1 endif else src.sysmessage @32,,1 Nice try, but that's NOT in your house! return 1 endif [FUNCTION f_movew] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) ref8= if ( == ) ref8.move -1,,0 ref8.update return 1 else src.sysmessage @32,,1 You cannot move this any further. return 1 endif else src.sysmessage @32,,1 Nice try, but that's NOT in your house! return 1 endif [FUNCTION f_raise] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) ref8= IF < +17 ref8.Z=+1 RETURN 1 ELSE SRC.MESSAGE @32,,1 You cannot lift this any higher. RETURN 1 ENDIF else src.sysmessage @32,,1 That's not in your house! return 1 endif [FUNCTION f_lower] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) ref8= IF > ref8.Z=+-1 RETURN 1 ELSE SRC.MESSAGE @32,,1 You cannot put this into the ground. RETURN 1 ENDIF else src.sysmessage @32,,1 That's not in your house! return 1 endif [FUNCTION f_flip] ref1= if (==) || () src.sysmessage @32,,1 You cannot release that. return 1 elif (==) src.sysmessage @32,,1 You cannot release that. return 1 endif if () src.sysmessage @32,,1 That would be hillarious... but I am afraid we can't allow it. return 1 endif if (==) ref8= ref8.flip return 1 else src.sysmessage @32,,1 Nice try, but that's NOT in your house! return 1 endif [EVENTS e_house_player_events] ON=@ItemDClick if (==) // || (==i_vendor_rental_contract) ref1= ref1.link.regionchk if ! if ? ():()> if src.sysmessage @32,,1 You must set your building to public before you can place vendors here. return 1 else if ref1= if ( < ) ref1.tag0.vendors += 1 return 0 else sysmessage @32,,1 You have no available vendor slots sysmessage @32,,1 You must remove an existing vendor before you can place a new one. return 1 endif else return 0 endif endif else sysmessage @32,,1 Only the home owner may place vendors here. return 1 endif else if ? ():()> || () || () if src.sysmessage @32,,1 You must set your building to public before you can place vendors here. return 1 else if ref1= if ( < ) ref1.tag0.vendors += 1 return 0 else sysmessage @32,,1 You have no available vendor slots sysmessage @32,,1 You must remove an existing vendor before you can place a new one. return 1 endif else return 0 endif endif else sysmessage @32,,1 Only people on the home lists may place a vendor here. return 1 endif endif ON=@ContextMenuRequest if == && src.addcontextentry 101,3006207 endif ON=@ContextMenuSelect if ==101 src.go .p> endif [DIALOG d_door_menu] 100,100 page 0 ref1= resizepic 0 123 2620 400 267 checkertrans 5 128 390 257 dhtmlgump 20 135 370 40 0 0 Stand where you wish to place the door, then press the button that matches the orientation of the door you require. gumppic 30 180 05780 gumppic 75 180 05781 gumppic 95 300 05782 gumppic 135 300 05783 gumppic 255 300 05784 gumppic 295 300 05785 gumppic 320 180 05786 gumppic 360 180 05787 tilepic 15 200 0679 //door 1 tilepic 55 200 067b //door 2 tilepic 95 200 0675 //door 3 tilepic 135 200 0677 //door 4 tilepic 220 200 067d //door 5 tilepic 260 200 067f //door 6 tilepic 300 200 0681 //door 7 tilepic 340 200 0683 //door 8 button 10 340 4023 4025 1 0 1657 button 50 340 4023 4025 1 0 1659 button 90 340 4023 4025 1 0 1653 button 130 340 4023 4025 1 0 1655 button 240 340 4023 4025 1 0 1661 button 280 340 4023 4025 1 0 1663 button 320 340 4023 4025 1 0 1665 button 360 340 4023 4025 1 0 1667 button 190 200 4017 4018 1 0 0 dtext 185 220 90 Cancel button 190 260 4020 4022 1 0 1 dtext 180 280 90 Remove dtext 190 300 90 Door dtext 180 340 90 >/> [DIALOG d_door_menu button] on=1 src.targetf, f_remove_door src.sysmessage @,,1 Target the door to remove src.sysmessage @,,1 It is not advised to remove your front doors... return 1 on=1653,1667 ref1= if ? (>):(>)> if ( < ) serv.newitem > new.p new.attr=attr_move_never new.link= ref1.tag0.dused = +1> else src.sysmessage @32,,1 You have no more doors available. return 1 endif else src.sysmessage @32,,1 You may only create doors within your house. return 1 endif src.dialog d_door_menu [FUNCTION f_remove_door] ref1= if (==) && ? (>):(>)> ref1.tag0.dused = -1> ref9= ref9.remove src.sysmessage @,,1 You have removed the door. return 1 else src.sysmessage @32,,1 You cannot remove that door. return 1 endif dialog d_door_menu //----------------------------------------------------------------------------Begin MrSugarCube-------------------------------------------------------------------// //Custom House design system [EVENTS e_house_customize] ON=@SkillStart IF !() RETURN 2 ENDIF SYSMESSAGE @32,,1 You cannot do this whilst designing a house. RETURN 1 ON=@SkillUseQuick IF !() RETURN 2 ENDIF RETURN 1 ON=@HouseDesignCommit IF () SYSMESSAGE @,,1 Your new house design has been committed. RETURN 2 ENDIF LOCAL.OLDCOST = * 500)> LOCAL.NEWCOST = * 500)> LOCAL.CURCOST = - )> IF ( < ) SYSMESSAGE @32,,1 You cannot afford this house design. RETURN 1 ENDIF ref1= ref1.tag0.construction=-> SYSMESSAGE @,,1 Your new house design has been committed. IF ( == 0) SYSMESSAGE @,,1 As the new design costs the same as the previous one, no gold has been taken out of your account. ELSEIF ( < 0) LOCAL.CURCOST = )> GOLD += SYSMESSAGE @,,1 As the new design is cheaper than the previous one, gold has been returned to you. ELSE GOLD -= SYSMESSAGE @,,1 gold has been taken out of your account to pay for the construction. ENDIF RETURN 2 ON=@HouseDesignExit SYSMESSAGE @,,1 You have left house design mode. timerf 1,f_fixpc RETURN 2 [FUNCTION f_fixpc] p=.p> update //-------------------------------------------------------------------------------End Mr SugarCube----------------------------------------------------------------// [DIALOG d_static_pricing] 100,100 page 0 ref1= resizepic 0 123 2620 400 267 checkertrans 5 128 390 257 dtext 140 140 90 Static Building Pricing dtext 100 180 90 Building footprint gumppic 130 220 2501 dtextentrylimited 135 220 100 20 90 0 10 dtext 120 240 90 Enter this property's value button 180 300 4023 4025 1 0 1 dtext 120 330 90 Put this house on the market [DIALOG d_static_pricing button] on=1 ref1= ref1.link.tag0.value= ref1.link.tag0.price= ref1.region.tag0.forsale=1 ref1.link.tag0.private= ref1.timer=1 [FUNCTION f_uidonly_cont] if ref8= ref8.tag0.uidonly= ref8.events +t_uidonly ref8.resendtooltip src.sysmessage @,,1 Only .name> may now open this .name>. src.ctag0.cont= return 1 endif [TYPEDEF t_uidonly] ON=@Click message @,,1 .name>'s chest ON=@DClick if ! if (==) return 0 else src.sysmessage @32,,1 This belongs to .name> you cannot open it. return 1 endif endif ON=@Dropon_Self if ( < ) ref1= if ( < +)*)>) ref1.tag.storage=+1> else src.sysmessage @32,,1 You have reached your maximum storage capacity for this property. return 1 endif else src.sysmessage @32,,1 This is full return 1 endif ON=@PickUp_Self ref1= ref1.tag.storage=-1> ON=@ClientToolTip src.addcliloc 1042971,.name>'s src.addcliloc 501644 [TYPEDEF t_coowner] ON=@Click message @,,1 Owner & Co-owner Storage ON=@DClick ref1= if ! if ? (>):(>)> || (>) return 0 else src.sysmessage @32,,1 Only the owner & co-owners can open this . return 1 endif endif ON=@Dropon_Self ref1= if ( < ) if ( < +)*)>) ref1.tag.storage=+1> else src.sysmessage @32,,1 You have reached your maximum storage capacity for this property. return 1 endif else src.sysmessage @32,,1 This is full return 1 endif ON=@PickUp_Self ref1= ref1.tag.storage=-1> ON=@ClientToolTip src.addcliloc 1042971,Owner & Co-owners Only src.addcliloc 501644 [TYPEDEF t_friend] On=@Click message @,,1 Owner, Co-owner & Friend's Chest ON=@DClick ref1= if ! if ? (>):(>)> || (>) || (>) return 0 else src.sysmessage @32,,1 Only The owner, co-owners & friends of the house can open this . return 1 endif endif ON=@Dropon_Self ref1= if ( < ) if ( < +)*)>) ref1.tag.storage=+1> else src.sysmessage @32,,1 You have reached your maximum storage capacity for this property. return 1 endif else src.sysmessage @32,,1 This is full return 1 endif ON=@PickUp_Self ref1= ref1.tag.storage=-1> ON=@ClientToolTip src.addcliloc 1042971,Owner, Co-Owners & Friends Only src.addcliloc 501644 [TYPEDEF t_guild] ON=@Click ref1= message @,,1 .abbrev> guild chest ON=@DClick if ! ref1= if (=!) src.sysmessage @32,,1 Only .abbrev> guild members can open this . return 1 else return 0 endif endif ON=@Dropon_Self ref1= if ( < ) if ( < +)*)>) ref1.tag.storage=+1> else src.sysmessage @32,,1 You have reached your maximum storage capacity for this property. return 1 endif else src.sysmessage @32,,1 This is full return 1 endif ON=@PickUp_Self ref1= ref1.tag.storage=-1> ON=@ClientToolTip ref1= src.addcliloc 1042971,[.abbrev>] src.addcliloc 501644 [TYPEDEF t_locked] ON=@ClientToolTip src.addcliloc 501643 [EVENTS e_no_usage] ON=@DClick src.sysmessage @32,,1 You cannot use that where it is. return 1 [FUNCTION f_swap] ref1= ref2= if (==&09c000000))? m_tower:i_multi_tower> local.xy=16x14 else local.topx=> local.topy=>> local.bottomx= >>> local.bottomy= >>>> local.x -)+1> local.y -> local.xy x endif forchars >>>+>>>>)/2)+2)> if (==) if (strmatch(,)) || (strmatch(,)) src.sysmessage @32,,1 Warning! There are vendors in the building. src.sysmessage @32,,1 To continue, remove them and select convert again. return 1 endif endif endfor if (+++> < &09c000000)? m_:i_multi_>foundation_.value>) local.extra=&09c000000)? m_:i_multi_>foundation_>.value>-+++)>> if ( >= ) ref2.gold -= ref2.sysmessage @,,1 gp has been deducted from your bank for this conversion. f_bank_items local.p= if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref1.link.remove src.newitem &09c000000)? m_:i_multi_>foundation_ new.more1 new.p new.multicreate new.region.tag0.convert=1 serv.list._houses.add ref2.sysmessage @,,1 You MUST Double Click your house sign to ensure correct initialisation ref2.sysmessage @,,1 The number of houses you own is now _houses.count> else src.sysmessage @32,,1 You lack the funds to convert this house. return 1 endif else local.total=+++)-&09c000000)? m_:i_multi_>foundation_.value>)> ref2.gold += ref2.sysmessage @,,1 You have been refunded the difference of gp for this conversion. f_bank_items local.p= if _houses.count> if (_houses.count> < 2) serv.list._houses.clear else serv.list._houses._houses.findelem >.remove endif endif ref1.link.remove src.newitem &09c000000)? m_:i_multi_>foundation_ new.more1 new.p new.multicreate new.region.tag0.convert=1 serv.list._houses.add ref2.sysmessage @,,1 You MUST Double Click your house sign to ensure correct initialisation ref2.sysmessage @,,1 The number of houses you own is now _houses.count> endif [ITEMDEF i_vendor_recover_deed] ID=i_deed TYPE=t_script NAME=Vendor Recovery Ticket ON=@DCLICK LINK.P= [function regionchk] ref1= REF1= local.1=>>> local.2=>>>> If ( > ) local.radius = else local.radius = endif forchars ref2= if (==) || (==) local.vendcount += 1 endif endfor uid..tag0.vendors [function visitor_count] if ! uid..more2 +=1 endif [TYPEDEF t_deed] ON=@Targon_Ground ref2 = if (strmatch(*.more>*, &09c000000)? m_:i_multi_>)) args .multiregion> If ( > ) local.radius = else local.radius = endif if (strmatch(*&09c000000)? m_:i_multi_>*,.defname>)) newitem i_multi_checker new.p if ).isneartype t_multi,+6>,1> src.sysmessage @32,,1 You cannot build this close to another house, try moving away. new.remove return 1 endif new.remove endif endif [ITEMDEF i_multi_checker] Name = Multi Checker ID = i_memory TYPE = t_script [function rate] src.sysmessage @,,1 The maintenance rate for houses in this area is ? :>% of the house's value. [function all_house_timer_reset] local.p for 0 254 if (>) src.p=0,0,0, serv.log processing map src.f_house_timer_activate endif endfor src.p [function f_house_timer_activate] foritems 7168 if (==t_multi) ref1 ref1.timer=60*60*24* endif endfor [EOF]