Actually, it is potentially possible to have guards called on you, but it operates differently in different scenarios. First, if you attempt to start your provoke with
any human NPC, the following code is fired in the demo:
Code: Select all
if(isHuman(usedon))
{
if(!getCompileFlag(0x01))
{
removeNotoriety(user, 0x64);
}
else
{
changeKarma(user, 0x00 - 0x1D4C);
}
bark(usedon, "Think not that I fail to see what thou art doing!");
if(getCompileFlag(0x01))
{
committedCrimeAt(user, getLocation(usedon), 0x01E0);
}
else
{
criminalAct(user, usedon, 0x01, 0x19);
callGuards(user, getLocation(user), 0x02);
}
return(0x00);
}
This means that any human that you attempt to start the provoke on will trigger the committedCrimeAt piece of code, and will allow any player to call guards on you, but it will not automatically trigger any nearby NPCs to call guards.
The second possible outcome is when you provoke a non-human on to a human (or any other creature really) and fail the attempt. When that happens, this code is fired:
Code: Select all
if(!testSkill(user, 0x16))
{
sfx(getLocation(user), badSound, 0x00);
barkTo(attacker, attacker, "You hear the music and realize that the musician is trying to get you angry...!");
barkTo(attacker, user, "Your music fails to incite enough anger.");
if(!getCompileFlag(0x01))
{
callGuards(user, getLocation(user), 0x02);
}
if(!isInArea("city", getLocation(user), 0x00))
{
attack(attacker, user);
}
return(0x00);
}
This means that a failed attempt to provoke will automatically cause the first provoked creature to go after the provoker
while outside of town, but no other consequences will occur (due to some problems with the demo server, it doesn't actually see Ocllo as a "city" region which allows the creature to attack you inside town). If any NPC is nearby when the creature attacks the player and the player is innocent, they will call guards, but to no avail due to being outside of town.
The third piece of code that fires will go off when a player successfully provokes a non-human onto any target. The code is as follows:
Code: Select all
if(getCompileFlag(0x01))
{
integer Q5RN = 0x00;
if(!canBeFreelyAggressedBy(usedon, user))
{
Q5RN = 0x03E8;
}
if(!canBeFreelyAggressedBy(attacker, user))
{
committedCrimeAt(user, getLocation(usedon), 0x01E0);
Q5RN = 0x03E8;
}
integer Q691 = witnessCrime(getLocation(attacker), user, usedon, getName(attacker), 0x03E8, Q5RN, 0x03);
}
This means that if the second target of the provoke
cannot be freely attacked by the provoker, or the first target of the provoking attempt
cannot freely attack the
first target of the provoke, then a value is set that is passed to the witnessCrime function that allows the guards to be called on you and the attacker
regardless of line of sight.
So, in short, there are 3 different outcomes to provocation on the demo with respect to NPCs, but some of them lack basic checks for certain things that were likely fixed later on such as having any NPC cause you to become criminal if it is your first target.
Also, much of the verbose text for provocation was removed with this line item from 1/19/99:
- "Provocation spam" is removed.