;;su = $string_utils; for vrb in (verbs(#162)) player:tell(su:nn(#162), " ", vrb, " ", toliteral(verb_info(#162, vrb))); cdlist = verb_code(#162, vrb, 1, 1); for ln in (cdlist) player:tell(ln); endfor player:tell("-----------------------"); endfor Fire Inspector (#162) start {#181055, "rxd", "start"} ""; " start "; " Sends fire inspector to inspect stores."; ""; insp = this; player:tell("Fire Inspector Started."); "Bail out if updates are running."; if ($g.batch != 0) player:tell("Fire Inspector can't run now."); return; endif insp:initialize(); ""; " Select store for inspection."; $g:inform_admin("Fire inspector reviews the ", length(connected_players()), " currently connected players"); for playr in (connected_players()) if (valid(playr:store())) if (playr.store:open_p()) $g:inform_admin("Fire inspector considers inspecting ", $string_utils:nn(playr)); if (insp:insp_due(playr.store) == 1) insp:inspect(playr.store); else $g:inform_admin(" But a fire inspection is not due"); endif else $g:inform_admin("Fire inspector finds ", $string_utils:nn(playr), " is not open"); endif else $g:inform_admin("Fire inspector finds ", $string_utils:nn(playr), " does not have a valid store"); endif endfor ""; "All inspections complete."; suspend(insp.idle); move(insp, insp.home); player:tell("Fire Inspector quits for now and goes back to ", $string_utils:nn(insp.home)); ----------------------- Fire Inspector (#162) initialize {#181055, "rxd", "initialize"} ""; " Initialize"; ""; insp = this; ""; "Update inspection log to remove expired inspections"; for entry in (insp.logbook) if ($g.turn > (entry[2] + insp.insp_interval)) insp.logbook = setremove(insp.logbook, entry); endif endfor ""; "Initialize properties that change during play."; insp.inspect_stat = 0; insp.busy = 1; move(insp, insp.home); player:tell("Fire Inspector Initialized"); ----------------------- Fire Inspector (#162) inspect {#181055, "rxd", "inspect"} ""; " Inspect"; " Inspects a store"; ""; insp = this; shop = args[1]; ""; "Go to the store's street."; insp:setpos(200, 80, 3); move(insp, st = shop:street()); suspend(insp.idle); "Find the door and go in."; for exit in (st.exits) if (exit.dest == shop) exit:move(insp); endif endfor ""; player:tell("Fire Inspector Enters ", shop.name); suspend(2); insp:say("I'm conducting a fire inspection."); suspend(insp.idle); insp:setpos(100, 65, 1); insp:say("I'll just check your stock."); suspend(insp.idle); ""; "Check for too many crates - fire hazard."; boxes = insp:count_crates(shop); if (boxes > insp.crate_limit) $interface_messages:speak(insp, "You have ", boxes, " crates here. This is a fire hazard."); insp.inspect_stat = 1; else insp:say("Looks clean, no problems."); endif suspend(insp.idle); ""; "All done, leave."; insp:setpos(200, 65, 2); insp:say("I'm all finished, any questions?"); insp.busy = 0; insp:wait(); insp:setpos(396, 62, 2); insp:say("Have a nice day."); suspend(1); exit = insp.location:match_exit("Street"); if (valid(exit)) exit:move(insp); endif insp.busy = 1; insp.inspect_stat = 0; insp:setpos(200, 80, 3); suspend(insp.idle); move(insp, insp.home); ----------------------- Fire Inspector (#162) count_crates {#181055, "rxd", "count_crates"} ""; "count_crates"; " Returns number of crates in store."; ""; shop = args[1]; count = 0; for object in (shop.contents) if (object.object_prefix == "#CRATE") count = count + 1; endif " Don't let the loop go too long."; if (count > 200) return200; endif endfor return count; ----------------------- Fire Inspector (#162) respond {#181055, "rxd", "respond"} ""; " respond "; " Responds to player response choices."; ""; who = args[2]; text = args[3]; insp = this; ""; "Don't allow conversation during inspection."; if (insp.busy) $interface_messages:speak(insp, "Not now, please"); return; endif ""; " Reset wait time."; insp.wait_timer = insp.wait_time; ""; if (insp.responses[1] in text) insp:reply(1); endif if (insp.responses[2] in text) if (insp.inspect_stat) insp:reply(2); else insp:reply(3); endif endif if (insp.responses[3] in text) if (insp.inspect_stat) insp:reply(4); else insp:reply(5); endif endif ""; "Allow player to dismiss the inspector."; if (insp.responses[4] in text) insp.wait_timer = 0; endif ----------------------- Fire Inspector (#162) wait {#181055, "rxd", "wait"} ""; "wait"; "Pause to wait for each response."; ""; insp = this; ""; "Set timer and decrement at 5 second intervals."; insp.wait_timer = insp.wait_time; while (insp.wait_timer > 0) suspend(5); insp.wait_timer = insp.wait_timer - 5; endwhile ----------------------- Fire Inspector (#162) reply {#181055, "rxd", "reply"} ""; " reply "; " Reply to responses."; ""; insp = this; rep_num = args[1]; $interface_messages:speak(insp, insp.replies[rep_num]); ----------------------- Fire Inspector (#162) insp_due {#181055, "rxd", "insp_due"} ""; "insp_due"; "Checks logbook for recent inspection."; ""; shop = args[1]; insp = this; ""; "Return false if recent inspection found."; for entry in (insp.logbook) if (entry[1] == shop) return 0; endif endfor ""; "Store not current. Update log and return true."; insp.logbook = setadd(insp.logbook, {shop, $g.turn}); return 1; ----------------------- @show #162 Object ID: #162 Name: Fire Inspector Parent: Atmosphere Agent (#965) Location: Fire House (#969) Owner: peravali (#181055) Flags: Verb definitions: start initialize inspect count_crates respond wait reply insp_due Property definitions: inspect_list inspect_stat wait_time wait_timer busy replies crate_limit logbook insp_interval Properties: key: 0 aliases: {"Fire Inspector", "firebug"} description: "A manic and slightly paranoid fire inspector." birth: 854986069 object_prefix: "#PLAYER" pict: "Fire Inspector" actions: {{1000, "nothing"}, {10, "speak"}, {10, "feel"}, {10, "walk"}, {10, "grab"}, {10, "dropsy"}, {10, "handout"}} phrases: {{10, "Hello"}, "My owner has not taught me much."} idle: 5 awake: 1 last_location: 0 wanted: {} rooms_visited: {} responses: {"How are you doing?", "How did the inspection go?", "Is the store safe?", "Thank you, goodbye."} resp_curr_siblings: 1 resp_curr: {} resp_list: {} npc_respond_args: {} gone_wandering: {#166, #217, #223, #163, #165, #199, #190, #189, #400, #188, #221, #160, #164, #162, #159} max_agents_allowed_out: 16 master_switch: 1 agents_waiting: {} turn_start_time: 917217968 time_dispatched: 917218750 agent_stop_list: {#963} debug: 1 locked_stores: 0 inspect_list: {#172108} inspect_stat: 0 wait_time: 30 wait_timer: 0 busy: 1 replies: {"Fine, fine ... just fine.", "There are some problems.", "Good. Everything's fine.", "This place is a firetrap!", "Yes, it's OK."} crate_limit: 15 logbook: {{#1453, 3405}, {#183278, 3427}, {#3869, 3427}} insp_interval: 30 |