NWScript :Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème.
//:
///
//:: Updated Lylver, Octobre 2005
//:: InsignedesChevaliersdeLyon
//:
///
#include "NW_I0_GENERIC"
#include "x2_inc_itemprop"
//VARIABLES START - EDIT AT OWN PLEASURE
string WARNING1 = "Retirez vos armes !!";
string WARNING2 = "";
string WARNING3 = "";//Move to Player
string ATTACK_MSG = "";//Attack here
string COMPLY_REPLY = "bien, merci.";
float WARN_DISTANCE = 20.0;//Distance in which to spot player
float ANGER_DUR = 120.0; //Length of time (sec) that will remain angry at the pc
//END OF VARIABLES
void main()
{
object oPC;
object oItem;
int bWeapon = FALSE ;
oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF);
if( oPC != OBJECT_INVALID &&
(GetDistanceBetween(OBJECT_SELF,oPC) < WARN_DISTANCE) &&
GetObjectSeen(oPC) &&
!GetIsEnemy(oPC) ){
if( (GetItemPossessedBy(oPC,"AmulettedesChevaliersdeLyon")!=OBJECT_INVALID) &&
(GetLocalInt(OBJECT_SELF,GetFamiliarName(oPC))!=1) ){
AssignCommand(OBJECT_SELF,ActionPlayAnimation(ANIMATION_FIREFORGET_BOW,1.0));
if( GetItemPossessedBy(oPC,"InsignedesChevaliersdeLyon")!=OBJECT_INVALID ){
SpeakString("Bienvenue Seigneur "+GetFamiliarName(oPC)+" "+GetName(oPC));
}
SetLocalInt(OBJECT_SELF,GetFamiliarName(oPC), 1);
}
oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC) ;
// check CEP
if( GetBaseItemType(oItem) >=300 && GetBaseItemType(oItem) <= 324 ){
bWeapon = TRUE ; // CEP Weapon (a peu pres)
if( GetBaseItemType(oItem) == 314 ) bWeapon = FALSE ; // Faschion Accessory
}
bWeapon = ( bWeapon || // check CEP
IPGetIsMeleeWeapon(oItem) ||
IPGetIsRangedWeapon(oItem) ||
GetIsCreatureDisarmable(oPC) ) && // bah ca mange pas de pain
(GetBaseItemType(oItem) != BASE_ITEM_MAGICSTAFF) &&
(GetBaseItemType(oItem) != 314) &&
(GetItemPossessedBy(oPC,"AmulettedesChevaliersdeLyon")==OBJECT_INVALID) &&
(GetItemPossessedBy(oPC,"InsignedesChevaliersdeLyon")==OBJECT_INVALID) ;
if( (GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oPC) > 8) && (d6()==1) ){
FloatingTextStringOnCreature("*garde un oeil sur le demi-dragon*",OBJECT_SELF,FALSE) ;
}
if( GetHasFeat(FEAT_DEATHLESS_MASTER_TOUCH, oPC) && (d6()==1) ){
FloatingTextStringOnCreature("",OBJECT_SELF,FALSE) ;
}
if( bWeapon ){
if( GetLocalObject(OBJECT_SELF,"LastOffender")==oPC ){
if( GetLocalInt(OBJECT_SELF,"OffenseCount")==2 ){
SpeakString(ATTACK_MSG);
SetIsTemporaryEnemy(oPC,OBJECT_SELF,TRUE,ANGER_DUR);
if( GetIsPC(GetAttackTarget(oPC)) ||
(GetAppearanceType(oPC) >6) || // metamorphe (apparence non humanoide)
(GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oPC) > 8) || // ailes
GetHasFeat(FEAT_DEATHLESS_MASTER_TOUCH, oPC) ){ // bras mort-vivant
ActionAttack(oPC); // pour SPECIAL_ATTACK_DISARM mettre le don ad hoc
}
else {
AssignCommand(oPC,ActionUnequipItem(oItem)) ;
FloatingTextStringOnCreature("*range son arme*",oPC,FALSE) ;
}
} else if( GetLocalInt(OBJECT_SELF,"OffenseCount")==1 ){
ActionMoveToObject(oPC,TRUE);
SetLocalInt(OBJECT_SELF,"OffenseCount",2);
SpeakString(WARNING3);
} else {
SetLocalInt(OBJECT_SELF,"OffenseCount",1);
SpeakString(WARNING2);
}
} else {
SetLocalInt(OBJECT_SELF,"OffenseCount",0);
SpeakString(WARNING1);
SetLocalObject(OBJECT_SELF,"LastOffender",oPC);
}
} else {
if( GetLocalObject(OBJECT_SELF,"LastOffender")!= OBJECT_INVALID ){
SpeakString(COMPLY_REPLY);
DeleteLocalObject(OBJECT_SELF,"LastOffender");
SetLocalInt(OBJECT_SELF,"OffenseCount",0);
}
}
if( GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY) ){
if( TalentAdvancedBuff(40.0) ){
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE);
return;
}
}
if( GetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING) ){
int nDay = FALSE;
if( GetIsDay() || GetIsDawn() ){
nDay = TRUE;
}
if( GetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT") != nDay ){
if( nDay == TRUE ){
SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", TRUE);
} else {
SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", FALSE);
}
WalkWayPoints();
}
}
if( !GetHasEffect(EFFECT_TYPE_SLEEP) ){
if( !GetIsPostOrWalking() ){
if( !GetIsObjectValid(GetAttemptedAttackTarget()) &&
!GetIsObjectValid(GetAttemptedSpellTarget()) ){
if( !GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)) ){
if( !GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) &&
!IsInConversation(OBJECT_SELF) ){
if( GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) ||
GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN) ){
PlayMobileAmbientAnimations();
} else if( GetIsEncounterCreature() &&
!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)) ){
PlayMobileAmbientAnimations();
} else if( GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS) &&
!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)) ){
PlayImmobileAmbientAnimations();
}
} else {
DetermineSpecialBehavior();
}
} else {
// DetermineCombatRound();
}
}
}
} else {
if( GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT) ){
effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
if( d10() > 6 ){
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
}
}
}
if( GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT) ){
SignalEvent(OBJECT_SELF, EventUserDefined(1001));
}
}
}

//:: Updated Lylver, Octobre 2005
//:: InsignedesChevaliersdeLyon
//:

#include "NW_I0_GENERIC"
#include "x2_inc_itemprop"
//VARIABLES START - EDIT AT OWN PLEASURE
string WARNING1 = "Retirez vos armes !!";
string WARNING2 = "";
string WARNING3 = "";//Move to Player
string ATTACK_MSG = "";//Attack here
string COMPLY_REPLY = "bien, merci.";
float WARN_DISTANCE = 20.0;//Distance in which to spot player
float ANGER_DUR = 120.0; //Length of time (sec) that will remain angry at the pc
//END OF VARIABLES
void main()
{
object oPC;
object oItem;
int bWeapon = FALSE ;
oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, OBJECT_SELF);
if( oPC != OBJECT_INVALID &&
(GetDistanceBetween(OBJECT_SELF,oPC) < WARN_DISTANCE) &&
GetObjectSeen(oPC) &&
!GetIsEnemy(oPC) ){
if( (GetItemPossessedBy(oPC,"AmulettedesChevaliersdeLyon")!=OBJECT_INVALID) &&
(GetLocalInt(OBJECT_SELF,GetFamiliarName(oPC))!=1) ){
AssignCommand(OBJECT_SELF,ActionPlayAnimation(ANIMATION_FIREFORGET_BOW,1.0));
if( GetItemPossessedBy(oPC,"InsignedesChevaliersdeLyon")!=OBJECT_INVALID ){
SpeakString("Bienvenue Seigneur "+GetFamiliarName(oPC)+" "+GetName(oPC));
}
SetLocalInt(OBJECT_SELF,GetFamiliarName(oPC), 1);
}
oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC) ;
// check CEP
if( GetBaseItemType(oItem) >=300 && GetBaseItemType(oItem) <= 324 ){
bWeapon = TRUE ; // CEP Weapon (a peu pres)
if( GetBaseItemType(oItem) == 314 ) bWeapon = FALSE ; // Faschion Accessory
}
bWeapon = ( bWeapon || // check CEP
IPGetIsMeleeWeapon(oItem) ||
IPGetIsRangedWeapon(oItem) ||
GetIsCreatureDisarmable(oPC) ) && // bah ca mange pas de pain
(GetBaseItemType(oItem) != BASE_ITEM_MAGICSTAFF) &&
(GetBaseItemType(oItem) != 314) &&
(GetItemPossessedBy(oPC,"AmulettedesChevaliersdeLyon")==OBJECT_INVALID) &&
(GetItemPossessedBy(oPC,"InsignedesChevaliersdeLyon")==OBJECT_INVALID) ;
if( (GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oPC) > 8) && (d6()==1) ){
FloatingTextStringOnCreature("*garde un oeil sur le demi-dragon*",OBJECT_SELF,FALSE) ;
}
if( GetHasFeat(FEAT_DEATHLESS_MASTER_TOUCH, oPC) && (d6()==1) ){
FloatingTextStringOnCreature("",OBJECT_SELF,FALSE) ;
}
if( bWeapon ){
if( GetLocalObject(OBJECT_SELF,"LastOffender")==oPC ){
if( GetLocalInt(OBJECT_SELF,"OffenseCount")==2 ){
SpeakString(ATTACK_MSG);
SetIsTemporaryEnemy(oPC,OBJECT_SELF,TRUE,ANGER_DUR);
if( GetIsPC(GetAttackTarget(oPC)) ||
(GetAppearanceType(oPC) >6) || // metamorphe (apparence non humanoide)
(GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oPC) > 8) || // ailes
GetHasFeat(FEAT_DEATHLESS_MASTER_TOUCH, oPC) ){ // bras mort-vivant
ActionAttack(oPC); // pour SPECIAL_ATTACK_DISARM mettre le don ad hoc
}
else {
AssignCommand(oPC,ActionUnequipItem(oItem)) ;
FloatingTextStringOnCreature("*range son arme*",oPC,FALSE) ;
}
} else if( GetLocalInt(OBJECT_SELF,"OffenseCount")==1 ){
ActionMoveToObject(oPC,TRUE);
SetLocalInt(OBJECT_SELF,"OffenseCount",2);
SpeakString(WARNING3);
} else {
SetLocalInt(OBJECT_SELF,"OffenseCount",1);
SpeakString(WARNING2);
}
} else {
SetLocalInt(OBJECT_SELF,"OffenseCount",0);
SpeakString(WARNING1);
SetLocalObject(OBJECT_SELF,"LastOffender",oPC);
}
} else {
if( GetLocalObject(OBJECT_SELF,"LastOffender")!= OBJECT_INVALID ){
SpeakString(COMPLY_REPLY);
DeleteLocalObject(OBJECT_SELF,"LastOffender");
SetLocalInt(OBJECT_SELF,"OffenseCount",0);
}
}
if( GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY) ){
if( TalentAdvancedBuff(40.0) ){
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE);
return;
}
}
if( GetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING) ){
int nDay = FALSE;
if( GetIsDay() || GetIsDawn() ){
nDay = TRUE;
}
if( GetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT") != nDay ){
if( nDay == TRUE ){
SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", TRUE);
} else {
SetLocalInt(OBJECT_SELF, "NW_GENERIC_DAY_NIGHT", FALSE);
}
WalkWayPoints();
}
}
if( !GetHasEffect(EFFECT_TYPE_SLEEP) ){
if( !GetIsPostOrWalking() ){
if( !GetIsObjectValid(GetAttemptedAttackTarget()) &&
!GetIsObjectValid(GetAttemptedSpellTarget()) ){
if( !GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)) ){
if( !GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) &&
!IsInConversation(OBJECT_SELF) ){
if( GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) ||
GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN) ){
PlayMobileAmbientAnimations();
} else if( GetIsEncounterCreature() &&
!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)) ){
PlayMobileAmbientAnimations();
} else if( GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS) &&
!GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, OBJECT_SELF, 1, CREATURE_TYPE_PERCEPTION, PERCEPTION_SEEN)) ){
PlayImmobileAmbientAnimations();
}
} else {
DetermineSpecialBehavior();
}
} else {
// DetermineCombatRound();
}
}
}
} else {
if( GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT) ){
effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
if( d10() > 6 ){
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
}
}
}
if( GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT) ){
SignalEvent(OBJECT_SELF, EventUserDefined(1001));
}
}
}