public string use(WeaponTypes type, Projector target, Range firingRange) { if (isWaitingForLoad) { return(null); } lock (validWeapons) { if (target != null && target.isLanded() && target.Equals(Mission.player)) { return(null); } //don't let fire at player if player on ground if (type == WeaponTypes.landingBeaconLock) { return(null); } WeaponBase e = null; int c = 0; String p = null; bool first = true; do { if (c > 0 && !muted) //Only guns will increase c { setStrafe(true); //Object may fire a few more rounds before it is suspended so don't restart strafe sound. } e = createNewWeapon(type, target, firingRange); if (e == null) { setStrafe(false); //turn off strafing in case player ran out of ammo. return(null); } if (first) { p = initializeWeapon(e); } if (weaponIndex != WeaponTypes.guns) { return(p); } first = false; } while (++c <= 10); return(p); } //lock }