mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
117 lines
2.8 KiB
Plaintext
117 lines
2.8 KiB
Plaintext
include library.utils;
|
|
|
|
trigger OnDetach()
|
|
{
|
|
removeObjVar( self, "rockMiteMaking");
|
|
if ( hasObjVar( self, "miteReg" ))
|
|
killAllMites( self );
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnRemovingFromWorld()
|
|
{
|
|
removeObjVar( self, "rockMiteMaking");
|
|
if ( hasObjVar( self, "miteReg" ))
|
|
killAllMites( self );
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnSpeaking(string text)
|
|
{
|
|
location myLoc = getLocation( self );
|
|
if ( text.equals( "go") )
|
|
{
|
|
if ( hasObjVar( self, "rockMiteMaking" ))
|
|
{
|
|
debugSpeakMsg( self, "I'm still making rock mites!" );
|
|
return SCRIPT_CONTINUE;
|
|
|
|
}
|
|
debugSpeakMsg( self, "making rock mites!" );
|
|
setObjVar( self, "rockMiteMaking", 0 );
|
|
messageTo( self, "spawnMite", null, 0, false );
|
|
}
|
|
else if ( ( text.equals( "stop" ) || text.equals( "die" ) ) && hasObjVar( self, "rockMiteMaking" ))
|
|
{
|
|
removeObjVar( self, "rockMiteMaking");
|
|
debugSpeakMsg( self, "No more rock mites for you!" );
|
|
}
|
|
|
|
if ( text.equals( "die" ) && hasObjVar( self, "miteReg" ))
|
|
{
|
|
debugSpeakMsg( self, "MUAHAHAH!!!!" );
|
|
killAllMites( self );
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler spawnMite()
|
|
{
|
|
if ( !hasObjVar( self, "rockMiteMaking" ))
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int numSpawned = getIntObjVar( self, "rockMiteMaking" );
|
|
|
|
location spawnLoc = new location( getLocation( self ));
|
|
spawnLoc.x += rand( -15, 15 );
|
|
spawnLoc.z += rand( -15, 15 );
|
|
string templateName = "object/creature/monster/rock_mite/rock_mite_desert_";
|
|
switch ( rand(0,3))
|
|
{
|
|
case 0 :
|
|
templateName = templateName + "giant.iff";
|
|
break;
|
|
case 1 :
|
|
templateName = templateName + "large.iff";
|
|
break;
|
|
case 2 :
|
|
templateName = templateName + "medium.iff";
|
|
break;
|
|
case 3 :
|
|
templateName = templateName + "small.iff";
|
|
break;
|
|
}
|
|
obj_id mite = createObject( templateName, spawnLoc );
|
|
registerMite( self, mite );
|
|
numSpawned++;
|
|
if ( numSpawned > 19 )
|
|
{
|
|
debugSpeakMsg( self, "I made 20 rock mites!");
|
|
removeObjVar( self, "rockMiteMaking");
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
setObjVar( self,"rockMiteMaking",numSpawned);
|
|
messageTo( self, "spawnMite", null, 1, false );
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
void registerMite( obj_id player, obj_id mite )
|
|
{
|
|
if ( !hasObjVar( player, "miteReg" ))
|
|
{
|
|
obj_id[] mites = new obj_id[ 1 ];
|
|
mites[0] = mite;
|
|
setObjVar( player, "miteReg", mites ); // Suppress linting - This array is fixed at one element
|
|
return;
|
|
}
|
|
|
|
resizeable obj_id[] mites = getResizeableObjIdArrayObjVar( player, "miteReg" );
|
|
mites = utils.addElement( mites, mite );
|
|
if(mites != null && mites.length > 0) { // Zero length array check
|
|
|
|
setObjVar( player, "miteReg", mites );
|
|
}
|
|
}
|
|
|
|
void killAllMites( obj_id player )
|
|
{
|
|
obj_id[] mites = getObjIdArrayObjVar( player, "miteReg" );
|
|
for ( int i=0; i < mites.length; i++ )
|
|
{
|
|
destroyObject( mites[i] );
|
|
}
|
|
removeObjVar( player, "miteReg" );
|
|
}
|
|
|