include library.utils; include library.ai_lib; include library.hue; include library.colors; include library.chat; const string CONVO = "celebrity/kole"; const string FACETO_VOLUME_NAME = "faceToTriggerVolume"; trigger OnAttach () { setName (self, "Kole"); ai_lib.setDefaultCalmBehavior( self, ai_lib.BEHAVIOR_SENTINEL ); setInvulnerable (self, false ); debugSpeakMsg (self, "I work for Nym...I might be a doctor..."); attachScript (self, "npc.converse.npc_converse_menu"); createTriggerVolume( FACETO_VOLUME_NAME, 8.0f, true ); //setCondition (self, CONDITION_INTERESTING); messageTo (self, "doISetup", null, 2, false ); return SCRIPT_CONTINUE; } trigger OnStartNpcConversation (obj_id speaker) { string questInfo = "tell_me_quest"; faceTo (self, speaker ); if (hasObjVar(speaker, "nym.nym.finished")) { string_id greeting = new string_id (CONVO, "good_work"); chat.chat (self, greeting); return SCRIPT_CONTINUE; } if (hasObjVar (speaker, "nym.kole.done")) { string_id greeting = new string_id (CONVO, "good_work"); string_id response[] = new string_id [2]; response[0] = new string_id (CONVO, "what_now"); response[1] = new string_id (CONVO, "see_ya"); setObjVar (speaker, "nym.kole.finished", 1); npcStartConversation (speaker, self, "celebConvo", greeting, response); } if (hasObjVar (speaker, "nym")) { if (hasObjVar (speaker, "nym.openedGas")) { obj_id gas = utils.getItemPlayerHasByTemplate(speaker, "object/tangible/loot/quest/nym_filtered_gas.iff"); if (gas != null) { destroyObject (gas); } setObjVar (speaker, "nym.kole.done", 1); string_id message = new string_id (CONVO, "gave_gas"); chat.chat (self, message); return SCRIPT_CONTINUE; } } if (hasObjVar (speaker, "nym.kole.gotgas")) { string_id greeting = new string_id (CONVO, "bring_gas"); string_id response[] = new string_id [2]; response[0] = new string_id (CONVO, "yes"); response[1] = new string_id (CONVO, "no"); npcStartConversation (speaker, self, "celebConvo", greeting, response); } if (hasObjVar (speaker, "nym.kole.officerPoint") || hasObjVar (speaker, "nym.kole.gasPoint")) { questInfo = "tell_me_again"; } if (ai_lib.isInCombat(self) || ai_lib.isInCombat(speaker)) return SCRIPT_OVERRIDE; if (hasObjVar (speaker, "nym.kole.everyone")) { string_id greeting = new string_id (CONVO,"hello_again"); string_id response[] = new string_id [1]; response[0] = new string_id (CONVO, questInfo); npcStartConversation (speaker, self, "celebConvo", greeting, response); } else if (hasObjVar (speaker, "nym.kole.jinkins") && hasObjVar (speaker, "nym.kole.nym") && hasObjVar (speaker, "nym.kole.kole")) { setObjVar (speaker, "nym.kole.everyone", 1); removeObjVar (speaker, "nym.kole.kole"); removeObjVar (speaker, "nym.kole.nym"); removeObjVar (speaker, "nym.kole.jinkins"); string_id greeting = new string_id (CONVO,"hello_again"); string_id response[] = new string_id [1]; response[0] = new string_id (CONVO, questInfo); npcStartConversation (speaker, self, "celebConvo", greeting, response); } else if (hasObjVar (speaker, "nym.kole.jinkins")) { string_id greeting = new string_id (CONVO,"hello_again"); string_id response[] = new string_id [2]; response[0] = new string_id (CONVO, questInfo); response[1] = new string_id (CONVO,"who_is_nym"); npcStartConversation (speaker, self, "celebConvo", greeting, response); } else if (hasObjVar (speaker, "nym.kole.nym")) { string_id greeting = new string_id (CONVO,"hello_again"); string_id response[] = new string_id [2]; response[0] = new string_id (CONVO, questInfo); response[1] = new string_id (CONVO,"who_is_jinkins"); npcStartConversation (speaker, self, "celebConvo", greeting, response); } else if (hasObjVar (speaker, "nym.kole.kole")) { string_id greeting = new string_id (CONVO,"hello_again"); string_id response[] = new string_id [3]; response[0] = new string_id (CONVO, questInfo); response[1] = new string_id (CONVO,"who_is_nym"); response[2] = new string_id (CONVO,"who_is_jinkins"); npcStartConversation (speaker, self, "celebConvo", greeting, response); } else if (hasObjVar (speaker, "nym.kole.talked")) { string_id greeting = new string_id (CONVO,"hello_again"); string_id response[] = new string_id [2]; response[0] = new string_id (CONVO, questInfo); response[1] = new string_id (CONVO,"who_are_you"); npcStartConversation (speaker, self, "celebConvo", greeting, response); } else { string_id greeting = new string_id (CONVO,"first_time_hello"); string_id response[] = new string_id [2]; response[0] = new string_id (CONVO, questInfo); response[1] = new string_id (CONVO,"who_are_you"); npcStartConversation (speaker, self, "celebConvo", greeting, response); } return SCRIPT_CONTINUE; } trigger OnNpcConversationResponse (string convo, obj_id player, string_id response) { setObjVar (player, "nym.kole.talked", 1); string questInfo = "tell_me_quest"; if (hasObjVar (player, "nym.kole.officerPoint") || hasObjVar (player, "nym.kole.gasPoint")) { questInfo = "tell_me_again"; } if ( response.getAsciiId().equals("tell_me_quest")) // { string_id message = new string_id (CONVO, "quest_info"); if (!hasObjVar (player, "nym.jinkins.done")) { message = new string_id (CONVO, "quest_tease"); npcRemoveConversationResponse ( player, new string_id (CONVO, questInfo)); npcSpeak(player, message); npcEndConversation (player); return SCRIPT_CONTINUE; } npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, questInfo)); if (!hasObjVar (player, "nym.kole.gasPoint")) { npcAddConversationResponse (player, new string_id (CONVO, "mining_facility")); } if (!hasObjVar (player, "nym.kole.officerPoint")) { npcAddConversationResponse (player, new string_id (CONVO, "probe_droid")); } if (hasObjVar (player, "nym.kole.officerPoint") && hasObjVar (player, "nym.kole.gasPoint")) { npcAddConversationResponse (player, new string_id (CONVO, "anything_else")); } return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("tell_me_again")) // { string_id message = new string_id (CONVO, "quest_info_again"); npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, questInfo)); if (!hasObjVar (player, "nym.kole.gasPoint")) { npcAddConversationResponse (player, new string_id (CONVO, "mining_facility")); } if (!hasObjVar (player, "nym.kole.officerPoint")) { npcAddConversationResponse (player, new string_id (CONVO, "probe_droid")); } if (hasObjVar (player, "nym.kole.officerPoint") && hasObjVar (player, "nym.kole.gasPoint")) { npcAddConversationResponse (player, new string_id (CONVO, "anything_else")); } return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("who_are_you") ) // { string_id message = new string_id (CONVO, "im_kole");// npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "who_are_you")); npcAddConversationResponse (player, new string_id (CONVO, "who_is_nym")); npcAddConversationResponse (player, new string_id (CONVO, "who_is_jinkins")); setObjVar (player, "nym.kole.kole", 1); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("mining_facility")) // { string_id message = new string_id (CONVO, "miners"); npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "mining_facility")); npcAddConversationResponse (player, new string_id (CONVO, "dangerous_gas")); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("who_is_nym") ) // { string_id message = new string_id (CONVO, "nym_is_chief");// npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "who_is_nym")); setObjVar(player, "nym.kole.nym", 1); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("who_is_jinkins")) // { string_id message = new string_id (CONVO, "jinkins_is_friend"); npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "who_is_jinkins")); setObjVar(player, "nym.kole.jinkins", 1); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("dangerous_gas")) // { string_id message = new string_id (CONVO, "gas_info"); npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "dangerous_gas")); npcAddConversationResponse (player, new string_id (CONVO, "ill_get_gas")); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("probe_droid")) // { string_id message = new string_id (CONVO, "droid_info"); npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "probe_droid")); npcAddConversationResponse (player, new string_id (CONVO, "imperial_involvement")); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("imperial_involvement")) // { string_id message = new string_id (CONVO, "imperial_stuff"); npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "imperial_involvement")); npcAddConversationResponse (player, new string_id (CONVO, "resigned_officer")); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("resigned_officer")) // { string_id message = new string_id (CONVO, "officer_info"); npcSpeak(player, message); npcRemoveConversationResponse ( player, new string_id (CONVO, "resigned_officer")); npcAddConversationResponse (player, new string_id (CONVO, "ill_see_imperial")); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("anything_else")) // { string_id message = new string_id (CONVO, "not_really"); npcSpeak(player, message); npcEndConversation(player); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("ill_get_gas")) // { string_id message = new string_id (CONVO, "here_is_gas"); setObjVar (player, "nym.jinkins.guy", 1); if (!hasScript (player, "theme_park.nym.player")) { attachScript (player, "theme_park.nym.player"); } messageTo (player, "goGetGas", null, 2, true); npcSpeak(player, message); npcEndConversation (player); setObjVar (player, "nym.kole.gasPoint", 1); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("ill_see_imperial")) // { string_id message = new string_id (CONVO, "here_is_imperial"); setObjVar (player, "nym.jinkins.guy", 1); if (!hasScript (player, "theme_park.nym.player")) { attachScript (player, "theme_park.nym.player"); } messageTo (player, "goSeeImperial", null, 2, true); npcSpeak(player, message); npcEndConversation (player); setObjVar (player, "nym.kole.officerPoint", 1); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("yes")) // { string_id message = new string_id (CONVO, "hand_it_over"); npcSpeak(player, message); npcEndConversation (player); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("no") ) // { string_id message = new string_id (CONVO, "get_back_to_work");// npcSpeak(player, message); npcEndConversation (player); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("see_ya")) // { string_id message = new string_id (CONVO, "good_bye"); npcSpeak(player, message); npcEndConversation (player); return SCRIPT_CONTINUE; } if ( response.getAsciiId().equals("what_now") ) // { string_id message = new string_id (CONVO, "youre_done"); if (!hasObjVar (player, "nym.nym.finished")) { message = new string_id (CONVO, "talk_to_nym"); } npcSpeak(player, message); npcEndConversation(player); return SCRIPT_CONTINUE; } return SCRIPT_CONTINUE; } trigger OnGiveItem (obj_id item, obj_id player) { string gaveMe = getTemplateName (item); if (gaveMe == "object/tangible/loot/quest/nym_filtered_gas.iff") { setObjVar (player, "nym.kole.done", 1); string_id message = new string_id (CONVO, "gave_gas"); chat.chat (self, message); return SCRIPT_OVERRIDE; } else { string_id message = new string_id (CONVO, "whats_this"); chat.chat (self, message); return SCRIPT_CONTINUE; } } //const string FACETO_VOLUME_NAME = "faceToTriggerVolume"; //createTriggerVolume( FACETO_VOLUME_NAME, 8.0f, true ); trigger OnTriggerVolumeEntered( string volumeName, obj_id breacher ) { if ( !isPlayer( breacher ) ) { //debugSpeakMsg( self, "you are not a player" ); return SCRIPT_CONTINUE; } if ( volumeName != FACETO_VOLUME_NAME ) return SCRIPT_CONTINUE; if ( isInNpcConversation(self) ) return SCRIPT_CONTINUE; if ( canSee( self, breacher ) ) faceTo( self, breacher ); return SCRIPT_CONTINUE; } messageHandler doISetup () { setCondition (self, CONDITION_INTERESTING); messageTo (self, "unkillable", null, 2, false ); return SCRIPT_CONTINUE; } messageHandler unkillable() { setInvulnerable (self, true ); return SCRIPT_CONTINUE; }