Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.71 KB | None | 0 0
  1. package ServerRPG
  2. {
  3.     function treeGunProjectile::onCollision(%this, %obj, %col, %fade, %pos, %normal, %velocity)
  4.     {
  5.         if(%col.getClassName() $= "fxDTSBrick")
  6.         {
  7.             //Get client
  8.             %client = %obj.client;
  9.  
  10.             if(%client.isAdmin)
  11.             {
  12.                 //Tree details
  13.                 %trunkColorID = getRandom(59, 61);
  14.                 %leafColorID = $RPG::treeColor[getRandom(0,10)];
  15.                 %pinkColorID = 10;
  16.                 %angleID = getRandom(0,3);
  17.                 %isDeadTreeChance = getRandom(0,100);
  18.                 %isDead = false;
  19.                 %trunkDatablock = $RPG::treeTrunk[getRandom(0,2)];
  20.                 %leafID = getRandom(0,7);
  21.                 %leafDatablock = $RPG::treeLeafs[%leafID];
  22.  
  23.                 %pinkHeight = 1;
  24.                 switch(%leafID)
  25.                 {
  26.                     case 0:
  27.                         %pinkHeight = 5;
  28.                     case 1:
  29.                         %pinkHeight = 5;
  30.                     case 2:
  31.                         %pinkHeight = 5;
  32.                     case 3:
  33.                         %pinkHeight = 5;
  34.                     case 4:
  35.                         %pinkHeight = 7;
  36.                     case 5:
  37.                         %pinkHeight = 5;
  38.                     case 6:
  39.                         %pinkHeight = 6;
  40.                     case 7:
  41.                         %pinkHeight = 6;
  42.                 }
  43.  
  44.                 //Is it a dead tree?
  45.                 if(%isDeadTreeChance > 80)
  46.                     %isDead = true;
  47.  
  48.                 %validModTer = false;
  49.                 %isRamp = true;
  50.                 for(%i = 0; %i < 9 && !%validModTer; %i++)
  51.                 {
  52.                     if(%col.getDatablock().getName() $= $RPG::validModTer[%i])
  53.                     {
  54.                         %validModTer = true;
  55.                         if(%i == 0 || %i == 1 || %i == 8)
  56.                             %isRamp = false;
  57.                     }
  58.                 }
  59.  
  60.                 if(%validModTer)
  61.                 {
  62.                     //Check tree overlap
  63.                     %adjustPos = "0 0 " @ %trunkDatablock.brickSizeZ * 0.1;
  64.                     if(%isRamp)
  65.                     {
  66.                         %adjustPos = "0 0 " @ %trunkDatablock.brickSizeZ * 0.1 - 1;
  67.                         %px = getWord(%pos, 0);
  68.                         %py = getWord(%pos, 1);
  69.                         %pz = getWord(%pos, 2);
  70.  
  71.                         %pz = mFloor(%pz*10);
  72.                         if(%pz & 1)
  73.                             %pz-=1;
  74.                         %pz/=10;
  75.                         %pos = %px SPC %py SPC %pz;
  76.                     }
  77.                    
  78.                     %newPos = vectorAdd(%pos, %adjustPos);
  79.  
  80.                     %newBrick = createBrick(%client, %trunkDatablock, %newPos, %trunkColorID, %angleID);
  81.                     %err = getField(%newBrick, 1);
  82.                     %brick = getField(%newBrick, 0);
  83.                     if(%err == 0 || %err == 2)
  84.                     {
  85.                         %brickList = %brick;
  86.                         %newPos = vectorAdd(%newPos, "0 0 " @ %trunkDatablock.brickSizeZ * 0.1);
  87.                         %newBrick = createBrick(%client, %leafDatablock, %newPos, %leafColorID, %angleID);
  88.                         %err = getField(%newBrick, 1);
  89.                         %brick = getField(%newBrick, 0);
  90.                         if(%err == 0 || %err == 2)
  91.                             %brickList = %brickList SPC %brick;
  92.                         else
  93.                             %brick.delete();
  94.  
  95.                         %newPos = vectorAdd(%newPos, "0 0 " @ -0.8);
  96.                         for(%i = 0; %i < %pinkHeight; %i++)
  97.                         {
  98.                             %newPos = vectorAdd(%newPos, "0 0 " @ brick4xCubeData.brickSizeZ * 0.2);
  99.                             %newBrick = createBrick(%client, "brick4xCubeData", %newPos, 10, 0);
  100.                             %err = getField(%newBrick, 1);
  101.                             %brick = getField(%newBrick, 0);
  102.                             %brick.setRendering(0);
  103.  
  104.                             if(%err == 0 || %err == 2)
  105.                                 %brickList = %brickList SPC %brick;
  106.                             else
  107.                                 %brick.delete();
  108.                         }
  109.  
  110.                         if(isObject(%brick))
  111.                             %client.undoStack.push(0 TAB "GROUP_PLANT" TAB %brickList);
  112.                     }
  113.                     else
  114.                         %brick.delete();                    
  115.                 }
  116.             }  
  117.         }
  118.         return parent::onCollision(%this, %obj, %col, %fade, %pos, %normal, %velocity);
  119.     }
  120. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement