@create $thing named room_db:room_db,rdb
@prop #248."flag_exclude" {} r
;;#248.("flag_exclude") = {{"cavern", "structure"}, {"structure", "outdoors"}, {}, {}, {}, {}, {"outdoors"}, {"damned"}, {"blessed"}, {"dark", "lighted", "sun-lit"}, {"dim", "lighted", "sun-lit"}, {"dim", "dark", "sun-lit"}, {"dim", "dark", "lighted"}, {"submerged", "seashore"}, {}, {}, {}, {}, {}}
@prop #248."flag_depend" {} r
;;#248.("flag_depend") = {{}, {}, {}, {}, {}, {}, {"wet"}, {}, {}, {}, {}, {}, {}, {"wet"}, {"wet"}, {}, {}, {}, {}}
@prop #248."flag_names" {} r
;;#248.("flag_names") = {"outdoors", "cavern", "seashore", "forest", "structure", "wet", "submerged", "blessed", "damned", "dim", "dark", "lighted", "sun-lit", "sea", "swamp", "tavern", "lighting", "stable", "peaceful"}
@prop #248."zone_names" {} r
;;#248.("zone_names") = {"castle", "eternal mist", "jungle", "ocean", "tower"}
@prop #248."zone_climates" {} r
;;#248.("zone_climates") = {{"cold", "cold", "cloudy", "cloudy", "sunny", "windy", "rainy", "rainy", "rainy", "stormy", "misty", "misty", "misty", "warm"}, {"cloudy", "rainy", "stormy", "stormy", "stormy", "misty", "misty", "misty"}, {"J_clear", "J_cloudy", "J_stormy"}, {"S_calm", "S_calm", "S_windy", "S_foggy", "S_stormy"}, {"cold", "cloudy", "sunny", "windy", "rainy", "stormy", "misty", "warm"}}
@prop #248."zone_weather" {} r
;;#248.("zone_weather") = {"drizzle", "clouds", "J_overcast", "S_windy1", "overcast"}
@prop #248."zone_forecast" {} r
;;#248.("zone_forecast") = {"rainy", "cloudy", "J_cloudy", "S_windy", "cloudy"}
@prop #248."season" "summer" r
@prop #248."time_count" 783 r
@prop #248."global_tendancy" "calm" r
@prop #248."default_climate" {} r
;;#248.("default_climate") = {"cold", "cloudy", "sunny", "windy", "rainy", "stormy", "misty", "warm"}
@prop #248."maintainers" {} r
;;#248.("maintainers") = {#105941}
@prop #248."weather_types" {} r
;;#248.("weather_types") = {"chilly", "flakes", "snow", "blizzard", "sun", "clouds", "overcast", "breeze", "wind", "gusts", "drizzle", "rain", "downpour", "sleet", "hail", "thunder", "storm", "tempest", "mist", "fog", "hot", "muggy", "S_placid", "S_breeze", "S_windy1", "S_mist", "S_fog", "S_windy2", "S_rain", "D_calm", "D_wind", "D_sandstorm", "J_sun", "J_breeze", "J_clouds", "J_overcast", "J_squall", "J_downpour"}
@prop #248."all_rooms" {} r
;;#248.("all_rooms") = {#258, #3092, #1131, #5747, #6619, #9512, #11174, #740, #760, #757, #763, #95, #99, #7370, #7373, #591, #358, #751, #7367, #532, #354, #11960, #11959, #1622, #13697, #17506, #18647, #10336, #4371, #19232, #33439, #41735, #9355, #261, #295, #91, #105, #111, #192, #224, #10161, #29129, #59976, #85821, #9876, #69, #7200, #97146, #97149, #97389, #89923, #44048, #6628, #71048, #3733, #1181, #82749, #2990, #12758, #146, #10555, #2075, #83, #7750, #9079, #16070, #2707, #29500, #36893, #107305, #8111, #83072, #14060, #175, #64666, #21317, #7773, #66017, #101054, #62398, #84279, #42997, #129, #72483, #60414, #70710, #6243, #78422, #60939, #2765, #77404, #17149, #36618, #117058, #1501, #118833, #61212, #62121, #1997, #85405, #66068, #16239, #40311, #75719, #38233, #98903, #94711, #84319, #99048, #52272, #15449, #100620, #77878, #95886, #643, #3040, #3051, #646, #710, #713, #3043, #8068, #8071, #10430, #10433, #10436, #48687, #10337, #10340, #10343, #11243, #11246, #11787, #12137, #12493, #8736, #68818, #59680, #66520, #102785, #8777, #5350, #95454, #98670, #116058, #82539, #93905, #103366, #77712, #49444, #161, #377, #754, #63230, #70477, #9955, #14599, #9585, #106346, #92585, #9260, #25633, #75469, #74909, #101247, #3771, #75530, #97643, #882, #2147, #77, #3768, #6757, #3779, #3765, #2930, #21656, #2963, #2948, #2945, #2150, #49563, #51503, #43, #201, #227, #233, #339, #342, #529, #108, #12565, #10358, #75904, #107196, #111985, #73169, #71130, #70056, #75410, #21089, #15796, #19750, #105170, #56294, #37218, #73128, #66580, #115602, #38282, #8807, #80523, #39614, #89964, #118387, #99770, #40173, #97710, #22415, #32497, #54916, #10577, #11249, #6609, #1277, #1288, #4557, #4553, #71830, #9505, #82000, #46025, #84346, #35000, #22430, #87296, #14148, #102438, #9962, #1408, #9103, #71066, #7838, #8997, #62589, #4893, #49586, #34498, #6022, #16020, #10026, #109726, #108093, #3723, #98896, #2742, #2743, #74146, #113442, #12338, #49572, #115965, #100637, #6720, #2241, #85872, #31789, #12388, #51313, #81212, #61010, #118815, #27053, #2502, #82138, #3609, #2509, #41836, #105174, #116737, #12738, #65089, #64451, #106915, #4727, #114987, #77533, #102748, #110305, #52017, #5042, #77139, #112090, #79675, #121375, #77711, #54929, #97068, #77754, #9257, #9339, #9343, #9346, #77996, #104873, #63979, #33554, #39450, #51512, #101364, #103472, #43693, #66008, #51075, #14591, #92414, #5616, #109520, #103148, #101327, #111402, #85494, #113673, #17659, #87689, #80946, #1499, #8420, #100800, #85118, #72794, #72269, #100822, #100630, #58290, #53182, #12886, #53820, #63134, #68398, #58641, #57921, #86065, #91864, #100211, #106353, #93439, #86992, #49057, #58424, #36667, #50875, #22929, #22566, #9055, #27861, #6060, #47966, #55776, #51891, #59956, #47775, #22482, #36185, #54444, #58985, #71569, #46387, #45849, #61908, #55693, #17745, #3251, #81991, #28263, #12300, #60692, #76461, #16379, #91985, #89800, #34463, #71799, #96189, #45765, #32575, #10647, #102138, #42754, #72063, #101365, #24643, #51126, #87884, #85583, #100555, #13186, #63910, #62973, #5786, #21963, #78665, #106493, #1126, #94378, #106480, #80492, #104516, #11345, #5244, #35034, #9960, #9961, #29977, #108229, #52041, #1230, #57791, #3811, #5742, #3989, #61020, #33644, #6981, #8414, #68555, #86624, #100228, #9444, #7004, #8358, #16898, #23406, #33947, #33950, #33954, #5378, #46282, #1378, #1302, #1274, #28482, #28489, #28504, #28532, #1270, #1260, #49267, #13337, #17396, #53622, #66744, #83452, #82764, #83471, #57081, #47177, #71451, #44381, #76952, #91678, #94052, #5491, #7547, #1711, #9471, #87861, #195, #13649, #2646, #2413, #9459, #7195, #8399, #7399, #62820, #2986, #1756, #2337, #2448, #3972, #17164, #35674, #77765, #77704, #3814, #77705, #41113, #116688, #111234, #39993, #72777, #118811, #118844, #115522, #9958, #1282, #2080, #1494, #1463, #1418, #1455, #1588, #1386, #1389, #23403, #107890, #116677, #120372, #9331, #76289, #121010, #82024, #68956, #61849, #84046, #98051, #94970, #89573, #56392, #82702, #60710, #76672, #57186, #2381, #67874, #68480, #12660, #86476, #198, #6600, #6986, #63286, #61664, #75565, #79013, #9022, #112278, #77440, #90819, #12507, #13263, #12273, #61818, #71935, #116129, #102202, #16089, #4820, #10419, #22040, #22047, #22685, #24102, #24164, #29711, #17239, #17146, #51772, #33105, #11358, #52665, #52671, #30358, #52678, #21999, #51910, #43810, #34802, #56934, #54493, #31156, #33720, #46216, #51945, #4673, #36628, #55369, #36890, #36888, #36892, #63903, #64066, #109709, #64814, #51275, #71232, #2733, #60039, #69592, #82975, #47477, #8203, #53552, #42866, #85812, #79701, #65545, #82608, #2799, #54237, #66091, #12757, #78069, #67424, #75341, #74810, #5212, #84325, #9110, #1048, #964, #1142, #82264, #25673, #4989, #31645, #89584, #21035, #88001, #75237, #33857, #17408, #76692, #12021, #1063, #1067, #1077, #4464, #7737, #9959, #5713, #1322, #8352, #1066, #1613, #1079, #10600, #1081, #1344, #2744, #2751, #2752, #8030, #16633, #68363, #2292, #5415, #30802, #18030, #53064, #38175, #36393, #63281, #64753, #98412, #36373, #46304, #43013, #60246, #60843, #60245, #1703, #1704, #1705, #1706, #1712, #1850, #1851, #1852, #1853, #1132, #1134, #13673, #13670, #13676, #13679, #13661, #13667, #13664, #13658, #13651, #13655, #12446, #65970, #88067, #49356, #73254, #100423, #11582, #12969, #64281, #61543, #932, #76464, #2317, #12228, #110324, #74963, #60093, #12176, #98678, #87527, #112123, #68263, #88715, #63928, #112373, #17983, #31258, #23198, #102533, #14597, #28726, #3545, #92410, #5648, #59056, #50905, #110734, #3840, #70511, #72188, #75966, #12134, #14975, #9422, #7029, #24655, #2443, #33870, #5391, #6067, #96221, #51604, #68371, #119614, #70461, #80124, #51491, #3567, #3656, #77798, #77797, #77795, #77764, #77758, #77745, #7319, #85363, #56739, #109687, #77482, #42408, #42869, #54780, #95002, #110193, #116707, #11731, #75801, #62231, #62123, #117799, #118813, #71313, #118810, #118820, #118830, #80120, #81762, #42626, #74636, #56365, #74911, #82079, #29473, #75810, #10387, #72574, #59085, #8028, #89692, #83184, #14337, #68197, #87353, #1146, #1087, #11675, #38226, #81035, #4683, #53781, #80896, #46670, #74946, #80515, #57226}
@prop #248."last_room_list_update" 1141745324 r
@prop #248."current_task" 0 r
@prop #248."last_weather_update" 1141745324 r
@prop #248."heart" #-1 r
@prop #248."dummy1" 0 r
@prop #248."dummy2" 0 r
@prop #248."dummy3" 0 r
@prop #248."weather_classes" {} r
;;#248.("weather_classes") = {"cold", "cloudy", "sunny", "windy", "rainy", "stormy", "misty", "warm", "S_calm", "S_windy", "S_foggy", "S_stormy", "D_clear", "D_windy", "J_clear", "J_cloudy", "J_stormy"}
@prop #248."default_type_desc" {} r
;;#248.("default_type_desc") = {{"The sun is hidden behind the clouds and the air is quite cold.", 1, 1, "The stars are hidden by clouds, and the air is bitterly cold."}, {"White flakes of snow drift down out of a sky filled with grey.", 1, 1, "Tiny white flakes of snow drift down from the darkened, starless sky."}, {"Snowflakes swirl down from the cloud filled sky.", 1, 1, "Snowflakes swirl down out of the darkness."}, {"The wind howls blasting snowflakes in your face, and reducing your vision to almost nothing.", 1, 1, 1}, {"The sun pokes its orange-yellow head above the horizon, lighting the blue and almost cloudless sky.", "The sun shines down from a cloudless sky.", "The western horizon is orange from the last rays of the setting sun.", "Stars shine down from the clear night sky."}, {"The rising sun peeks through the clouds on the western horizon.", "Clouds occasionally drift across the sky, casting shadows over the landscape.", "A glorious sunset fills the western horizon with a dazzling display of orange and yellow.", "Stars peek out here and there from the cloudy sky."}, {"The grey sky grows lighter as the unseen sun rises.", "The sky is filled with grey clouds, hiding the sun from sight.", "The grey sky grows darker as the sun sets.", "The stars are hidden from view by the clouds that fill the sky."}, {"A light breeze blows across the landscape.", 1, 1, 1}, {"A strong wind blows across the landscape.", 1, 1, 1}, {"Fierce gusts of wind blast dust in your face.", 1, 1, 1}, {"A light drizzle is falling from the cloudy sky.", 1, 1, "A light drizzle falls from the midnight sky."}, {"A steady rain falls from the sullen, overcast sky.", 1, 1, "A steady rain falls from the darkened sky."}, {"A tremendous downpour falls from the sky, soaking everthing around.", 1, 1, 1}, {"A bitterly cold, icy sleet is falling from the clouds above.", 1, 1, "Icy sleet falls from the darkness above."}, {"Hailstones pelt you from the sky.", 1, 1, 1}, {"The occasional rumble of thunder comes from the dark clouds above.", 1, 1, "The blackness of the night sky is occasionally pierced by a flicker of lightning or rumble of thunder."}, {"Rain pours from the heavens as flashes of lightning strike all about.", 1, 1, "The midnight sky is illuminated by flashes of lightning, as rain pours from the heavens."}, {"An incredible downpour falls, soaking everything, as lightning flashes all around followed by earshattering thunder.", 1, 1, "Heavy rain falls upon you, and the night sky is lit up by lightning every few seconds."}, {"A light mist covers the ground.", 1, 1, "The night is filled with an eerie mist that hugs the ground."}, {"A dense fog fills the air, muffling sound, and making vision difficult.", 1, 1, "The night is filled with a dense fog, restricting vision to only a few paces."}, {"The early morning air is already quite warm, even though the sun is just above the horizon.", "It is quite warm, and the land basks in the heat of the midday sun.", "The sun is setting, but the air is still quite warm.", "The nightime air is comfortably warm."}, {"The early morning air is already uncomfortably warm. and humid.", "The air is hot and muggy.", "The humid air is still uncomfortably warm", "The warm night air is quite humid."}, {"The sun pokes above the western horizon, casting its golden light upon the placid waters of the sea.", "The day is warm and clear, and the surface of the sea is calm and placid.", "The orange orb of the sun is setting beneath the calm waters of the sea.", "Stars can be seen reflected in the calm, placid waters of the sea."}, {"A light breeze blows across the gently lapping waters and the sky is bright and clear.", 1, 1, "A nightime breeze blows across the waters of the sea."}, {"A strong wind blows across the roiling sea.  An occasional cloud drifts across the sun.", 1, 1, "The sound of the wind is punctuated by the sound of the turbulent sea, rolling beneath the stars."}, {"The surface of the sea is barely visible through the light mist that covers it.", 1, 1, 1}, {"The dense fog that covers the sea muffles sound and sight.", 1, 1, 1}, {"The cloudy skies shift and swirl, as whitecaps dance among the waves.", 1, 1, 1}, {"The wind howls, rain pours from the grey clouds above, and the sea lurches about sickeningly.", 1, 1, "The wind howls about, rain pours from the starless skies above, and the sound of the waves thrashing about can be heard."}, {"The desert sun peeks above the dunes, casting shadows on the sand.", "The sun beats down upon the desert like a hammer on an anvil.", "The desert sunset is a glorious display of reds and oranges.", "The desert air is cold and clear.  A million stars twinkle in the heavens above."}, {"The desert sands shift and swirl in the gusty winds.", 1, 1, 1}, {"The wind howls about, blasting sand into eyes, nose, and mouth.  It is almost impossible to see more than 3 feet in front of you.", 1, 1, 1}, {"The sun has only just begun to rise into the sky, but already the humid air is uncomfortably warm.", "The blazing sun hammers down on you and the air is wet and miserable.", "It is still muggy and unpleasant, even though the sun is setting in the west.", "The night air is warm and humid."}, {"A light breeze does little to cool the uncomfortably hot and humid air.", 1, 1, "A light breeze blows out of the night, bringing a pleasant coolness."}, {"The sun peeks through the clouds on the western horizon.", "The clouds swirling in the sky, while occasionally blocking the sun, do nothing to help the heat and humidity.", "The sun sets above the jungle, creating a beautiful orange sunset.", "Stars peek through the clouds in the sky above."}, {"The sky is filled with grey clouds and it is warm and humid.", 1, 1, "Not a star can be seen in the sky above."}, {"A light intermittant rain falls from the cloud-filled sky.", 1, 1, 1}, {"A fierce downpour soaks everything in the jungle.", 1, 1, "A heavy rain falls from the dark, starless skies."}}
@prop #248."weather_transitions" {} r
;;#248.("weather_transitions") = {{"chilly", "flakes"}, {"chilly", "snow"}, {"flakes", "flakes", "snow", "blizzard"}, {"blizzard", "snow"}, {"clouds", "sun", "sun", "hot"}, {"sun", "clouds", "overcast", "thunder"}, {"overcast", "overcast", "clouds", "drizzle", "mist"}, {"clouds", "sun", "breeze", "wind"}, {"breeze", "gusts"}, {"wind"}, {"overcast", "drizzle", "rain"}, {"drizzle", "drizzle", "rain", "rain", "downpour", "hail", "sleet"}, {"rain"}, {"rain"}, {"rain"}, {"clouds", "thunder", "storm"}, {"thunder", "thunder", "storm", "tempest"}, {"storm"}, {"overcast", "fog"}, {"fog", "mist"}, {"hot", "sun", "hot", "muggy"}, {"hot", "muggy"}, {"S_placid"}, {"S_breeze", "S_windy1"}, {"S_breeze", "S_windy1"}, {"S_fog", "S_mist"}, {"S_fog", "S_mist"}, {"S_windy2", "S_rain"}, {"S_windy2", "S_rain"}, {"D_calm"}, {"D_wind", "D_sandstorm"}, {"D_wind", "D_sandstorm"}, {"J_sun", "J_breeze"}, {"J_sun", "J_breeze"}, {"J_clouds", "J_overcast"}, {"J_clouds", "J_overcast"}, {"J_squall", "J_downpour"}, {"J_squall"}}
@prop #248."class_weather" {} r
;;#248.("class_weather") = {{"chilly", "flakes", "snow", "blizzard"}, {"clouds", "overcast"}, {"sun", "clouds", "breeze"}, {"breeze", "wind", "gusts"}, {"overcast", "drizzle", "rain", "downpour", "sleet", "hail"}, {"clouds", "thunder", "storm", "tempest"}, {"clouds", "overcast", "mist", "fog"}, {"sun", "hot", "muggy"}, {"S_placid"}, {"S_breeze", "S_windy1"}, {"S_mist", "S_fog"}, {"S_windy2", "S_rain"}, {"D_calm"}, {"D_windy", "D_sandstorm"}, {"J_sun", "J_breeze"}, {"J_clouds", "J_overcast"}, {"J_squall", "J_downpour"}}
@prop #248."class_transitions" {} r
;;#248.("class_transitions") = {{"cloudy"}, {"sunny", "windy", "stormy", "misty", "rainy", "cold"}, {"warm", "windy", "cloudy"}, {"cloudy", "sunny", "stormy"}, {"cloudy"}, {"cloudy"}, {"sunny", "cloudy"}, {"sunny", "cloudy"}, {"S_calm", "S_windy", "S_foggy"}, {"S_calm", "S_windy", "S_stormy"}, {"S_calm"}, {"S_windy", "S_stormy"}, {"D_clear", "D_windy"}, {"D_clear"}, {"J_clear", "J_cloudy"}, {"J_clear", "J_cloudy", "J_stormy"}, {"J_cloudy"}}
@prop #248."class_transitionable" {} r
;;#248.("class_transitionable") = {{"chilly"}, {"clouds", "overcast"}, {"sun", "clouds", "breeze"}, {"breeze", "wind"}, {"overcast", "drizzle"}, {"clouds", "thunder"}, {"clouds", "overcast"}, {"sun", "hot", "muggy"}, {"S_placid"}, {"S_breeze", "S_windy1"}, {"S_mist"}, {"S_windy2"}, {"D_calm"}, {"D_wind"}, {"J_sun", "J_breeze"}, {"J_clouds", "J_overcast"}, {"J_squall", "J_downpour"}}
@prop #248."weather_transition_msgs" {} r
;;#248.("weather_transition_msgs") = {{"The temperature has dropped considerably, it is now quite cool.", "", "Tiny snowflakes have begun to drift down from the cold, white skies."}, {"", "The snowflakes have stopped falling, but it is still quite cold.", "It has begun to snow more heavily."}, {"", "The fall of snow has lessened slightly.", "Only a few flakes now drift down from the skies.", "", "The wind picks up, howling around you and blowing snow all over."}, {"", "", "The winds slow and the fall of snow lessens slightly."}, {"The sky is virtually cloud free, right now.", "The sky is filled with clouds, but patches of sky can be seen between them.", "", "", "The temperature is now quite warm."}, {"Clouds drift through the sky, partially obscuring it.", "Most of the clouds in the sky have drifted away or dissipated.", "", "The clouds thicken and nary a trace of sky can be seen in the heavens above.", "The warm air has caused the clouds to grow into tall thunderheads, which produce an occasional rumble."}, {"Not a trace of sky is visible in the clouds above.", "", "", "The thick cloud cover thins, and patches of sky can be seen in the heavens above.", "A light drizzle has begun to fall.", "As the humid air cools slightly, a mist begins to rise from the ground."}, {"A light breeze has begun to blow.", "Although the breeze near the ground has died down, clouds still drift through the skies overhead.", "The breeze dies down, but the warm sun continues to shine down from the clear blue sky.", "", "The speed of the wind has picked up.  It is now quite strong."}, {"It has become quite windy.", "The speed of the wind has died down, but a noticeable breeze is still present.", "The wind has picked up, and fierce gusts of wind blow dust in your eyes and mouth."}, {"", "The wind has died down slightly, but is still quite strong."}, {"A light rain has begun to fall.", "Gradually, the raindrops cease their gentle pitter-patter, but the sky remains hidden above the grey clouds.", "", "The rain has begun to fall more heavily."}, {"", "The rain has decreased to a light drizzle.", "The rain has let up slightly.", "", "", "The tempo of the raindrops increases considerably.  Water is now pouring from the sky.", "The rain lets up briefly for a minute, then hail begins to fall", "The rain grows gradually colder and becomes a freezing sleet which delivers a bitter chill."}, {"", "The downpour lets up, but it is still raining heavily."}, {"", "The sleet lets up and is replaced by a warmer rain."}, {"", "The hail ceases and gives way to a normal rain."}, {"The clouds above have begun to rumble ominously.", "The time between rumbles of thunder lengthens as the storm clouds dissipate.", "", "Lightning flickers through the sky and it begins to rain."}, {"", "The rain ceases, but there is still an occasional rumble of thunder.", "The rain stops, but lightning still flickers in the sky.", "", "The rains increases to a downpour as lightning flashes and thunder crashes about you."}, {"", "The rain lets up slightly, but lightning still flashes amongst the clouds."}, {"A white mist rises from the ground.", "The mist dissipates, leaving overcast skies.", "The mist thickens and rises, engulfing the world in a white fog."}, {"", "", "The fog has partially dissipated, but it is still somewhat misty."}, {"The temperature grows quite warm.", "", "It has cooled off slightly, but remains clear", "", "The hot air grows moist, becoming damp and miserable"}, {"It has become hot and muggy.", "The air drys out a bit, but it is still hot.", ""}, {"The wind ceases and the sea grows calm and placid.", ""}, {"A steady breeze blows across the waters.", "", "The breeze grows into a strong wind and the waves grow higher."}, {"A strong wind lashes the waters of the sea, producing waves of considerable size.", "The wind gradually decreases and the seas grow calmer.", ""}, {"Mist is rising from the placid surface of the sea.", "The mist thickens into a dense fog which muffles sound and blocks vision.", ""}, {"", "", "The fog thins, but there is still mist on the surface of the water."}, {"Dark clouds roil in the heavens above, as the strong winds whip the sea up into a frenzy of waves and whitecaps.", "", "The wind grows stronger, and a heavy, cold rain begins to fall upon the restless sea."}, {"", "The rain ceases to fall and the sea grows slightly calmer.", ""}, {"All wind has died down and the dry desert air is now quite motionless.", ""}, {"A strong wind has begun to blow, causing the sand to shift and swirl.", "", "The howling wind starts picking up sand from the desert floor and blasting it into your eyes and mouth."}, {"", "The wind has calmed, allowing its burden of sand to fall to the ground, but it still swirls about uneasily.", ""}, {"The jungle air is warm and humid, but the sky is mostly clear of clouds.", "", "A warm breeze begins to blow."}, {"A warm breeze is blowing.", "The breeze has died down, leaving the hot, humid air quite still.", ""}, {"Clouds swirl in the sky above, bringing little relief from the oppressive heat and humidity.", "", "The clouds thicken into a grey sheet that fills the sky, but it is still miserably hot and wet."}, {"The sky is filled with grey clouds, but it is warm and wet.", "The clouds thin, allowing patches of sky to show through.", ""}, {"A light, intermittent rain falls from the grey skies, giving a little bit of relief from the heat.", "", "The rain begins to fall more heavily, and soon a fierce downpour drenches everything."}, {"", "The rain decreases in intensity abruptly."}}
@prop #248."drowning" {} r
;;#248.("drowning") = {{#5003, 852846242}, {#4688, 852846242}, {#6113, 852846242}, {#31020, 859058650}, {#1742, 859262571}, {#1251, 859852067}}
@prop #248."weather_pen" 0 r
@prop #248."room_parent" #1610 r
@prop #248."seaworthy_weapon_parents" {} rc
;;#248.("seaworthy_weapon_parents") = {#2231, #1394, #1454, #58137, #42517, #37646}
@prop #248."spell_index" {} rc
;;#248.("spell_index") = {"summon", "conjure", "biting_cloud", "iceshell", "waterwhip", "windwall", "stinkcloud", "calm_winds", "storm", "predict", "heal", "pacify", "slow", "recall", "harden", "shatter", "hail", "firebolt", "heat", "barkskin", "enchant", "depress", "mindprobe", "stealskill", "lifelink", "forcewall", "claim", "dispell", "wound", "drain", "mindshock"}
@prop #248."weather_magic_effect" {} r
;;#248.("weather_magic_effect") = {{0, 0, -8, 10, 0, 2, -2, 2, -10, -1, -1, 1, 2, 1, 1, 0, 0, -8, -8, -2, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, -1, -16, 20, 0, 4, -4, 1, -20, -2, -1, 0, 2, 0, 0, 0, 0, -16, -16, -4, -2, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, -3, -24, 30, -2, 6, -6, -1, -30, -3, -3, -1, -3, 0, 0, 1, 1, 1, -24, -24, -6, -3, 3, -1, 0, 0, 0, 0, 0, 0, 0}, {0, -4, -32, 40, -4, 10, -10, -6, -40, -4, -5, 0, 2, 0, 1, 1, 1, -24, -24, -9, -3, 4, -1, -1, -1, -2, 0, 0, 0, 0, 0}, {0, 0, 4, -4, -1, -1, 1, 2, -5, 2, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -6, 0, 0, 6, -8, -3, 1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -12, 0, 0, 12, -16, -5, 3, -1, -1, -5, -4, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -18, 0, 0, 20, -24, -8, 6, -2, -1, -6, -4, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -6, 2, 8, 0, -6, -2, 5, 0, 0, 0, 0, 0, 0, 0, 0, -6, -4, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -12, 4, 16, 3, -12, -4, 10, -1, -1, -1, 0, 0, 0, 0, 0, -12, -8, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -18, 6, 24, 5, -18, -6, 15, 0, -2, -2, 0, 0, 0, 0, 0, -18, -12, 6, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -14, 10, 18, 4, -14, -5, 4, 0, -3, -1, 0, -1, 0, 0, 0, -24, -20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -20, 14, 14, 4, -8, -5, 4, 0, -3, -1, 0, -1, 0, 0, 0, -20, -20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 4, -4, -3, 6, 0, -4, -5, -3, 0, 0, 0, 0, -5, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -8, 3, 3, 10, -8, -6, 12, 0, -4, -6, -5, 0, 0, 0, 0, 0, -10, -10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -12, 5, 6, 16, -10, -9, 20, 0, -4, -6, -5, 0, 0, 0, 0, 0, -15, -15, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 4, -5, 5, 5, -5, 0, 0, 5, 5, 0, 0, 0, 0, -4, -4, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 5, 0, 4, -5, 8, 5, -10, 0, 0, 5, 5, 0, 0, 0, 0, -6, -6, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, -15, -5, -5, 0, 5, -10, 0, 5, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, -15, -4, -5, 5, 5, -15, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 8, -10, -2, -3, 2, 4, -10, 2, 3, 0, 0, 0, 0, 0, 0, 4, 8, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -10, 4, 6, 6, -8, -3, 1, 0, 0, -2, -1, 0, 0, 0, 0, -12, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, -12, 4, 6, 12, -16, -5, 3, -1, -1, -5, -4, 0, 0, 0, 0, -12, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 5, 10, -5, 5, 5, -5, 0, 0, 5, 5, 0, 0, 0, 0, -15, -4, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 5, 5, 10, -5, 8, 5, -10, 0, 0, 5, 5, 0, 0, 0, 0, -20, -6, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}
@prop #248."area_magic_effect" {} r
@prop #248."weather_effect_words" {} r
@prop #248."area_effect_words" {} r
@prop #248."weather_task" 2002816584 r
"#248.("key") => E_PERM (Permission denied)
;;#248.("aliases") = {"room_db", "rdb"}
;;#248.("description") = "A database to allow easy global weather and magic effects related to terrain..."
;;#248.("object_size") = {54481, 1141286558}

@verb #248:"wait_for_tasks" this none this
@program #248:wait_for_tasks
":wait_for_tasks() => wait until the database is done making previous modifications.  In some cases, a check of all rooms may be forced to suspend in the middle and it would be bad for other changes to be made in this unstable state.  This ensures that only 1 update is happening at a time.";
if (!this:trusted(caller_perms()))
  return E_PERM;
endif
"Warning, tasks had better be suspending in _my_ queue, unless somebody comes up with a :valid_task verb which would be preferable";
while ($code_utils:task_valid(this.current_task))
  suspend(0);
endwhile
this.current_task = task_id();
.

@verb #248:"end_wait" this none this
@program #248:end_wait
"rdb:end_wait() => Stop waiting on the specified task.";
if (task_id() == this.current_task)
  this.current_task = 0;
endif
.

@verb #248:"trusted" this none this
@program #248:trusted
":trusted(<perms>) => return 1 if the caller is trusted to freely make modifications to the database.  G_M is _way_ busy, so Im going to include the possibility of non-grandmasters modifying the database.";
workhorse = args[1];
return (workhorse in this.maintainers) || (workhorse in $local.rpg.grand_masters);
.

@verb #248:"add_weather_zone" this none this
@program #248:add_weather_zone
":add_weather_zone(<zone name>, [climate]) => adds a new weather zone of <zone name>.";
if (!this:trusted(caller_perms()))
  return E_PERM;
endif
this:wait_for_tasks();
zone_names = this.zone_names;
zone_name = args[1];
if (typeof(zone_name) != STR)
  this:end_wait();
  return E_TYPE;
endif
if (zone_name in zone_names)
  this:end_wait();
  return E_NONE;
endif
lu = $list_utils;
if ((length(args) > 1) && (typeof(args[2]) == LIST))
  climate = {};
  weather_classes = this.weather_classes;
  for n in (args[2])
    if (n in weather_classes)
      climate = {@climate, n};
    endif
  endfor
else
  climate = this.default_climate;
endif
this.zone_names = {@this.zone_names, zone_name};
this.zone_climates = {@this.zone_climates, climate};
this.zone_forecast = {@this.zone_forecast, forecast = lu:random_element(climate)};
this.zone_weather = {@this.zone_weather, lu:random_element(this.class_weather[forecast in this.weather_classes])};
this:end_wait();
.

@verb #248:"remove_weather_zone" this none this
@program #248:remove_weather_zone
":remove_weather_zone(<zone name>) => removes a weather zone from the database. Will reset all rooms that are set to this zone to zone 0 (no weather).";
this:secure();
this:wait_for_tasks();
zone_names = this.zone_names;
zone_name = args[1];
if (typeof(zone_name) != STR)
  this:end_wait();
  raise(E_TYPE, "Non-string specified for zone name");
endif
if (!(zone = zone_name in zone_names))
  this:end_wait();
  raise(E_NONE, ("Zone '" + zone_name) + "' does not exist.");
endif
this.zone_names = listdelete(this.zone_names, zone);
this.zone_climates = listdelete(this.zone_climates, zone);
this.zone_weather = listdelete(this.zone_weather, zone);
this.zone_forecast = listdelete(this.zone_forecast, zone);
room_type = this.room_parent;
rooms = $object_utils:descendants_suspended(room_type);
for room in (rooms)
  try
    if (room.weather_zone == zone)
      room.weather_zone = 0;
    endif
    if (room.weather_zone > zone)
      room.weather_zone = room.weather_zone - 1;
    endif
  except x (ANY)
    player:tell("Error raised while trying to process " + $string_utils:nn(room));
  endtry
  $command_utils:suspend_if_needed(0);
endfor
this.all_rooms = rooms;
this.last_room_list_update = time();
this:end_wait();
.

@verb #248:"all_rooms find_all" this none this rx
@program #248:all_rooms
":all_rooms(<room type>) => If <room type> is a valid flag that rooms may posess, returns a list of all rooms, if any, that have that flag.  If not a valid flag, return an error.";
this:wait_for_tasks();
{?flag = ""} = args;
if ((time() - this.last_room_list_update) > (3600 * 24))
  this.all_rooms = $object_utils:descendants_suspended(this.room_parent);
endif
rooms = this.all_rooms;
targets = {};
if (!flag)
  targets = rooms;
elseif (flag in this.flag_names)
  for room in (rooms)
    if (`flag in room.room_data ! ANY')
      targets = setadd(targets, room);
    endif
  endfor
elseif (flag_num = flag in this.zone_names)
  for room in (rooms)
    if (`room.weather_zone == flag_num ! ANY')
      targets = setadd(targets, room);
    endif
  endfor
else
  targets = E_INVARG;
endif
this:end_wait();
return targets;
.

@verb #248:"update_weather" this none this
@program #248:update_weather
":update_weather() => Updates weather for all weather zones, changing as appropriate.";
if (!this:trusted(caller_perms()))
  return E_PERM;
endif
lu = $list_utils;
season = this.season;
rpg = $local.rpg;
this.all_rooms = $object_utils:descendants_suspended(this.room_parent);
rooms = this.all_rooms;
this.last_room_list_update = time();
for zone_num in [1..length(this.zone_names)]
  $command_utils:suspend_if_needed(10);
  climate = this.zone_climates[zone_num];
  class = this.zone_forecast[zone_num];
  class_num = class in this.weather_classes;
  type = this.zone_weather[zone_num];
  old_type = type;
  if ((type in this.class_transitionable[class_num]) && (random(4) == 1))
    possible_classes = {};
    transitions = this.class_transitions[class_num];
    if (season == "summer")
      for w in ({"warm", "stormy"})
        if (w in climate)
          climate = listappend(climate, w);
        endif
      endfor
      for w in ({"cold", "misty"})
        if (w in climate)
          climate = setremove(climate, w);
        endif
      endfor
    elseif (season == "winter")
      for w in ({"cold", "cold"})
        if (w in climate)
          climate = listappend(climate, w);
        endif
      endfor
      for w in ({"warm", "misty", "stormy"})
        if (w in climate)
          climate = setremove(climate, w);
        endif
      endfor
    endif
    t = this:time_of_day();
    if (t == "dawn")
      for w in ({"stormy", "warm"})
        if (w in climate)
          climate = setremove(climate, w);
        endif
      endfor
    elseif (t == "day")
      for w in ({"misty"})
        if (w in climate)
          climate = setremove(climate, w);
        endif
      endfor
    elseif (t == "dusk")
      if ("misty" in climate)
        climate = setremove(climate, "misty");
      endif
    elseif (t == "night")
      if ("warm" in climate)
        climate = setremove(climate, "warm");
      endif
    endif
    for w in (climate)
      if (w in transitions)
        possible_classes = {@possible_classes, w};
      endif
    endfor
    if (possible_classes)
      class = lu:random_element(possible_classes);
      class_num = class in this.weather_classes;
      type = lu:random_element(this.class_transitionable[class_num]);
    endif
    weather_change_msg = this.weather_transition_msgs[type in this.weather_types][1];
  else
    possible = {};
    type_num = type in this.weather_types;
    class_weather = this.class_weather[class_num];
    for p in (this.weather_transitions[type_num])
      if (p in class_weather)
        possible = {@possible, p};
      endif
    endfor
    type = lu:random_element(possible);
    weather_change_msg = this.weather_transition_msgs[old_type in this.weather_types][(type in this.weather_transitions[old_type in this.weather_types]) + 1];
  endif
  this.zone_forecast[zone_num] = class;
  this.zone_weather[zone_num] = type;
  $command_utils:suspend_if_needed(10);
  if (weather_change_msg)
    for room in (rooms)
      if (room.weather_zone == zone_num)
        rpg:rpg_announce_all(room, weather_change_msg);
      endif
      $command_utils:suspend_if_needed(10);
    endfor
  endif
endfor
this.time_count = (this.time_count + 1) % 1111;
if (this.time_count == 159)
  seasons = {"spring", "summer", "fall", "winter"};
  this.season = seasons[((this.season in seasons) % 4) + 1];
endif
this:end_wait();
.

@verb #248:"add_flag" this none this
@program #248:add_flag
":add_flag(<flag name>, {<depend>}, {<exclude>}) => Add a flag to the room_dbs list of acceptable room flags.  ";
if (!this:trusted(caller_perms()))
  return E_PERM;
endif
{name, ?depend = {}, ?exclude = {}} = args;
if (((typeof(name) != STR) || (typeof(depend) != LIST)) || (typeof(exclude) != LIST))
  return E_INVARG;
endif
if (name in this.flag_names)
  return E_NONE;
endif
this:wait_for_tasks();
for n in (depend)
  if ((!n) in this.flag_names)
    depend = setremove(depend, n);
  endif
endfor
for n in (exclude)
  if ((!n) in this.flag_names)
    exclude = setremove(exclude, n);
  endif
endfor
this.flag_names = {@this.flag_names, name};
this.flag_depend = {@this.flag_depend, depend};
this.flag_exclude = {@this.flag_exclude, exclude};
this:end_wait();
"Mooshie (#106469) - Sun Mar  3, 2002 - Changed to handle arguments a bit more smoothly.";
.

@verb #248:"remove_flag" this none this
@program #248:remove_flag
":remove_flag(<flag name>) => Remove <flag name> from the database, and from all rooms that have it.";
if (!this:trusted(caller_perms()))
  return E_PERM;
endif
this:wait_for_tasks();
flag_name = args[1];
flag = flag_name in this.flag_names;
if (!flag)
  return E_NONE;
endif
for n in [1..length(this.flag_names)]
  this.flag_depend[n] = setremove(this.flag_depend[n], flag_name);
  this.flag_exclude[n] = setremove(this.flag_exclude[n], flag_name);
endfor
this.flag_names = listdelete(this.flag_names, flag);
this.flag_depend = listdelete(this.flag_depend, flag);
this.flag_exclude = listdelete(this.flag_exclude, flag);
room_type = this.room_parent;
rooms = $object_utils:descendants_suspended(room_type);
for room in (rooms)
  room.room_data = setremove(room.room_data, flag_name);
  $command_utils:suspend_if_needed(0);
endfor
this.all_rooms = rooms;
this.last_room_list_update = time();
this:end_wait();
.

@verb #248:"cycle" this none this
@program #248:cycle
":cycle() => update the weather.";
if ($code_utils:task_valid(this.weather_task) && (this.weather_task != task_id()))
  return E_QUOTA;
endif
"fork x (2000)";
"  this:cycle();";
"endfork";
rpg = $local.rpg;
if ((rpg.clock:not_checkpoint() && (rpg.gm_lag < rpg.idle_threshold)) && ((time() - this.last_weather_update) > 1800))
  fork x (5)
    this.last_weather_update = time();
    this:update_weather();
  endfork
  this.weather_task = x;
endif
"Profane (#30788) - Sat Apr 14, 2001 - New cycle paradigm- check this verb whenever a room uses :get_weather.";
.

@verb #248:"default_weather_desc" this none this rx
@program #248:default_weather_desc
":default_weather_desc(<weather type>) => If weather is an appropriate type, return a description of what that weather might look at, at this particular time of day.";
weather = args[1] in this.weather_types;
time = this:time_of_day() in {"dawn", "day", "dusk", "night"};
if (weather && time)
  if (typeof(msg = this.default_type_desc[weather][time]) == NUM)
    msg = this.default_type_desc[weather][msg];
  endif
  return msg;
endif
return "";
.

@verb #248:"add_drowning" this none this
@program #248:add_drowning
":add_drowning(<victim>) => Add the victim to the queue of potentialy drowning persons.  Should probably be called by room's enterfunc.  Is called by #1610:enterfunc, so no need to worry., all RPG rooms use this, except for the mazes.";
rpg = $local.rpg;
if (!rpg:trusted(caller_perms()))
  return E_PERM;
endif
victim = args[1];
doll = rpg:get_doll(victim);
victims = $list_utils:slice(this.drowning);
if (valid(doll) && (!(victim in victims)))
  this.drowning = setadd(this.drowning, {victim, time()});
endif
.

@verb #248:"do_drown" this none this
@program #248:do_drown
":do_drown() => Check everybody who's been logged as being in an underwater room.  If they're still there, check if they've exhausted their air supply, and dock them some fatigue, if they're drowning.";
(rpg = $local.rpg):secure();
for victim_data in (this.drowning)
  rpg:s_i_f_i_n();
  victim = victim_data[1];
  time = victim_data[2];
  location = victim.location;
  doll = rpg:get_doll(victim);
  if (rpg:trusted_verb(location, "get_room_flags") && valid(doll))
    flags = location:get_room_flags();
    if ("submerged" in flags)
      if ((!this:is_water_breathing(victim)) && ((!is_player(victim)) || (victim in connected_players())))
        diff = time() - time;
        res = rpg:resolve(victim, "stamina", (-diff) / 4);
        if (res < 0)
          doll.fat = min(900, doll.fat - (res / 2));
          victim:tell("The air in your lungs is exhausted!  You're drowning!");
        else
          victim:tell("You're beginning to exhaust the air in your lungs, but you can still remain under for a bit longer.");
        endif
      endif
    else
      this.drowning = setremove(this.drowning, victim_data);
      victim:tell("You've finally recovered from your underwater experience and are now breathing easily.");
    endif
  else
    this.drowning = setremove(this.drowning, victim_data);
  endif
endfor
.

@verb #248:"remove_drowning" this none this
@verb #248:"time_of_day" this none this
@program #248:time_of_day
":time_of_day([NUM time]) => returns a string reflecting the time.";
{?time = time()} = args;
sun = $time_utils:sun(time);
if (sun < -1500)
  return "night";
elseif (sun > 1500)
  return "day";
elseif (tonum(ctime(time)[12..13]) < 12)
  return "dawn";
else
  return "dusk";
endif
.

@verb #248:"is_water_breathing" this none this
@program #248:is_water_breathing
":is_water_breathing(<victim>) => Does victim have a ring of water breathing, or are the a critter or GM with a .water_breather prop set?";
{victim} = args;
rpg = $local.rpg;
if (is_player(victim))
  if (rpg:trusted_property(victim, "water_breather") && victim.water_breather)
    return 1;
  endif
elseif ("water_breather" in victim.flags)
  return 1;
endif
doll = rpg:get_doll(victim);
if (doll)
  for item in (doll.wearing)
    if ((item == #63112) || (parent(item) == #63112))
      return 1;
    endif
  endfor
endif
return 0;
"THX1138 (#105941) - Thu Jun 18, 1998 - Re-wrote for \"water_breather\" in monster.flags instead of checking trusted monster.water_breather which was a huge waste of clear properties on the 660 descendants of rpg.monster.";
.

@verb #248:"room_magic_effect" this none this
@program #248:room_magic_effect
":room_magic_effect(<room>, <caster doll>, <qual>, <skill>, <target>) => Magic effect for room, based on Global weather/room flags.  On the db, because there are several trees of rooms that need this effect.";
rpg = $local.rpg;
if (!rpg:trusted(caller_perms()))
  return E_PERM;
endif
rdb = this;
{room, caster_doll, qual, skill, target_doll} = args;
caster = caster_doll.character;
spell = (typeof(skill) == OBJ) ? skill.aliases[1] | skill;
flags = room:get_room_flags();
if (room.weather_zone)
  weather = rdb.zone_weather[room.weather_zone] in rdb.weather_types;
else
  weather = "none";
endif
strings = {};
spell_num = spell in rdb.spell_index;
value = 0;
if (spell_num && weather)
  value = value + rdb.weather_magic_effect[weather][spell_num];
  ww = rdb.weather_effect_words[weather];
  words = (typeof(ww) == STR) ? ww | tostr(rdb.weather_effect_words[ww]);
  if (value > 1)
    strings = setadd(strings, ("Your spell draws energy from the " + word) + ".");
  elseif (value < -1)
    strings = setadd(strings, ("The " + word) + " interferes with your spell.");
  endif
endif
if (spell_num)
  for flag in (flags)
    flag_num = flag in rdb.flag_names;
    v = rdb.area_magic_effect[flag_num][spell_num];
    value = value + v;
    if (v > 0)
      strings = setadd(strings, rdb.area_effect_words[flag_num][1]);
    elseif (v < 0)
      strings = setadd(strings, rdb.area_effect_words[flag_num][2]);
    endif
  endfor
endif
value = value - this.magic_effect;
if (strings)
  caster:tell($list_utils:random_element(strings));
endif
if ((-value) > qual)
  caster:tell("Nothing happens.");
endif
return -value;
.

@verb #248:"protected" this none this
@program #248:protected
":protected() => raise an error if caller not trusted to maintain room db or modify the room.";
c = callers();
who = `c[2][3] ! ANY => player';
what = `c[2][1] ! ANY => player';
if ((((what == caller) || (who == caller.owner)) || (who in this.maintainers)) || (who in $local.rpg.grand_masters))
  return;
endif
raise(E_PERM, "RPG room database security violation.");
.

"***finished***