예제 #1
0
 public override void OnEvent(BurnTree evnt)
 {
     if (evnt.Entity && evnt.Entity.isOwner)
     {
         ITreeCutState state = evnt.Entity.GetState <ITreeCutState>();
         state.Burning = evnt.IsBurning;
         evnt.Entity.Freeze(false);
     }
 }
예제 #2
0
 public override void OnEvent(DamageTree evnt)
 {
     if (evnt.TreeEntity)
     {
         ITreeCutState state = evnt.TreeEntity.GetState <ITreeCutState>();
         int           num   = Mathf.Max(1, evnt.Damage);
         state.Damage += num;
         this.UpdateChunks(state, evnt.DamageIndex, num);
     }
 }
예제 #3
0
    private void UpdateChunks(ITreeCutState state, int chunk, int damage)
    {
        int num = 10;

        while (damage > 0 && --num >= 0)
        {
            switch (chunk)
            {
            case 1:
                if (state.Chunk1 < 4)
                {
                    state.Chunk1++;
                    damage--;
                }
                else
                {
                    chunk = 2;
                }
                break;

            case 2:
                if (state.Chunk2 < 4)
                {
                    damage--;
                    state.Chunk2++;
                }
                else
                {
                    chunk = 3;
                }
                break;

            case 3:
                if (state.Chunk3 < 4)
                {
                    damage--;
                    state.Chunk3++;
                }
                else
                {
                    chunk = 4;
                }
                break;

            case 4:
                if (state.Chunk4 < 4)
                {
                    damage--;
                    state.Chunk4++;
                }
                break;
            }
        }
    }
예제 #4
0
 private void Explosion(float dist)
 {
     if (!this.Exploded)
     {
         if (BoltNetwork.isRunning)
         {
             if (this.LodTree)
             {
                 BoltEntity component = this.LodTree.GetComponent <BoltEntity>();
                 if (component.isAttached)
                 {
                     this.Exploded = true;
                     if (component.isOwner)
                     {
                         if (component.canFreeze)
                         {
                             component.Freeze(false);
                         }
                         ITreeCutState state = component.GetState <ITreeCutState>();
                         if (state.State == 0)
                         {
                             state.State = 1;
                         }
                         state.Damage = 16;
                     }
                     else
                     {
                         DestroyTree destroyTree = DestroyTree.Create(GlobalTargets.OnlyServer);
                         destroyTree.Tree = component;
                         destroyTree.Send();
                     }
                 }
             }
         }
         else
         {
             this.Exploded = true;
             if (this.SpawnedCutTree)
             {
                 this.DoFallTreeExplosion();
             }
             else
             {
                 this.CutDownExplosion();
             }
         }
     }
 }
예제 #5
0
    public override void OnEvent(DestroyTree evnt)
    {
        BoltEntity tree = evnt.Tree;

        if (tree && tree.isAttached)
        {
            if (tree.canFreeze)
            {
                tree.Freeze(false);
            }
            ITreeCutState state = tree.GetState <ITreeCutState>();
            if (state.State == 0)
            {
                state.State = 1;
            }
            state.Damage = 16;
        }
    }
예제 #6
0
 private void UpdateChunks(ITreeCutState state, int chunk, int damage)
 {
     int num = 10;
     while (damage > 0 && --num >= 0)
     {
         switch (chunk)
         {
         case 1:
             if (state.Chunk1 < 4)
             {
                 state.Chunk1++;
                 damage--;
             }
             else
             {
                 chunk = 2;
             }
             break;
         case 2:
             if (state.Chunk2 < 4)
             {
                 damage--;
                 state.Chunk2++;
             }
             else
             {
                 chunk = 3;
             }
             break;
         case 3:
             if (state.Chunk3 < 4)
             {
                 damage--;
                 state.Chunk3++;
             }
             else
             {
                 chunk = 4;
             }
             break;
         case 4:
             if (state.Chunk4 < 4)
             {
                 damage--;
                 state.Chunk4++;
             }
             break;
         }
     }
 }