Okay.
function serverCmdKillBrick(%client){
if(!%KillBrick){
%client.KillBrick = 1;
messageclient(%client,"","Wand now in Kill Brick Mode");
%client.ImpulseBrick = 0;
}
}
function serverCmdImpulseBrick(%client){
if(!%ImpulseBrick){
%client.ImpulseBrick = 1;
messageclient(%client,"","Wand now in Impulse Brick mode");
%client.KillBrick = 0;
}
}
datablock ProjectileData(BrickPropProjectile : WandProjectile){
className = "ProjectileData";
};
datablock ItemData(BrickPropItem: WandItem){
// Mission editor category
category = "Tools";
//gui stuff
uiName = "BrickProp";
// Dynamic properties defined by the scripts
image = BrickPropImage;
colorShiftColor = "1 0 0 1";
};
datablock ShapeBaseImageData(BrickPropImage : WandImage){
// Projectile && Ammo.
item = "BrickPropItem";
projectile = "BrickPropProjectile";
colorShiftColor = "1 0 0 1";
};
function BrickPropProjectile::onCollision(%this, %obj, %col, %fade, %pos, %normal){
if(%client.KillBrick){
%triggerX = %col.dataBlock.brickSizeX/2;
%triggerY = %col.dataBlock.brickSizeY/2;
%triggerZ = %col.dataBlock.brickSizeZ*0.2;
%triggerZ = %TriggerZ + 0.1;
%triggerY = %TriggerY + 0.1;
%triggerX = %TriggerX + 0.1;
if(%col.angleid == 2){
%newpos = getWord(%col.getTransform(),0) + %triggerX/2 SPC getWord(%col.getTransform(),1) - %triggerY/2 SPC getWord(%col.getTransform(),2);
%newrot = %col.rotation;
}
if(%col.angleid == 0){
%triggerXnew = %triggerX/2;
%triggerYnew = %triggerY/2;
%newpos = getWord(%col.getTransform(),0) - %triggerXnew SPC getWord(%col.getTransform(),1) + %triggerYnew SPC getWord(%col.getTransform(),2);
%newrot = %col.rotation;
}
if(%col.angleid == 1){
%triggerYsq = %triggerX/2;
%triggerYsq = %triggerYsq - %triggerYsq*2;
%triggerXsq = %triggerY/2;
%triggerXsq = %triggerXsq - %triggerXsq*2;
%newrot = %col.rotation;
%newpos = getWord(%col.getTransform(),0) - %TriggerXsq SPC getWord(%col.getTransform(),1) - %triggerYsq SPC getWord(%col.getTransform(),2);
}
if(%col.angleid == 3){
%triggerXsq = %triggerY/2;
%triggerYsq = %triggerX/2;
%newrot = %col.rotation;
%newpos = getWord(%col.getTransform(),0) - %TriggerXsq SPC getWord(%col.getTransform(),1) - %triggerYsq SPC getWord(%col.getTransform(),2);
}
%trigger = new Trigger() {
position = %newpos;
rotation = %newrot;
scale = "1 1 1.2";
dataBlock = KillBTrigger;
polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
};
%trigger.setScale(%triggerX SPC %triggerY SPC %triggerZ);
} else if(%client.ImpulseBrick){
%triggerX = %col.dataBlock.brickSizeX/2;
%triggerY = %col.dataBlock.brickSizeY/2;
%triggerZ = %col.dataBlock.brickSizeZ*0.2;
%triggerZ = %TriggerZ + 0.1;
%triggerY = %TriggerY + 0.1;
%triggerX = %TriggerX + 0.1;
if(%col.angleid == 2){
%newpos = getWord(%col.getTransform(),0) + %triggerX/2 SPC getWord(%col.getTransform(),1) - %triggerY/2 SPC getWord(%col.getTransform(),2);
%newrot = %col.rotation;
}
if(%col.angleid == 0){
%triggerXnew = %triggerX/2;
%triggerYnew = %triggerY/2;
%newpos = getWord(%col.getTransform(),0) - %triggerXnew SPC getWord(%col.getTransform(),1) + %triggerYnew SPC getWord(%col.getTransform(),2);
%newrot = %col.rotation;
}
if(%col.angleid == 1){
%triggerYsq = %triggerX/2;
%triggerYsq = %triggerYsq - %triggerYsq*2;
%triggerXsq = %triggerY/2;
%triggerXsq = %triggerXsq - %triggerXsq*2;
%newrot = %col.rotation;
%newpos = getWord(%col.getTransform(),0) - %TriggerXsq SPC getWord(%col.getTransform(),1) - %triggerYsq SPC getWord(%col.getTransform(),2);
}
if(%col.angleid == 3){
%triggerXsq = %triggerY/2;
%triggerYsq = %triggerX/2;
%newrot = %col.rotation;
%newpos = getWord(%col.getTransform(),0) - %TriggerXsq SPC getWord(%col.getTransform(),1) - %triggerYsq SPC getWord(%col.getTransform(),2);
}
%trigger = new Trigger() {
position = %newpos;
rotation = %newrot;
scale = "1 1 1.2";
dataBlock = ImpulseBTrigger;
polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000";
};
%trigger.setScale(%triggerX SPC %triggerY SPC %triggerZ);
}
datablock TriggerData(KillBTrigger)
{
tickPeriodMS = 100;
};
function KillBTrigger::onEnterTrigger(%this,%trigger,%obj){
%obj.kill();
}
datablock TriggerData(ImpulseBTrigger)
{
tickPeriodMS = 100;
};
function ImpulseBTrigger::onEnterTrigger(%this,%trigger,%obj){
%obj.impulse = 1000;
}