Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,233 +0,0 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Name Summon Monster - On Conversation
|
||||
//:: FileName SMP_AI_Summ_Conv
|
||||
//:://////////////////////////////////////////////
|
||||
On Conversation.
|
||||
|
||||
It will react to shouts sent to it, including Bioware's associate shouts
|
||||
for hold ground and so on.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
#include "PHS_AI_INCLUDE"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Get who spoke
|
||||
object oSelf = OBJECT_SELF;
|
||||
object oSpeaker = GetLastSpeaker();
|
||||
object oMaster = GetMaster();
|
||||
object oTarget;
|
||||
int nConversation = GetListenPatternNumber();
|
||||
|
||||
// Cannot not be the master
|
||||
if(oSpeaker != oMaster) return;
|
||||
|
||||
// Check nConversation's number.
|
||||
switch(nConversation)
|
||||
{
|
||||
// If -1, it is a converastion thing
|
||||
case -1:
|
||||
{
|
||||
if(GetCommandable() == TRUE)
|
||||
{
|
||||
// Start the conversation
|
||||
BeginConversation();
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Other things (not -1)
|
||||
|
||||
// * toggle search mode for henchmen
|
||||
case ASSOCIATE_COMMAND_TOGGLESEARCH:
|
||||
{
|
||||
if(GetActionMode(OBJECT_SELF, ACTION_MODE_DETECT) == TRUE)
|
||||
{
|
||||
SetActionMode(OBJECT_SELF, ACTION_MODE_DETECT, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActionMode(OBJECT_SELF, ACTION_MODE_DETECT, TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
// * toggle stealth mode for henchmen
|
||||
case ASSOCIATE_COMMAND_TOGGLESTEALTH:
|
||||
{
|
||||
if(GetActionMode(OBJECT_SELF, ACTION_MODE_STEALTH) == TRUE)
|
||||
{
|
||||
SetActionMode(OBJECT_SELF, ACTION_MODE_STEALTH, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActionMode(OBJECT_SELF, ACTION_MODE_STEALTH, TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
// * Stop spellcasting
|
||||
case ASSOCIATE_COMMAND_TOGGLECASTING:
|
||||
{
|
||||
// Use spawn conditions
|
||||
if(SMPAI_GetSummonSetting(SMPAI_SUMMON_CAN_USE_SPELLS))
|
||||
{
|
||||
SMPAI_SetSummonSetting(SMPAI_SUMMON_CAN_USE_SPELLS, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
SMPAI_SetSummonSetting(SMPAI_SUMMON_CAN_USE_SPELLS);
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Open inventory
|
||||
case ASSOCIATE_COMMAND_INVENTORY:
|
||||
{
|
||||
// Don't open for summons.
|
||||
FloatingTextStringOnCreature("Summon's inventory cannot be edited", oMaster, FALSE);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
// Pick the nearest lock or bash it.
|
||||
case ASSOCIATE_COMMAND_PICKLOCK:
|
||||
{
|
||||
// Call function "Pick Lock" with the nearest locked door.
|
||||
//oTarget =
|
||||
|
||||
}
|
||||
break;
|
||||
// Disarm any traps.
|
||||
case ASSOCIATE_COMMAND_DISARMTRAP: // Disarm trap
|
||||
{
|
||||
// Call function "Disarm trap" with no target
|
||||
oTarget = GetNearestTrapToObject(oSelf, TRUE);
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
// Attack the nearest enemy - force combat!
|
||||
case ASSOCIATE_COMMAND_ATTACKNEAREST:
|
||||
{
|
||||
// Attack our masters target if they are valid.
|
||||
oTarget = GetAttackTarget(oMaster);
|
||||
if(GetIsObjectValid(oTarget) == TRUE)
|
||||
{
|
||||
if(GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE ||
|
||||
GetObjectType(oTarget) == OBJECT_TYPE_DOOR)
|
||||
{
|
||||
ActionAttack(oTarget);
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Else normal attack (even if oTarget is invalid, it'll use the nearest).
|
||||
SMPAI_SummonAttack(oTarget);
|
||||
}
|
||||
break;
|
||||
// Just move to the master
|
||||
case ASSOCIATE_COMMAND_FOLLOWMASTER:
|
||||
{
|
||||
ClearAllActions();
|
||||
ActionForceFollowObject(oMaster, 2.0);
|
||||
}
|
||||
break;
|
||||
// Attack the masters last attacker
|
||||
case ASSOCIATE_COMMAND_GUARDMASTER:
|
||||
{
|
||||
oTarget = GetLastHostileActor(oMaster);
|
||||
if(!GetIsObjectValid(oTarget))
|
||||
{
|
||||
oTarget = GetAttackTarget(oMaster);
|
||||
}
|
||||
SMPAI_SummonAttack(oTarget);
|
||||
}
|
||||
break;
|
||||
// Heal our master
|
||||
case ASSOCIATE_COMMAND_HEALMASTER:
|
||||
{
|
||||
// Heal the master! Well, only if we can...
|
||||
}
|
||||
break;
|
||||
// Will not guard master or follow.
|
||||
case ASSOCIATE_COMMAND_STANDGROUND:
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
// Next ones are all done by the game engine!
|
||||
// Master failed to pick a lock. We can't get what lock was failed, so
|
||||
// get nearest locked object to the.
|
||||
case ASSOCIATE_COMMAND_MASTERFAILEDLOCKPICK:
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
// Master saw a trap
|
||||
// We can get the trap via. GetLastTrapDetected(oMaster).
|
||||
case ASSOCIATE_COMMAND_MASTERSAWTRAP:
|
||||
{
|
||||
if(!GetIsInCombat())
|
||||
{
|
||||
// if(!GetAssociateState(NW_ASC_MODE_STAND_GROUND))
|
||||
// {
|
||||
oTarget = GetLastTrapDetected(oMaster);
|
||||
// }
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Master under attack
|
||||
// We can get the last attacker with GetLastHostileActor().
|
||||
case ASSOCIATE_COMMAND_MASTERUNDERATTACK:
|
||||
{
|
||||
// Start combat if not already in combat
|
||||
oTarget = GetLastHostileActor(oMaster);
|
||||
if(!GetIsInCombat())
|
||||
{
|
||||
SMPAI_SummonAttack(oTarget);
|
||||
}
|
||||
}
|
||||
break;
|
||||
// Master has attacked someone - we should go into combat.
|
||||
// We can get their target using GetAttackTarget().
|
||||
case ASSOCIATE_COMMAND_MASTERATTACKEDOTHER:
|
||||
{
|
||||
// Get the target
|
||||
oTarget = GetAttackTarget(oMaster);
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
// Master is going to be attacked.
|
||||
// We can get who they will be attacked by with GetGoingToBeAttackedBy().
|
||||
// Not sure when this is fired.
|
||||
case ASSOCIATE_COMMAND_MASTERGOINGTOBEATTACKED:
|
||||
{
|
||||
//if(!GetAssociateState(NW_ASC_MODE_STAND_GROUND))
|
||||
//{
|
||||
if(!GetIsInCombat(OBJECT_SELF))
|
||||
{
|
||||
oTarget = GetGoingToBeAttackedBy(oMaster);
|
||||
// April 2003: If my master can see the enemy, then I can too.
|
||||
// Potential Side effect : Henchmen may run
|
||||
// to stupid places, trying to get an enemy
|
||||
if(GetIsObjectValid(oTarget) && GetObjectSeen(oTarget, oMaster))
|
||||
{
|
||||
ClearAllActions();
|
||||
ActionMoveToObject(oTarget, TRUE, 7.0);
|
||||
SMPAI_SummonAttack(oTarget);
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
break;
|
||||
// We should leave the party.
|
||||
// Summons become "unsummoned" and destroy themselves.
|
||||
case ASSOCIATE_COMMAND_LEAVEPARTY:
|
||||
{
|
||||
// Destroy self with nice effect
|
||||
// Do nothing for now (might change later, or it might be internal)
|
||||
// SMPAI_UnsummonSelf();
|
||||
return;
|
||||
}
|
||||
break;
|
||||
// End
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user