Intelligence for Spider boss
Posted: Wed Feb 01, 2012 10:20 pm
Hi folks,
Below follows an artificial intelligence to the Boss Giant Black Spider . ID Graphic = (173 (0xad)).
This script is exactly the way I think it would be interesting, and I thank the Dragon Slayer by the initiative to make the scripts initially, because thanks to this I understand a bit and learned to do things the way I wanted.
Fight starts = 50% of chance to launch a spider web.
Combat Defend = Initially only launch webs. When the monster is with 2000 life (out of a total of 3000 of life) he begins to reproduce, from here shifts between webs and "puppies".
Combat ends = Launches poison attacks on the player, and quit randomly one of four types of poison. The monster stop this attack until the player heal. Also launch spider webs due the function combat start.
Good, just don't say it ended because I can't understand why the graph of the poison (var EfeitoMovimentoVenenoID = 0x113C;) that leaves the spider until the character does not appear. The process is how the graph of the spider webs launched!
Good, that's it. Let the ai script if they want to test and verify this small problem that I said above, I don't know why reasons it does not appear.
Note1: Someone would have done or has creatures.dfn sounds for the npc (173 (0xad))?
Note2: As you may have seen, the variables and phrases are in my language, the Portuguese, if someone interest, can translate into English and post is in the session scripts officially. Feel free.
Below follows an artificial intelligence to the Boss Giant Black Spider . ID Graphic = (173 (0xad)).
This script is exactly the way I think it would be interesting, and I thank the Dragon Slayer by the initiative to make the scripts initially, because thanks to this I understand a bit and learned to do things the way I wanted.
Fight starts = 50% of chance to launch a spider web.
Combat Defend = Initially only launch webs. When the monster is with 2000 life (out of a total of 3000 of life) he begins to reproduce, from here shifts between webs and "puppies".
Combat ends = Launches poison attacks on the player, and quit randomly one of four types of poison. The monster stop this attack until the player heal. Also launch spider webs due the function combat start.
Good, just don't say it ended because I can't understand why the graph of the poison (var EfeitoMovimentoVenenoID = 0x113C;) that leaves the spider until the character does not appear. The process is how the graph of the spider webs launched!
Good, that's it. Let the ai script if they want to test and verify this small problem that I said above, I don't know why reasons it does not appear.
Note1: Someone would have done or has creatures.dfn sounds for the npc (173 (0xad))?
Note2: As you may have seen, the variables and phrases are in my language, the Portuguese, if someone interest, can translate into English and post is in the session scripts officially. Feel free.
var EfeitoMovimentoTeiaID = 0x0f8d;
var TeiaSom = 0x494;
var AcertoTeiaID = 0x10d3;
var ParalisiaMsg = "Voce ficou preso em uma teia de aranha";
var DuraçãoParalisiaDelay = 5000;
var AcabarParalisiaMsg = "Voce conseguiu se libertar";
var SpawnMsg = " reproduz...";
var SpawnMonstro = "aranhagigante";
var VidaAragogQuantidade = 2000;
var EfeitoMovimentoVenenoID = 0x113C;
var EnvenenadoMsg1 = "Voce foi envenenado por um veneno fraco";
var EnvenenadoMsg2 = "Voce foi envenenado por um veneno moderado";
var EnvenenadoMsg3 = "Voce foi envenenado por um veneno forte";
var EnvenenadoMsg4 = "Voce foi envenenado por um veneno mortal";
var AcertoVenenoSom = 0x354;
function onCombatStart( pAttacker, pDefender )
{
var iNum = RandomNumber( 0, 10 );
if( iNum > 5 )
{
var dice;
dice = RollDice(1,2,0);
if (dice == 1)
{
if( pDefender.frozen == 0 )
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoTeiaID, 0x10, 0x00, false );
pDefender.SoundEffect( TeiaSom, true );
pDefender.StaticEffect( AcertoTeiaID, 0, 100 );
pDefender.frozen = 1;
pDefender.TextMessage( ParalisiaMsg );
pDefender.StartTimer( DuraçãoParalisiaDelay, 0, true );
}
}
}
return true;
}
function onDefense( pAttacker, pDefender )
{
var iNum = RandomNumber( 0, 10 );
if( iNum >= 8 )
{
var dice;
dice = RollDice(1,2,0);
if (dice == 1)
{
pDefender.TurnToward( pAttacker );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoTeiaID, 0x10, 0x00, false );
pDefender.SoundEffect( TeiaSom, true );
pAttacker.StaticEffect( AcertoTeiaID, 0, 100 );
pAttacker.frozen = 1;
pAttacker.TextMessage( ParalisiaMsg );
pAttacker.StartTimer( DuraçãoParalisiaDelay, 0, true );
return true;
}
if (dice == 2)
{
if( pDefender.health < VidaAragogQuantidade )
{
var dice;
dice = RollDice(1,20,0);
if (dice >= 14)
{
var nSpawned = SpawnNPC( SpawnMonstro, pDefender.x, pDefender.y, pDefender.z, pDefender.worldnumber );
pDefender.EmoteMessage( pDefender.name + SpawnMsg );
}
if (dice >= 7)
{
var nSpawned = SpawnNPC( SpawnMonstro, pDefender.x, pDefender.y, pDefender.z, pDefender.worldnumber );
pDefender.EmoteMessage( pDefender.name + SpawnMsg );
}
if (dice >= 1)
{
var nSpawned = SpawnNPC( SpawnMonstro, pDefender.x, pDefender.y, pDefender.z, pDefender.worldnumber );
pDefender.EmoteMessage( pDefender.name + SpawnMsg );
}
}
}
}
}
function onCombatEnd( pAttacker, pDefender )
{
var iNum = RandomNumber( 0, 500 );
if( iNum >= 400 )
{
if( pDefender.poison == 0 )
{
var dice;
dice = RollDice(1,4,0);
if (dice == 1)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 1, 30000 );
pDefender.SysMessage( EnvenenadoMsg1 );
return false;
}
if (dice == 2)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 2, 30000 );
pDefender.SysMessage( EnvenenadoMsg2 );
return false;
}
if (dice == 3)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 3, 30000 );
pDefender.SysMessage( EnvenenadoMsg3 );
return false;
}
if (dice == 4)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 4, 30000 );
pDefender.SysMessage( EnvenenadoMsg4 );
return false;
}
}
}
}
function onTimer(pAttacker,timerID)
{
var socket = pAttacker.socket;
if(timerID == 0)
{
pAttacker.frozen = 0;
pAttacker.TextMessage( AcabarParalisiaMsg );
}
}
var TeiaSom = 0x494;
var AcertoTeiaID = 0x10d3;
var ParalisiaMsg = "Voce ficou preso em uma teia de aranha";
var DuraçãoParalisiaDelay = 5000;
var AcabarParalisiaMsg = "Voce conseguiu se libertar";
var SpawnMsg = " reproduz...";
var SpawnMonstro = "aranhagigante";
var VidaAragogQuantidade = 2000;
var EfeitoMovimentoVenenoID = 0x113C;
var EnvenenadoMsg1 = "Voce foi envenenado por um veneno fraco";
var EnvenenadoMsg2 = "Voce foi envenenado por um veneno moderado";
var EnvenenadoMsg3 = "Voce foi envenenado por um veneno forte";
var EnvenenadoMsg4 = "Voce foi envenenado por um veneno mortal";
var AcertoVenenoSom = 0x354;
function onCombatStart( pAttacker, pDefender )
{
var iNum = RandomNumber( 0, 10 );
if( iNum > 5 )
{
var dice;
dice = RollDice(1,2,0);
if (dice == 1)
{
if( pDefender.frozen == 0 )
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoTeiaID, 0x10, 0x00, false );
pDefender.SoundEffect( TeiaSom, true );
pDefender.StaticEffect( AcertoTeiaID, 0, 100 );
pDefender.frozen = 1;
pDefender.TextMessage( ParalisiaMsg );
pDefender.StartTimer( DuraçãoParalisiaDelay, 0, true );
}
}
}
return true;
}
function onDefense( pAttacker, pDefender )
{
var iNum = RandomNumber( 0, 10 );
if( iNum >= 8 )
{
var dice;
dice = RollDice(1,2,0);
if (dice == 1)
{
pDefender.TurnToward( pAttacker );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoTeiaID, 0x10, 0x00, false );
pDefender.SoundEffect( TeiaSom, true );
pAttacker.StaticEffect( AcertoTeiaID, 0, 100 );
pAttacker.frozen = 1;
pAttacker.TextMessage( ParalisiaMsg );
pAttacker.StartTimer( DuraçãoParalisiaDelay, 0, true );
return true;
}
if (dice == 2)
{
if( pDefender.health < VidaAragogQuantidade )
{
var dice;
dice = RollDice(1,20,0);
if (dice >= 14)
{
var nSpawned = SpawnNPC( SpawnMonstro, pDefender.x, pDefender.y, pDefender.z, pDefender.worldnumber );
pDefender.EmoteMessage( pDefender.name + SpawnMsg );
}
if (dice >= 7)
{
var nSpawned = SpawnNPC( SpawnMonstro, pDefender.x, pDefender.y, pDefender.z, pDefender.worldnumber );
pDefender.EmoteMessage( pDefender.name + SpawnMsg );
}
if (dice >= 1)
{
var nSpawned = SpawnNPC( SpawnMonstro, pDefender.x, pDefender.y, pDefender.z, pDefender.worldnumber );
pDefender.EmoteMessage( pDefender.name + SpawnMsg );
}
}
}
}
}
function onCombatEnd( pAttacker, pDefender )
{
var iNum = RandomNumber( 0, 500 );
if( iNum >= 400 )
{
if( pDefender.poison == 0 )
{
var dice;
dice = RollDice(1,4,0);
if (dice == 1)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 1, 30000 );
pDefender.SysMessage( EnvenenadoMsg1 );
return false;
}
if (dice == 2)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 2, 30000 );
pDefender.SysMessage( EnvenenadoMsg2 );
return false;
}
if (dice == 3)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 3, 30000 );
pDefender.SysMessage( EnvenenadoMsg3 );
return false;
}
if (dice == 4)
{
pAttacker.TurnToward( pDefender );
DoMovingEffect( pAttacker, pDefender, EfeitoMovimentoVenenoID, 0x10, 0x00, false );
pDefender.SoundEffect( AcertoVenenoSom, true );
pDefender.SetPoisoned( 4, 30000 );
pDefender.SysMessage( EnvenenadoMsg4 );
return false;
}
}
}
}
function onTimer(pAttacker,timerID)
{
var socket = pAttacker.socket;
if(timerID == 0)
{
pAttacker.frozen = 0;
pAttacker.TextMessage( AcabarParalisiaMsg );
}
}