Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ServerRPG
- {
- function treeGunProjectile::onCollision(%this, %obj, %col, %fade, %pos, %normal, %velocity)
- {
- if(%col.getClassName() $= "fxDTSBrick")
- {
- //Get client
- %client = %obj.client;
- if(%client.isAdmin)
- {
- //Tree details
- %trunkColorID = getRandom(59, 61);
- %leafColorID = $RPG::treeColor[getRandom(0,10)];
- %pinkColorID = 10;
- %angleID = getRandom(0,3);
- %isDeadTreeChance = getRandom(0,100);
- %isDead = false;
- %trunkDatablock = $RPG::treeTrunk[getRandom(0,2)];
- %leafID = getRandom(0,7);
- %leafDatablock = $RPG::treeLeafs[%leafID];
- %pinkHeight = 1;
- switch(%leafID)
- {
- case 0:
- %pinkHeight = 5;
- case 1:
- %pinkHeight = 5;
- case 2:
- %pinkHeight = 5;
- case 3:
- %pinkHeight = 5;
- case 4:
- %pinkHeight = 7;
- case 5:
- %pinkHeight = 5;
- case 6:
- %pinkHeight = 6;
- case 7:
- %pinkHeight = 6;
- }
- //Is it a dead tree?
- if(%isDeadTreeChance > 80)
- %isDead = true;
- %validModTer = false;
- %isRamp = true;
- for(%i = 0; %i < 9 && !%validModTer; %i++)
- {
- if(%col.getDatablock().getName() $= $RPG::validModTer[%i])
- {
- %validModTer = true;
- if(%i == 0 || %i == 1 || %i == 8)
- %isRamp = false;
- }
- }
- if(%validModTer)
- {
- //Check tree overlap
- %adjustPos = "0 0 " @ %trunkDatablock.brickSizeZ * 0.1;
- if(%isRamp)
- {
- %adjustPos = "0 0 " @ %trunkDatablock.brickSizeZ * 0.1 - 1;
- %px = getWord(%pos, 0);
- %py = getWord(%pos, 1);
- %pz = getWord(%pos, 2);
- %pz = mFloor(%pz*10);
- if(%pz & 1)
- %pz-=1;
- %pz/=10;
- %pos = %px SPC %py SPC %pz;
- }
- %newPos = vectorAdd(%pos, %adjustPos);
- %newBrick = createBrick(%client, %trunkDatablock, %newPos, %trunkColorID, %angleID);
- %err = getField(%newBrick, 1);
- %brick = getField(%newBrick, 0);
- if(%err == 0 || %err == 2)
- {
- %brickList = %brick;
- %newPos = vectorAdd(%newPos, "0 0 " @ %trunkDatablock.brickSizeZ * 0.1);
- %newBrick = createBrick(%client, %leafDatablock, %newPos, %leafColorID, %angleID);
- %err = getField(%newBrick, 1);
- %brick = getField(%newBrick, 0);
- if(%err == 0 || %err == 2)
- %brickList = %brickList SPC %brick;
- else
- %brick.delete();
- %newPos = vectorAdd(%newPos, "0 0 " @ -0.8);
- for(%i = 0; %i < %pinkHeight; %i++)
- {
- %newPos = vectorAdd(%newPos, "0 0 " @ brick4xCubeData.brickSizeZ * 0.2);
- %newBrick = createBrick(%client, "brick4xCubeData", %newPos, 10, 0);
- %err = getField(%newBrick, 1);
- %brick = getField(%newBrick, 0);
- %brick.setRendering(0);
- if(%err == 0 || %err == 2)
- %brickList = %brickList SPC %brick;
- else
- %brick.delete();
- }
- if(isObject(%brick))
- %client.undoStack.push(0 TAB "GROUP_PLANT" TAB %brickList);
- }
- else
- %brick.delete();
- }
- }
- }
- return parent::onCollision(%this, %obj, %col, %fade, %pos, %normal, %velocity);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement