133 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*//////////////////////////////////////////////////////////////////////////////
 | |
|  Script: 0c_if_ass_convo
 | |
|  Programmer: Philos
 | |
| ////////////////////////////////////////////////////////////////////////////////
 | |
|  Text Appears When script that has the henchman tell the player what options
 | |
|  have been selected.
 | |
| 
 | |
|  sOption will decide what the henchman says.
 | |
| *///////////////////////////////////////////////////////////////////////////////
 | |
| #include "0i_associates"
 | |
| int StartingConditional()
 | |
| {
 | |
|     object oPC = GetPCSpeaker();
 | |
|     object oAssociate = OBJECT_SELF;
 | |
|     string sParam = GetScriptParam("sOption");
 | |
|     if(sParam == "BaseMode")
 | |
|     {
 | |
|         string sBaseMode = "I'm ready to attack.";
 | |
|         string sVolume = " While shouting when I see things.";
 | |
|         // Lets get which base mode the henchman is in.
 | |
|         if(ai_GetAIMode(oAssociate, AI_MODE_STAND_GROUND)) sBaseMode = "I'm holding here.";
 | |
|         else if(ai_GetAIMode(oAssociate, AI_MODE_DEFEND_MASTER)) sBaseMode = "I'm defending you.";
 | |
|         else if(ai_GetAIMode(oAssociate, AI_MODE_FOLLOW)) sBaseMode = "I'm following you.";
 | |
|         if(GetLocalString(oAssociate, AI_COMBAT_SCRIPT) == "ai_a_peaceful") sBaseMode = "I will not fight the enemy!";
 | |
|         if(ai_GetAIMode(oAssociate, AI_MODE_DO_NOT_SPEAK)) sVolume = " While not speaking unless spoken to.";
 | |
|         SetCustomToken(AI_BASE_CUSTOM_TOKEN, sBaseMode + sVolume);
 | |
|     }
 | |
|     else if(sParam == "CombatTactics")
 | |
|     {
 | |
|         string sRangedUse = "", sCombatTactic = "I'm using my best judgement in combat ";
 | |
|         string sAtkAssociates = "";
 | |
|         string sTargets = "against all enemies and ";
 | |
|         // Lets get which base mode the henchman is in.
 | |
|         if(ai_GetAIMode(oAssociate, AI_MODE_CHECK_ATTACK)) sTargets = "against enemies I can handle and ";
 | |
|         if(GetLocalString(oAssociate, AI_COMBAT_SCRIPT) == "ai_a_ambusher") sCombatTactic = "I'm using ambush tactics ";
 | |
|         else if(GetLocalString(oAssociate, AI_COMBAT_SCRIPT) == "ai_a_defensive") sCombatTactic = "I'm using defensive tactics ";
 | |
|         else if(GetLocalString(oAssociate, AI_COMBAT_SCRIPT) == "ai_a_taunter") sCombatTactic = "I'm ready to taunt ";
 | |
|         else if(GetLocalString(oAssociate, AI_COMBAT_SCRIPT) == "ai_a_cntrspell") sCombatTactic = "I'm ready to counter spell ";
 | |
|         if(GetLocalString(oAssociate, AI_COMBAT_SCRIPT) == "ai_a_peaceful")
 | |
|         {
 | |
|             sCombatTactic = "I will not fight the enemy!";
 | |
|             sTargets = "";
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             if(ai_GetAIMode(oAssociate, AI_MODE_STOP_RANGED)) sRangedUse = "will not use a ranged weapon.";
 | |
|             else sRangedUse = "will use a ranged weapon.";
 | |
|             if(ai_GetAIMode(oAssociate, AI_MODE_IGNORE_ASSOCIATES)) sAtkAssociates = " I will also ignore familiars, companions, and summons.";
 | |
|             else sAtkAssociates = " I will also attack familiars, companions, and summons.";
 | |
|         }
 | |
|         SetCustomToken(AI_BASE_CUSTOM_TOKEN + 1, sCombatTactic + sTargets + sRangedUse + sAtkAssociates);
 | |
|     }
 | |
|     else if(sParam == "Plans")
 | |
|     {
 | |
|         float fFollowRange = GetLocalFloat(oAssociate, AI_FOLLOW_RANGE);
 | |
|         string sFollowRange = FloatToString(fFollowRange, 0, 0);
 | |
|         string sDistance = "I'm following from " + sFollowRange + " meters away while";
 | |
|         string sStealth, sSearch, sPickup;
 | |
|         if(ai_GetAIMode(oAssociate, AI_MODE_PICKUP_ITEMS)) sPickup = " picking up items";
 | |
|         else sPickup = " not picking up any items";
 | |
|         if(ai_GetAIMode(oAssociate, AI_MODE_AGGRESSIVE_STEALTH)) sStealth = " in stealth";
 | |
|         else sStealth = "";
 | |
|         if(ai_GetAIMode(oAssociate, AI_MODE_AGGRESSIVE_SEARCH)) sSearch = " and searching";
 | |
|         else sSearch = "";
 | |
|         SetCustomToken(AI_BASE_CUSTOM_TOKEN + 2, sDistance + sPickup + sStealth + sSearch + ".");
 | |
|     }
 | |
|     else if(sParam == "Healing")
 | |
|     {
 | |
|         string sHealingIn = IntToString(GetLocalInt(oAssociate, AI_HEAL_IN_COMBAT_LIMIT)) + "%";
 | |
|         string sHealingOut = IntToString(GetLocalInt(oAssociate, AI_HEAL_OUT_OF_COMBAT_LIMIT)) + "%";
 | |
|         SetCustomToken(AI_BASE_CUSTOM_TOKEN + 5, "I'm healing our allies if they go below " +
 | |
|                  sHealingIn + " health in combat and " + sHealingOut + " out of combat.");
 | |
|     }
 | |
|     else if(sParam == "Spells")
 | |
|     {
 | |
|         string sCastingLevel = "[" + IntToString(GetLocalInt(oAssociate, AI_DIFFICULTY_ADJUSTMENT)) + "] ";
 | |
|         string sCasting = "I'm casting";
 | |
|         string sType = " spells I choose.";
 | |
|         string sBuff = " I'll also targeting anyone that needs it ";
 | |
|         string sDispel = "while using Dispel spells.";
 | |
|         string sMagicItems = " Lastly I'll use any magic items I have.";
 | |
|         if(ai_GetMagicMode(oAssociate, AI_MAGIC_BUFF_MASTER)) sBuff = " Ofcourse I'll target you first ";
 | |
|         if(ai_GetMagicMode(oAssociate, AI_MAGIC_STOP_DISPEL)) sDispel = "while not using Dispel spells.";
 | |
|         if(GetLocalString(oAssociate, AI_COMBAT_SCRIPT) == "ai_a_cntrspell")
 | |
|         {
 | |
|             sCasting = "I'm ready to counter spell our enemies.";
 | |
|             sType = "";
 | |
|             sBuff = "";
 | |
|             sDispel = "";
 | |
|         }
 | |
|         if(ai_GetMagicMode(oAssociate, AI_MAGIC_NO_MAGIC))
 | |
|         {
 | |
|             sCasting = "I'm not use any magic.";
 | |
|             sType = "";
 | |
|             sBuff = "";
 | |
|             sDispel = "";
 | |
|         }
 | |
|         else if(ai_GetMagicMode(oAssociate, AI_MAGIC_DEFENSIVE_CASTING)) sType = " defensive spells only.";
 | |
|         else if(ai_GetMagicMode(oAssociate, AI_MAGIC_OFFENSIVE_CASTING))
 | |
|         {
 | |
|             sType = " offensive spells only.";
 | |
|             sBuff = "";
 | |
|         }
 | |
|         else if(ai_GetMagicMode(oAssociate, AI_MAGIC_NO_MAGIC_ITEMS)) sMagicItems = " Finally I'll not use magic items.";
 | |
|         SetCustomToken(AI_BASE_CUSTOM_TOKEN + 5, sCastingLevel + sCasting + sType + sBuff + sDispel+ sMagicItems);
 | |
|     }
 | |
|     else if(sParam == "Objects")
 | |
|     {
 | |
|         int bTraps = ai_GetAIMode(oAssociate, AI_MODE_DISARM_TRAPS);
 | |
|         int bLocks = ai_GetAIMode(oAssociate, AI_MODE_PICK_LOCKS);
 | |
|         int bBash = ai_GetAIMode(oAssociate, AI_MODE_BASH_LOCKS);
 | |
|         string sText = "I'm going to ignore all traps and locks.";
 | |
|         if(bTraps && bLocks && bBash)
 | |
|         {
 | |
|             sText = "I'm disarming all the traps and am either picking or bashing any of the locks we find.";
 | |
|         }
 | |
|         else if(bTraps && bLocks) sText = "I'm going to disarm all the traps and I'll pick all the locks we encounter.";
 | |
|         else if(bTraps && bBash) sText = "I shall disarm all the traps and will bash any locks we come across.";
 | |
|         else if(bTraps) sText = "I will disarm all the traps I can but will leave any locks for you to deal with.";
 | |
|         else if(bLocks && bBash) sText = "I will leave the traps for you but will either pick or bash any locks we see.";
 | |
|         else if(bLocks) sText = "I'll keep my distance from any traps we see, but will pick the locks found.";
 | |
|         else if(bBash) sText = "I'll let you mess with the traps, but I'll bash any locks that are out there.";
 | |
|         SetCustomToken(AI_BASE_CUSTOM_TOKEN + 3, sText);
 | |
|     }
 | |
|     else if(sParam == "RestBuffing")
 | |
|     {
 | |
|         string sRestBuffing = "";
 | |
|         if(!ai_GetMagicMode(oAssociate, AI_MAGIC_BUFF_AFTER_REST)) sRestBuffing = "not ";
 | |
|         SetCustomToken(AI_BASE_CUSTOM_TOKEN + 10, "After we rest I am " + sRestBuffing + "casting my long buff spells on us.");
 | |
|     }
 | |
|     return TRUE;
 | |
| }
 |