|
fujiwara
|
 |
« Reply #42 on: December 17, 2007, 10:26:28 PM » |
|
Here is the quest that raises the assertion:
[anyone,"admin_give_quest",[(eq,"$kokujin_quest","qst_kokujin_deliver_msg"), (assign,':loop_end',false), (try_for_range,':unused',0,100), (neq,':loop_end',true), (call_script,'script_get_random_city'), (try_begin), (eq,reg0,'$g_encountered_party'), (call_script,'script_get_random_city'), (else_try), (assign,':loop_end',true), (try_end), (try_end), (assign,':msg_dest_party',reg0), (party_get_slot,':msg_recipient',':msg_dest_party',slot_town_kokujin), (quest_set_slot,"$kokujin_quest",slot_quest_target_troop,':msg_recipient'), (quest_set_slot,"$kokujin_quest",slot_quest_source_party,'$g_encountered_party'), (quest_set_slot,"$kokujin_quest",slot_quest_target_party,':msg_dest_party'), (quest_set_slot,"$kokujin_quest",slot_quest_giver,'$conversation_partner'), (str_store_party_name,1,':msg_dest_party'), ], "I need you to deliver a message to the kokujin of {s1} as soon as possible.","admin_accept_quest",[]], [anyone|plyr,"admin_accept_quest",[],"I am in your service.","admin_pre_talk", [ (try_begin), (eq,"$kokujin_quest","qst_kokujin_deliver_msg"), (quest_get_slot,reg2,"$kokujin_quest",slot_quest_target_party), (str_store_party_name,1,'$g_encountered_party'), (str_store_party_name,2,reg2), (setup_quest_text,"$kokujin_quest"), (else_try), (eq,'$kokujin_quest','qst_test'), (display_message,'@Quest test active'), (try_end), (troop_set_slot,'$conversation_partner',slot_troop_quest,"$kokujin_quest"), (assign,':qst_state',qst_flags_mask), (val_add,':qst_state',qst_active), (quest_set_slot,"$kokujin_quest",slot_quest_state,':qst_state'), (quest_set_slot,'$kokujin_quest',slot_quest_giver,'$conversation_partner'), (troop_set_slot,'$conversation_partner',slot_troop_quest_active,1), (call_script,'script_start_quest',"$kokujin_quest"), ] ], [anyone|plyr,"admin_talk_1",[(check_quest_active,'qst_kokujin_deliver_msg'), (quest_slot_eq,'qst_kokujin_deliver_msg',slot_quest_target_troop,'$conversation_partner')], "I was asked to give a message to you.","admin_msg_reward",[]], [anyone,"admin_msg_reward",[(quest_get_slot,reg5,'qst_kokujin_deliver_msg',slot_quest_source_party), (quest_get_slot,reg6,'qst_kokujin_deliver_msg',slot_quest_target_party), (store_distance_to_party_from_party,':quest_reward',reg5,reg6), (val_mul,':quest_reward',10), (troop_add_gold,"trp_player",':quest_reward'), (add_xp_as_reward,150), (call_script,"script_modify_fame",1), (call_script,'script_succeed_quest','qst_kokujin_deliver_msg'), (call_script,'script_end_quest','qst_kokujin_deliver_msg')], "Ah, arigatou! And here is something for you.","admin_pre_talk",[]],
And the associated scripts:
# script_start_quest ('start_quest', [ (store_script_param,':quest_no',1), (start_quest,':quest_no'), ] ), #script_conclude_quest # INPUT: arg1 = quest_no # OUTPUT: none ("conclude_quest", [(store_script_param, ":quest_no", 1), (conclude_quest, ":quest_no"), #(quest_get_slot, ":quest_giver_troop", ":quest_no", slot_quest_giver), #(str_store_troop_name, s59, ":quest_giver_troop"), #(add_quest_note_from_sreg, ":quest_no", 5, "@This quest has been concluded. Talk to {s59} to finish it.", 0), ]),
#script_succeed_quest # INPUT: arg1 = quest_no # OUTPUT: none ("succeed_quest", [(store_script_param, ":quest_no", 1), (succeed_quest, ":quest_no"), #(quest_get_slot, ":quest_giver_troop", ":quest_no", slot_quest_giver), #(str_store_troop_name, s59, ":quest_giver_troop"), #(add_quest_note_from_sreg, ":quest_no", 5, "@This quest has been successfully completed. Talk to {s59} to claim your reward.", 0), ]),
#script_fail_quest # INPUT: arg1 = quest_no # OUTPUT: none ("fail_quest", [(store_script_param, ":quest_no", 1), (fail_quest, ":quest_no"), #(quest_get_slot, ":quest_giver_troop", ":quest_no", slot_quest_giver), #(str_store_troop_name, s59, ":quest_giver_troop"), #(add_quest_note_from_sreg, ":quest_no", 5, "@This quest has failed. Talk to {s59} to explain the situation.", 0), ]),
#script_end_quest # INPUT: arg1 = quest_no # OUTPUT: none ("end_quest", [(store_script_param, ":quest_no", 1), (str_clear, s1), #(add_quest_note_from_sreg, ":quest_no", 1, s1, 0), #(add_quest_note_from_sreg, ":quest_no", 2, s1, 0), #(add_quest_note_from_sreg, ":quest_no", 3, s1, 0), #(add_quest_note_from_sreg, ":quest_no", 4, s1, 0), #(add_quest_note_from_sreg, ":quest_no", 5, s1, 0), (complete_quest, ":quest_no"), (call_script,"script_reset_quest_registers",':quest_no'), ]),
And this is the test quest that works fine:
[anyone|plyr,'km1',[],'Test quest functions','km_qst',[]], [anyone,'km_qst',[(neg|check_quest_active,'qst_test'),(call_script,'script_start_quest','qst_test')],'Very well. Speak to me again for more options','close_window',[]], [anyone,'km_qst',[(check_quest_active,'qst_test')],'Which function will you test?','km_qst_test_fxn',[]], [anyone|plyr,'km_qst_test_fxn',[],'Succeed','km_qst_succeed',[(call_script,'script_succeed_quest','qst_test')]], [anyone|plyr,'km_qst_test_fxn',[],'Fail','km_qst_fail',[(call_script,'script_fail_quest','qst_test')]], [anyone|plyr,'km_qst_test_fxn',[],'Conclude','km_qst_conclude',[(call_script,'script_conclude_quest','qst_test')]], [anyone|plyr,'km_qst_test_fxn',[],'Complete','km_qst_complete',[(call_script,'script_end_quest','qst_test')]], [anyone|plyr,'km_qst_test_fxn',[],'Cancel','km_qst_cancel',[(cancel_quest,'qst_test')]], [anyone,'km_qst_succeed',[],'The quest has succeeded.','km_qst_test_next',[]], [anyone,'km_qst_fail',[],'The quest has succeeded.','km_qst_test_next',[]], [anyone,'km_qst_conclude',[],'The quest has succeeded.','km_qst_test_next',[]], [anyone,'km_qst_complete',[],'The quest has been completed.','close_window',[]], [anyone,'km_qst_cancel',[],'The quest has been canceled.','close_window',[]], [anyone|plyr,'km_qst_test_next',[],'Now complete the quest','km_qst_test_final',[(call_script,'script_end_quest','qst_test')]], [anyone,'km_qst_test_final',[],'The quest is complete.','close_window',[]],
|