|  | 
			
			ah bin tiens je viens de m'apercevoir que les scripts que j'ai cités n'étaint plus là dans nwn 2    
en passant si quelqu'un savait ce que représentait le sort SPELL_MISLEAD  (niveau 6 apparemment.. marche pas sur nwn 2 )  ainsi que PROTECTION_FROM_ELEMENTS  (niveau 3 ..   )
 
bon bin je mets celui des magiciens et ensorceleurs
 
apparemment il faut mettre une variable int sur le magicien
// FindWizardType 
// * 0 - Typical Wizard 
// * 1 - Fire Freak Wizard 
// * 2 - Charm/Fear/Domination Wizard 
// * 3 - Heavy Summoning Wizard 
// * 4 - Death Spells
  
//Wizard: Level 20 (Offensive)//*  Spell Level    0   1   2   3   4   5   6   7   8   9
 //* -------------------------------------------------------
 //*  Spell/Day
 //*  Level 1        3   1   -   -   -   -   -   -   -   -
 //*  Level 2        4   2   -   -   -   -   -   -   -   -
 //*  Level 3        4   2   1   -   -   -   -   -   -   -
 //*  Level 4        4   3   2   -   -   -   -   -   -   -
 //*  Level 5        4   3   2   1   -   -   -   -   -   -
 //*  Level 6        4   3   3   2   -   -   -   -   -   -
 //*  Level 7        4   4   3   2   1   -   -   -   -   -
 //*  Level 8        4   4   3   3   2   -   -   -   -   -
 //*  Level 9        4   4   4   3   2   1   -   -   -   -
 //*  Level 10       4   4   4   3   3   2   -   -   -   -
 //*  Level 11       4   4   4   4   3   2   1   -   -   -
 //*  Level 12       4   4   4   4   3   3   2   -   -   -
 //*  Level 13       4   4   4   4   3   3   2   1   -   -
 //*  Level 14       4   4   4   4   4   3   3   2   -   -
 //*  Level 15       4   4   4   4   4   4   3   2   1   -
 //*  Level 16       4   4   4   4   4   4   3   3   2   -
 //*  Level 17       4   4   4   4   4   4   4   3   2   1
 //*  Level 18       4   4   4   4   4   4   4   3   3   2
 //*  Level 19       4   4   4   4   4   4   4   4   3   3
 //*  Level 20       4   4   4   4   4   4   4   4   4   4
 
 // * Spell Suggestions
 // * Protection Spells:  Level 1: Protection from Evil/Good/Law, Mage Armor
 // *                     Level 2: Resist Elements, Invisibility, Mirror Image, Bull's Strength
 // *                     Level 3: Magic Circle against Chaos/Evil/Good/Law, Protection from Elements,
 // *                              Invisibility Sphere, Haste
 // *                     Level 4: Minor Globe of Invulnerability, Stoneskin, Fire Shield,
 // *                              Improved Invisibility
 // *                     Level 5: N/A
 // *                     Level 6: Globe of Invulnerability, True Seeing, Mislead, Mass Haste,
 // *                              Tenser's Transformation
 // *                     Level 7: Spell Turning, Mass Invisibility, Simulacrum
 // *                     Level 8: Protection from Spells
 // *                     Level 9: N/A
 // * Offensive Spells:   Level 1: Charm Person, Color Spray, Sleep, Magic Missile,
 // *                              Ray of Enfeeblement, Burning Hands, Summon Monster I
 // *                     Level 2: Melf’s Acid Arrow, Summon Monster II, Web,
 // *                              Ghoul Touch, Blindness/Deafness
 // *                     Level 3: Dispel Magic, Flame Arrow, Stinking Cloud, Summon Monster III,
 // *                              Hold Person, Fireball, Lightning Bolt, Vampiric Touch, Slow
 // *                     Level 4: Summon Monster IV, Charm Monster, Confusion, Fear
 // *                     Level 5: Cloudkill, Summon Monster V, Dominate Person, Feeblemind,
 // *                              Hold Monster, Cone of Cold, Animate Dead,
 // *                     Level 6: Greater Dispelling, Acid Fog, Summon Monster VI, Chain Lightning,
 // *                              Circle of Death
 // *                     Level 7: Power Word: Stun, Summon Monster VII, Delayed Blast Fireball,
 // *                              Mordenkainen's Sword, Prismatic Spray, Control Undead, Finger of Death,
 // *                     Level 8: Incendiary Cloud, Power Word: Blind, Summon Monster VIII, Mass Charm,
 // *                     Level 9: Mordenkainen's Disjunction, Gate, Power Word: Kill, Summon Monster IX,
 // *                              Dominate Monster, Meteor Swarm, Weird, Energy Drain, Wail of the Banshee,
 // *                              Time Stop
 
 int HasSpell(int Spell)
 {
 int nResult = FALSE;
 if (GetLocalInt(OBJECT_SELF,"SPELLS" + IntToString(Spell)) == 0)
 {
 nResult = TRUE;
 SetLocalInt(OBJECT_SELF,"SPELLS" + IntToString(Spell), 1);
 }
 return nResult;
 }
 
 void main()
 {
 // * HACK: should replace with get nearest creature reputation type
 object oNearestTarget = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
 object oNearestFriend = GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_FRIEND);
 if(GetLocalInt(OBJECT_SELF,"FindWizardType") == 0)
 {
 int nRandNum = Random(10);
 if(nRandNum > 4)
 {
 nRandNum = 0;
 }
 SetLocalInt(OBJECT_SELF,"WizardType",nRandNum);// * 0 - Typical Wizard
 // * 1 - Fire Freak Wizard
 // * 2 - Charm/Fear/Domination Wizard
 // * 3 - Heavy Summoning Wizard
 // * 4 - Death Spells
 SetLocalInt(OBJECT_SELF,"FindWizardType",1);
 }
 //GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY);
 
 switch (GetLocalInt(OBJECT_SELF,"WizardType"))
 {
 case 0:
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PREMONITION) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PREMONITION, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_MIND_BLANK) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MIND_BLANK, OBJECT_SELF);
 }
 // je ne connais pas ce sort
 /*else
 if(HasSpell(SPELL_MISLEAD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MISLEAD, OBJECT_SELF);
 }*/
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 if((HasSpell(SPELL_PROTECTION_FROM_SPELLS) == TRUE)
 && ((oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_BARBARIAN)))
 || (oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_FIGHTER)))
 || (oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_MONK)))
 || (oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_ROGUE)))))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_SPELLS, OBJECT_SELF);
 }
 else
 if ((oNearestTarget == (GetNearestCreature(CREATURE_TYPE_RACIAL_TYPE,RACIAL_TYPE_ELEMENTAL)))
 && (HasSpell(SPELL_PROTECTION_FROM_ENERGY) == TRUE))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_ENERGY, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_WAIL_OF_THE_BANSHEE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_WAIL_OF_THE_BANSHEE, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_METEOR_SWARM) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_METEOR_SWARM, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_INCENDIARY_CLOUD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_INCENDIARY_CLOUD, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FINGER_OF_DEATH) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FINGER_OF_DEATH, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_PRISMATIC_SPRAY) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PRISMATIC_SPRAY, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CHAIN_LIGHTNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CHAIN_LIGHTNING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CONE_OF_COLD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CONE_OF_COLD, OBJECT_SELF);
 }
 else
 // * Check distance so not too close to fireball
 if((HasSpell(SPELL_FIREBALL) == TRUE) && (GetDistanceToObject(oNearestTarget) > 10.0))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FIREBALL, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FLAME_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FLAME_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MELFS_ACID_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MELFS_ACID_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 1:  // * Uses more Fire Related Spells
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PREMONITION) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PREMONITION, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_ELEMENTAL_SHIELD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_ELEMENTAL_SHIELD, OBJECT_SELF);
 }
 /*
 else
 if(HasSpell(SPELL_MISLEAD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MISLEAD, OBJECT_SELF);
 }*/
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PROTECTION_FROM_ENERGY) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_ENERGY, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_TIME_STOP) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_TIME_STOP, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_METEOR_SWARM) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_METEOR_SWARM, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_INCENDIARY_CLOUD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_INCENDIARY_CLOUD, oNearestTarget);
 }
 else
 // * Check distance so not too close to fireball
 if((HasSpell(SPELL_FIREBALL) == TRUE) && (GetDistanceToObject(oNearestTarget) > 10.0))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FIREBALL, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FLAME_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FLAME_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MELFS_ACID_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MELFS_ACID_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 2:  // * Concentrates on Charming/Domination/Fearing
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PREMONITION) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PREMONITION, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_MIND_BLANK) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MIND_BLANK, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_FEAR) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FEAR, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_TIME_STOP) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_TIME_STOP, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_POWER_WORD_STUN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_POWER_WORD_STUN, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MASS_CHARM) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MASS_CHARM, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_DOMINATE_MONSTER) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_DOMINATE_MONSTER, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_WAIL_OF_THE_BANSHEE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_WAIL_OF_THE_BANSHEE, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FEEBLEMIND) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FEEBLEMIND, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_DOMINATE_PERSON) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_DOMINATE_PERSON, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CHARM_PERSON) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CHARM_PERSON, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 3:  // * Uses Many Summoning Spells
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PREMONITION) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PREMONITION, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_ELEMENTAL_SHIELD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_ELEMENTAL_SHIELD, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PROTECTION_FROM_EVIL) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_EVIL, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_TIME_STOP) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_TIME_STOP, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_GATE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GATE, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_POWER_WORD_STUN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_POWER_WORD_STUN, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MORDENKAINENS_SWORD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MORDENKAINENS_SWORD, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_WEB) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_WEB, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_SUMMON_CREATURE_VII) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SUMMON_CREATURE_VII, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FLAME_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FLAME_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_SUMMON_CREATURE_IV) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SUMMON_CREATURE_IV, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 4:  // * Deadly Wizard
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PREMONITION) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PREMONITION, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_MIND_BLANK) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MIND_BLANK, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_WAIL_OF_THE_BANSHEE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_WAIL_OF_THE_BANSHEE, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_TIME_STOP) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_TIME_STOP, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_POWER_WORD_KILL) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_POWER_WORD_KILL, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FINGER_OF_DEATH) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FINGER_OF_DEATH, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_ENERGY_DRAIN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_ENERGY_DRAIN, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CLOUDKILL) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CLOUDKILL, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CHAIN_LIGHTNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CHAIN_LIGHTNING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 }
 }
 
 
// Wizard: Level 12 (Offensive)//*  Spell Level    0   1   2   3   4   5   6   7   8   9
 //* -------------------------------------------------------
 //*  Spell/Day
 //*  Level 1        3   1   -   -   -   -   -   -   -   -
 //*  Level 2        4   2   -   -   -   -   -   -   -   -
 //*  Level 3        4   2   1   -   -   -   -   -   -   -
 //*  Level 4        4   3   2   -   -   -   -   -   -   -
 //*  Level 5        4   3   2   1   -   -   -   -   -   -
 //*  Level 6        4   3   3   2   -   -   -   -   -   -
 //*  Level 7        4   4   3   2   1   -   -   -   -   -
 //*  Level 8        4   4   3   3   2   -   -   -   -   -
 //*  Level 9        4   4   4   3   2   1   -   -   -   -
 //*  Level 10       4   4   4   3   3   2   -   -   -   -
 //*  Level 11       4   4   4   4   3   2   1   -   -   -
 //*  Level 12       4   4   4   4   3   3   2   -   -   -
 
 // * Spell Suggestions
 // * Protection Spells:  Level 1: Protection from Evil/Good/Law, Mage Armor
 // *                     Level 2: Resist Elements, Invisibility, Mirror Image, Bull's Strength
 // *                     Level 3: Magic Circle against Chaos/Evil/Good/Law, Protection from Elements,
 // *                              Invisibility Sphere, Haste
 // *                     Level 4: Minor Globe of Invulnerability, Stoneskin, Fire Shield,
 // *                              Improved Invisibility
 // *                     Level 5: N/A
 // *                     Level 6: Globe of Invulnerability, True Seeing, Mislead, Mass Haste,
 // *                              Tenser's Transformation
 // * Offensive Spells:   Level 1: Charm Person, Color Spray, Sleep, Magic Missile,
 // *                              Ray of Enfeeblement, Burning Hands, Summon Monster I
 // *                     Level 2: Melf’s Acid Arrow, Summon Monster II, Web,
 // *                              Ghoul Touch, Blindness/Deafness
 // *                     Level 3: Dispel Magic, Flame Arrow, Stinking Cloud, Summon Monster III,
 // *                              Hold Person, Fireball, Lightning Bolt, Vampiric Touch, Slow
 // *                     Level 4: Summon Monster IV, Charm Monster, Confusion, Fear
 // *                     Level 5: Cloudkill, Summon Monster V, Dominate Person, Feeblemind,
 // *                              Hold Monster, Cone of Cold, Animate Dead,
 // *                     Level 6: Greater Dispelling, Acid Fog, Summon Monster VI, Chain Lightning,
 // *                              Circle of Death
 
 int HasSpell(int Spell)
 {
 int nResult = FALSE;
 if (GetLocalInt(OBJECT_SELF,"SPELLS" + IntToString(Spell)) == 0)
 {
 nResult = TRUE;
 SetLocalInt(OBJECT_SELF,"SPELLS" + IntToString(Spell), 1);
 }
 return nResult;
 }
 
 void main()
 {
 // * HACK: should replace with get nearest creature reputation type
 object oNearestTarget = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
 object oNearestFriend = GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_FRIEND);
 if(GetLocalInt(OBJECT_SELF,"FindWizardType") == 0)
 {
 int nRandNum = Random(10);
 if(nRandNum > 4)
 {
 nRandNum = 0;
 }
 SetLocalInt(OBJECT_SELF,"WizardType",nRandNum);// * 0 - Typical Wizard
 // * 1 - Fire Freak Wizard
 // * 2 - Charm/Fear/Domination Wizard
 // * 3 - Heavy Summoning Wizard
 // * 4 - Death Spells
 SetLocalInt(OBJECT_SELF,"FindWizardType",1);
 }
 //GetNearestCreature(CREATURE_TYPE_REPUTATION,REPUTATION_TYPE_ENEMY);
 
 switch (GetLocalInt(OBJECT_SELF,"WizardType"))
 {
 case 0:
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_STONESKIN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_STONESKIN, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_CLARITY) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CLARITY, OBJECT_SELF);
 }
 /*    else
 if(HasSpell(SPELL_MISLEAD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MISLEAD, OBJECT_SELF);
 }*/
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 if((HasSpell(SPELL_PROTECTION_FROM_SPELLS) == TRUE)
 && ((oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_BARBARIAN)))
 || (oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_FIGHTER)))
 || (oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_MONK)))
 || (oNearestTarget != (GetNearestCreature(CREATURE_TYPE_CLASS,CLASS_TYPE_ROGUE)))))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_SPELLS, OBJECT_SELF);
 }
 else
 if ((oNearestTarget == (GetNearestCreature(CREATURE_TYPE_RACIAL_TYPE,RACIAL_TYPE_ELEMENTAL)))
 && (HasSpell(SPELL_PROTECTION_FROM_ENERGY) == TRUE))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_ENERGY, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CHAIN_LIGHTNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CHAIN_LIGHTNING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CONE_OF_COLD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CONE_OF_COLD, OBJECT_SELF);
 }
 else
 // * Check distance so not too close to fireball
 if((HasSpell(SPELL_FIREBALL) == TRUE) && (GetDistanceToObject(oNearestTarget) > 10.0))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FIREBALL, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FLAME_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FLAME_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MELFS_ACID_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MELFS_ACID_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 1:  // * Uses more Fire Related Spells
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_STONESKIN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_STONESKIN, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_ELEMENTAL_SHIELD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_ELEMENTAL_SHIELD, OBJECT_SELF);
 }
 /*    else
 if(HasSpell(SPELL_MISLEAD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MISLEAD, OBJECT_SELF);
 }*/
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PROTECTION_FROM_ENERGY) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_ENERGY, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 // * Check distance so not too close to fireball
 if((HasSpell(SPELL_FIREBALL) == TRUE) && (GetDistanceToObject(oNearestTarget) > 10.0))
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FIREBALL, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FLAME_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FLAME_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MELFS_ACID_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MELFS_ACID_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 2:  // * Concentrates on Charming/Domination/Fearing
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_STONESKIN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_STONESKIN, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_CLARITY) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CLARITY, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_FEAR) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FEAR, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_WEB) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_WEB, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FEEBLEMIND) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FEEBLEMIND, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_DOMINATE_PERSON) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_DOMINATE_PERSON, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CHARM_PERSON) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CHARM_PERSON, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 3:  // * Uses Many Summoning Spells
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_STONESKIN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_STONESKIN, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_ELEMENTAL_SHIELD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_ELEMENTAL_SHIELD, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_PROTECTION_FROM_EVIL) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_PROTECTION_FROM_EVIL, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_SUMMON_CREATURE_VI) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SUMMON_CREATURE_VI, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_FLAME_ARROW) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_FLAME_ARROW, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_SUMMON_CREATURE_V) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SUMMON_CREATURE_V, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_SUMMON_CREATURE_IV) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SUMMON_CREATURE_IV, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_LIGHTNING_BOLT) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_LIGHTNING_BOLT, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 case 4:  // * Deadly Wizard
 {
 if(HasSpell(SPELL_HASTE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_HASTE, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_STONESKIN) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_STONESKIN, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_CLARITY) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CLARITY, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_STINKING_CLOUD) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_STINKING_CLOUD, OBJECT_SELF);
 }
 else
 if(HasSpell(SPELL_SPELL_TURNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_SPELL_TURNING, OBJECT_SELF);
 }
 else
 // * Check if player has protection spells on
 if(HasSpell(SPELL_GREATER_DISPELLING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_GREATER_DISPELLING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CIRCLE_OF_DEATH) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CIRCLE_OF_DEATH, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CLOUDKILL) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CLOUDKILL, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_CHAIN_LIGHTNING) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_CHAIN_LIGHTNING, oNearestTarget);
 }
 else
 if(HasSpell(SPELL_MAGIC_MISSILE) == TRUE)
 {
 ClearAllActions();
 ActionCastSpellAtObject(SPELL_MAGIC_MISSILE, oNearestTarget);
 }
 else
 {
 ActionAttack(oNearestTarget);
 }
 }
 break;
 }
 }
 
 
par contre où est ce que j'ai choppé ces scripts... j'en sais plus rien    |