[Change] Fewer explosions with beam weapons.
This commit is contained in:
		
							parent
							
								
									55bb07c560
								
							
						
					
					
						commit
						f2144b1053
					
				
							
								
								
									
										34
									
								
								src/weapon.c
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								src/weapon.c
									
									
									
									
									
								
							@ -297,13 +297,27 @@ static void weapons_updateLayer(const double dt, const WeaponLayer layer) {
 | 
				
			|||||||
    case OUTFIT_TYPE_BOLT:
 | 
					    case OUTFIT_TYPE_BOLT:
 | 
				
			||||||
    case OUTFIT_TYPE_TURRET_BOLT:
 | 
					    case OUTFIT_TYPE_TURRET_BOLT:
 | 
				
			||||||
    case OUTFIT_TYPE_MISSILE_DUMB_AMMO: /* Dumb missiles are like bolts. */
 | 
					    case OUTFIT_TYPE_MISSILE_DUMB_AMMO: /* Dumb missiles are like bolts. */
 | 
				
			||||||
    case OUTFIT_TYPE_BEAM: /* Timer usage is actually more complicated for beams.. */
 | 
					      wlayer[i]->timer -= dt;
 | 
				
			||||||
 | 
					      if(wlayer[i]->timer < 0.) {
 | 
				
			||||||
 | 
					        weapon_destroy(wlayer[i], layer);
 | 
				
			||||||
 | 
					        continue;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    /* Beam weapons handled apart. */
 | 
				
			||||||
 | 
					    case OUTFIT_TYPE_BEAM:
 | 
				
			||||||
    case OUTFIT_TYPE_TURRET_BEAM:
 | 
					    case OUTFIT_TYPE_TURRET_BEAM:
 | 
				
			||||||
      wlayer[i]->timer -= dt;
 | 
					      wlayer[i]->timer -= dt;
 | 
				
			||||||
      if(wlayer[i]->timer < 0.) {
 | 
					      if(wlayer[i]->timer < 0.) {
 | 
				
			||||||
        weapon_destroy(wlayer[i],layer);
 | 
					        weapon_destroy(wlayer[i],layer);
 | 
				
			||||||
        continue;
 | 
					        continue;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      wlayer[i]->lockon -= dt;
 | 
				
			||||||
 | 
					      if(wlayer[i]->lockon < 0.) {
 | 
				
			||||||
 | 
					        if(wlayer[i]->lockon < -1.)
 | 
				
			||||||
 | 
					          wlayer[i]->lockon = 0.100;
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          wlayer[i]->lockon = -1.;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
      WARN("Weapon of type '%s' has no update implemented yet!",
 | 
					      WARN("Weapon of type '%s' has no update implemented yet!",
 | 
				
			||||||
@ -499,12 +513,14 @@ static void weapon_hitBeam(Weapon* w, Pilot* p, WeaponLayer layer,
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      ai_attacked(p, w->parent);
 | 
					      ai_attacked(p, w->parent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    spfx_add(outfit_spfx(w->outfit), pos[0].x, pos[0].y,
 | 
					    if(w->lockon == -1.) { /* Code to signal create explosions. */
 | 
				
			||||||
          VX(p->solid->vel), VY(p->solid->vel), SPFX_LAYER_BACK);
 | 
					      spfx_add(outfit_spfx(w->outfit), pos[0].x, pos[0].y,
 | 
				
			||||||
    spfx_add(outfit_spfx(w->outfit), pos[1].x, pos[1].y,
 | 
					            VX(p->solid->vel), VY(p->solid->vel), SPFX_LAYER_BACK);
 | 
				
			||||||
          VX(p->solid->vel), VY(p->solid->vel), SPFX_LAYER_BACK);
 | 
					      spfx_add(outfit_spfx(w->outfit), pos[1].x, pos[1].y,
 | 
				
			||||||
   
 | 
					            VX(p->solid->vel), VY(p->solid->vel), SPFX_LAYER_BACK);
 | 
				
			||||||
  } else {
 | 
					    }   
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else if(w->lockon == -1.) {
 | 
				
			||||||
    spfx_add(outfit_spfx(w->outfit), pos[0].x, pos[0].y,
 | 
					    spfx_add(outfit_spfx(w->outfit), pos[0].x, pos[0].y,
 | 
				
			||||||
        VX(p->solid->vel), VY(p->solid->vel), SPFX_LAYER_FRONT);
 | 
					        VX(p->solid->vel), VY(p->solid->vel), SPFX_LAYER_FRONT);
 | 
				
			||||||
    spfx_add(outfit_spfx(w->outfit), pos[1].x, pos[1].y,
 | 
					    spfx_add(outfit_spfx(w->outfit), pos[1].x, pos[1].y,
 | 
				
			||||||
@ -538,9 +554,7 @@ static Weapon* weapon_create(const Outfit* outfit, const double dir, const Vec2*
 | 
				
			|||||||
    /* Bolts treated together. */
 | 
					    /* Bolts treated together. */
 | 
				
			||||||
    case OUTFIT_TYPE_BOLT:
 | 
					    case OUTFIT_TYPE_BOLT:
 | 
				
			||||||
    case OUTFIT_TYPE_TURRET_BOLT:
 | 
					    case OUTFIT_TYPE_TURRET_BOLT:
 | 
				
			||||||
      /* Only difference is the direction of fire. */
 | 
					      if((outfit->type == OUTFIT_TYPE_TURRET_BEAM) && (w->parent != w->target)) {
 | 
				
			||||||
      if((outfit->type == OUTFIT_TYPE_TURRET_BOLT) && (w->parent != w->target) &&
 | 
					 | 
				
			||||||
          (w->target != 0)) { /* Must have a valid target. */
 | 
					 | 
				
			||||||
        pilot_target = pilot_get(w->target);
 | 
					        pilot_target = pilot_get(w->target);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Get the distance. */
 | 
					        /* Get the distance. */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user