void Start() { RaycastHit hitData; traceFX.SetPosition(0, transform.position); if (Physics.Linecast(transform.position, transform.position + transform.forward * 10000, out hitData, hitMask)) { Instantiate(impactFX, hitData.point, Quaternion.LookRotation(hitData.normal)); traceFX.SetPosition(1, hitData.point); DamageModule dmgmodule = hitData.transform.root.GetComponent <DamageModule> (); if (dmgmodule != null) { dmgmodule.TakeDamage("Generic", damage); } } else { traceFX.SetPosition(1, transform.position + transform.forward * 10000); } currentTraceWidth = defaultTraceWidth; }
/// <summary> /// Recharges our Shield by the amount in our ShieldData. /// Clamped to the max health value. /// </summary> public void Recharge() { // Works out how much shield strength we can recharge so that our shield does not exceed it's maximum float amountToHeal = MathHelper.Clamp(DamageModule.Health + ShieldData.ShieldRechargePerTurn, 0, ShieldData.MaxShieldStrength); // Heal the shield by damaging a negative amount DamageModule.Damage(-ShieldData.ShieldRechargePerTurn, null); }
public void AddModulesToShip(IShip ship, int numMods, CargoSynchronizer cargoSynchronizer, LocalIDManager galaxyIDManager) { for (int i = 0; i < numMods; i++) { Module m = null; int moduleID = galaxyIDManager.PopFreeID(); byte level = (byte)Rand.Random.Next(1, 4); int modnum = Rand.Random.Next(1, 11); { switch (modnum) { case 1: m = new EnergyRegenModule(moduleID, level); break; case 2: m = new ThrustModule(moduleID, level); break; case 3: m = new MaxShieldModule(moduleID, level); break; case 4: m = new ShieldRegenModule(moduleID, level); break; case 5: m = new MaxEnergyModule(moduleID, level); break; case 6: m = new DamageModule(moduleID, level); break; case 7: m = new DefenseModule(moduleID, level); break; case 8: m = new TurnRateModule(moduleID, level); break; case 9: m = new LateralThrustModule(moduleID, level); break; case 10: m = new TopSpeedModule(moduleID, level); break; } } TransactionAddStatefulCargo str = new TransactionAddStatefulCargo(ship, m, true); str.OnCompletion += ship.CargoAdded; cargoSynchronizer.RequestTransaction(str); } }
void OnTriggerEnter(Collider col) { DamageModule dmgmodule = col.transform.root.GetComponent <DamageModule>(); if (dmgmodule != null) { dmgmodule.TakeDamage("Generic", damage); } }
void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Enemy" && rb.velocity.magnitude > 4) { DamageModule dmod = collision.transform.root.GetComponent <DamageModule> (); Debug.Log(dmod); dmod.TakeDamage("Generic", massDamage); Debug.Log(dmod.currentHealth()); } }
// Use this for initialization void Start() { damageModule = GetComponent<DamageModule>(); missileNavigator = GetComponent<MissileNavigator>(); }
public static Module InstantiateModule(CargoModuleData data) { Module retModule = null; int id = data.Id; byte level = data.Level; switch (data.ModuleType) { case ModuleTypes.EnergyRegenModule: { retModule = new EnergyRegenModule(id, level); break; } case ModuleTypes.MaxEnergyModule: { retModule = new MaxEnergyModule(id, level); break; } case ModuleTypes.MaxShieldModule: { retModule = new MaxShieldModule(id, level); break; } case ModuleTypes.ShieldRegenModule: { retModule = new ShieldRegenModule(id, level); break; } case ModuleTypes.ThrustModule: { retModule = new ThrustModule(id, level); break; } case ModuleTypes.DamageModule: { retModule = new DamageModule(id, level); break; } case ModuleTypes.DefenseModule: { retModule = new DefenseModule(id, level); break; } case ModuleTypes.TurnRateModule: { retModule = new TurnRateModule(id, level); break; } case ModuleTypes.LateralThrustModule: { retModule = new LateralThrustModule(id, level); break; } case ModuleTypes.TopSpeedModule: { retModule = new TopSpeedModule(id, level); break; } default: throw new NotImplementedException("Module type not implemented in MessageReader.ReadModule"); } return(retModule); }