Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
		
			
				
	
	
		
			192 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*:://////////////////////////////////////////////
 | 
						||
//:: Name AI Senses include.
 | 
						||
//:: FileName SMP_AI_INCSENSE
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
//:: Description
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
    Include file for Tremmorsense, scent and so on.
 | 
						||
 | 
						||
    Tremmorsense:
 | 
						||
 | 
						||
    Tremorsense (Ex): A creature can detect and pinpoint any creature or
 | 
						||
    object within 20 meters (60 feet) in contact with the ground.
 | 
						||
    - 20M can be different.
 | 
						||
 | 
						||
 | 
						||
    BLINDSIGHT AND BLINDSENSE
 | 
						||
 | 
						||
    Blindsense (Ex): Using nonvisual senses, such as acute smell or hearing, a
 | 
						||
    creature with blindsense notices things it cannot see. The creature usually
 | 
						||
    does not need to make Spot or Listen checks to pinpoint the location of a
 | 
						||
    creature within range of its blindsense ability, provided that it has line
 | 
						||
    of effect to that creature. Any opponent the creature cannot see still has
 | 
						||
    total concealment against the creature with blindsense, and the creature
 | 
						||
    still has the normal miss chance when attacking foes that have concealment.
 | 
						||
    Visibility still affects the movement of a creature with blindsense. A
 | 
						||
    creature with blindsense is still denied its Dexterity bonus to Armor Class
 | 
						||
    against attacks from creatures it cannot see.
 | 
						||
 | 
						||
 | 
						||
    Blindsight (Ex): This ability is similar to blindsense, but is far more
 | 
						||
    discerning. Using nonvisual senses, such as sensitivity to vibrations, keen
 | 
						||
    smell, acute hearing, or echolocation, a creature with blindsight maneuvers
 | 
						||
    and fights as well as a sighted creature. Invisibility, darkness, and most
 | 
						||
    kinds of concealment are irrelevant, though the creature must have line of
 | 
						||
    effect to a creature or object to discern that creature or object. The
 | 
						||
    ability’s range is specified in the creature’s descriptive text. The
 | 
						||
    creature usually does not need to make Spot or Listen checks to notice
 | 
						||
    creatures within range of its blindsight ability. Unless noted otherwise,
 | 
						||
    blindsight is continuous, and the creature need do nothing to use it. Some
 | 
						||
    forms of blindsight, however, must be triggered as a free action. If so,
 | 
						||
    this is noted in the creature’s description. If a creature must trigger its
 | 
						||
    blindsight ability, the creature gains the benefits of blindsight only
 | 
						||
    during its turn.
 | 
						||
 | 
						||
    Special abilties descriptions:
 | 
						||
 | 
						||
    Some creatures have blindsight, the extraordinary ability to use a nonvisual
 | 
						||
    sense (or a combination of such senses) to operate effectively without
 | 
						||
    vision. Such sense may include sensitivity to vibrations, acute scent, keen
 | 
						||
    hearing, or echolocation. This ability makes invisibility and concealment
 | 
						||
    (even magical darkness) irrelevant to the creature (though it still can’t
 | 
						||
    see ethereal creatures). This ability operates out to a range specified in
 | 
						||
    the creature description.
 | 
						||
 | 
						||
    * Blindsight never allows a creature to distinguish color or visual
 | 
						||
      contrast. A creature cannot read with blindsight.
 | 
						||
    * Blindsight does not subject a creature to gaze attacks (even though
 | 
						||
      darkvision does).
 | 
						||
    * Blinding attacks do not penalize creatures using blindsight.
 | 
						||
    * Deafening attacks thwart blindsight if it relies on hearing.
 | 
						||
    * Blindsight works underwater but not in a vacuum.
 | 
						||
    * Blindsight negates displacement and blur effects.
 | 
						||
 | 
						||
    Blindsense: Other creatures have blindsense, a lesser ability that lets the
 | 
						||
    creature notice things it cannot see, but without the precision of
 | 
						||
    blindsight. The creature with blindsense usually does not need to make Spot
 | 
						||
    or Listen checks to notice and locate creatures within range of its
 | 
						||
    blindsense ability, provided that it has line of effect to that creature.
 | 
						||
    Any opponent the creature cannot see has total concealment (50% miss chance)
 | 
						||
    against the creature with blindsense, and the blindsensing creature still
 | 
						||
    has the normal miss chance when attacking foes that have concealment.
 | 
						||
    Visibility still affects the movement of a creature with blindsense. A
 | 
						||
    creature with blindsense is still denied its Dexterity bonus to Armor Class
 | 
						||
    against attacks from creatures it cannot see.
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    Scent (Ex): This special quality allows a creature to detect approaching
 | 
						||
    enemies, sniff out hidden foes, and track by sense of smell. Creatures with
 | 
						||
    the scent ability can identify familiar odors just as humans do familiar
 | 
						||
    sights.
 | 
						||
 | 
						||
    The creature can detect opponents within 10M (30 feet) by sense of smell. If
 | 
						||
    the opponent is upwind, the range increases to 20M (60 feet); if downwind, it
 | 
						||
    drops to 5M (15 feet). Strong scents, such as smoke or rotting garbage, can be
 | 
						||
    detected at twice the ranges noted above. Overpowering scents, such as
 | 
						||
    skunk musk or troglodyte stench, can be detected at triple normal range.
 | 
						||
 | 
						||
    When a creature detects a scent, the exact location of the source is not
 | 
						||
    revealed—only its presence somewhere within range. The creature can take
 | 
						||
    a move action to note the direction of the scent.
 | 
						||
 | 
						||
    Whenever the creature comes within 1.5M (5 feet) of the source, the creature
 | 
						||
    pinpoints the source’s location.
 | 
						||
 | 
						||
    Creatures with the scent ability can identify familiar odors just as
 | 
						||
    humans do familiar sights.
 | 
						||
 | 
						||
    Water, particularly running water, ruins a trail for air-breathing
 | 
						||
    creatures. Water-breathing creatures that have the scent ability, however,
 | 
						||
    can use it in the water easily.
 | 
						||
 | 
						||
    False, powerful odors can easily mask other scents. The presence of such an
 | 
						||
    odor completely spoils the ability to properly detect or identify creatures,
 | 
						||
    and the base Survival DC to track becomes 20 rather than 10.
 | 
						||
 | 
						||
    Tremorsense (Ex): A creature with tremorsense is sensitive to vibrations
 | 
						||
    in the ground and can automatically pinpoint the location of anything that
 | 
						||
    is in contact with the ground. The ability’s range is specified in the
 | 
						||
    creature’s descriptive text.
 | 
						||
 | 
						||
    A creature with tremorsense automatically senses the location of anything
 | 
						||
    that is in contact with the ground and within range.
 | 
						||
 | 
						||
    If no straight path exists through the ground from the creature to those
 | 
						||
    that it’s sensing, then the range defines the maximum distance of the
 | 
						||
    shortest indirect path. It must itself be in contact with the ground, and
 | 
						||
    the creatures must be moving.
 | 
						||
 | 
						||
    As long as the other creatures are taking physical actions, including
 | 
						||
    casting spells with somatic components, they’re considered moving; they
 | 
						||
    don’t have to move from place to place for a creature with tremorsense
 | 
						||
    to detect them.
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
//:: Created By: Jasperre
 | 
						||
//::////////////////////////////////////////////*/
 | 
						||
 | 
						||
// Include constants
 | 
						||
#include "SMP_INC_CONSTANTS"
 | 
						||
 | 
						||
// Returns a creature we cannot see or hear, but can sense by them moving.
 | 
						||
// If they have moved since the last time we used this, or are moving now, and
 | 
						||
// are within the range of 20M, we attack them.
 | 
						||
object SMPAI_Tremmorsense();
 | 
						||
 | 
						||
// Returns, for searching, an object we can smell within 10M.
 | 
						||
object SMPAI_ScentSearch();
 | 
						||
// Returns, if any, an object which is detected within 1.5M we can smell.
 | 
						||
object SMPAI_ScentAttack();
 | 
						||
 | 
						||
// Returns a creature we cannot see or hear, but can sense by them moving.
 | 
						||
// If they have moved since the last time we used this, or are moving now, and
 | 
						||
// are within the range of 20M, we attack them.
 | 
						||
object SMPAI_Tremmorsense()
 | 
						||
{
 | 
						||
    // Check if anyone is within 20M we cannot see or hear
 | 
						||
    int nNth = 1;
 | 
						||
    object oTest = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, OBJECT_SELF, nNth, CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, CREATURE_TYPE_PERCEPTION, PERCEPTION_NOT_SEEN_AND_NOT_HEARD);
 | 
						||
    while(GetIsObjectValid(oTest) && GetDistanceToObject(oTest) <= 20.0)
 | 
						||
    {
 | 
						||
        // If they are moving
 | 
						||
        if(GetCurrentAction(oTest) == ACTION_MOVETOPOINT)
 | 
						||
        {
 | 
						||
            // Return this object
 | 
						||
            return oTest;
 | 
						||
        }
 | 
						||
        nNth++;
 | 
						||
        oTest = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, OBJECT_SELF, nNth, CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, CREATURE_TYPE_PERCEPTION, PERCEPTION_NOT_SEEN_AND_NOT_HEARD);
 | 
						||
    }
 | 
						||
    // Nothing found to attack
 | 
						||
    return OBJECT_INVALID;
 | 
						||
}
 | 
						||
 | 
						||
// Returns, for searching, an object we can smell within 10M.
 | 
						||
object SMPAI_ScentSearch()
 | 
						||
{
 | 
						||
    // Check if anyone is within 10M we cannot see or hear
 | 
						||
    object oTest = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, OBJECT_SELF, 1, CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, CREATURE_TYPE_PERCEPTION, PERCEPTION_NOT_SEEN_AND_NOT_HEARD);
 | 
						||
    if(GetIsObjectValid(oTest) && GetDistanceToObject(oTest) <= 10.0)
 | 
						||
    {
 | 
						||
        // Return this object
 | 
						||
        return oTest;
 | 
						||
    }
 | 
						||
    // Nothing found to attack
 | 
						||
    return OBJECT_INVALID;
 | 
						||
}
 | 
						||
 | 
						||
// Returns, if any, an object which is detected within 1.5M we can smell.
 | 
						||
object SMPAI_ScentAttack()
 | 
						||
{
 | 
						||
    // Check if anyone is moving within 1.5M we cannot see or hear
 | 
						||
    object oTest = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, OBJECT_SELF, 1, CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, CREATURE_TYPE_PERCEPTION, PERCEPTION_NOT_SEEN_AND_NOT_HEARD);
 | 
						||
    if(GetIsObjectValid(oTest) && GetDistanceToObject(oTest) <= 1.5)
 | 
						||
    {
 | 
						||
        // Return this object
 | 
						||
        return oTest;
 | 
						||
    }
 | 
						||
    // Nothing found to attack
 | 
						||
    return OBJECT_INVALID;
 | 
						||
}
 | 
						||
 |