public override void Use(ICombatActor source) { this.source = source; this.source.GetShip.Energy.RemoveEnergyBuf(ID); if (this.toggled) { this.source.SendServiceMessage(ServiceMessageType.Info, "TOGGLE OFF"); Release(); } else { if (UseAllowed()) { this.toggled = true; this.source.GetShip.GetBonuses() .GetBonus(BonusType.increaseDamage) .ReplaceBuff(this.source.Avatar.Id + ID, new Buff(effect, () => this.toggled)); this.source.GetShip.Energy.SetEnergyBuf(ID, -_energy); this.StartClientEvent(this.source, new Hashtable() { { GenericEventProps.status, this.toggled } }); this.source.SendServiceMessage(ServiceMessageType.Info, "TOGGLE ON"); } else { this.source.SendServiceMessage(ServiceMessageType.Warning, GetServiceMessage()); } } }
public override void Use(ICombatActor source) { this.source = source; source.GetShip.Energy.RemoveEnergyBuf(ID); if (toggled) { Release(); return; } else { if (ready) { if (!source.ShipDestroyed) { if (source.GetShip.Energy.MaxEnergy > _energy) { if (source.GetTarget.TargetIsICombatActor(out target)) { toggled = true; target.GetShip.GetBonuses().GetBonus(BonusType.decreaseRange).ReplaceBuff(source.Avatar.Id + ID, new Buff(effect, () => toggled)); source.GetShip.Energy.SetEnergyBuf(ID, -_energy); this.StartClientEvent(this.source, new Hashtable() { { GenericEventProps.status, this.toggled } }); } } } } } }
public virtual void StartClientEvent(ICombatActor actor, Hashtable additionalInfo) { Hashtable data = new Hashtable { { SkillProp.SKILL_ID, this.ID }, { SkillProp.COOLDOWN, _cooldown }, { SkillProp.ACTIVE_TIME, active_time }, { SkillProp.SOURCE_ACTOR_ID, actor.Avatar.Id }, { SkillProp.TARGET_ACTOR_ID, actor.GetTarget.TargetId }, { SkillProp.ACTOR_TYPE, actor.Avatar.Type }, { SkillProp.TARGET_TYPE, actor.GetTarget.Type }, { SkillProp.ADDITIONAL_INFO, (additionalInfo != null) ? additionalInfo : new Hashtable() }, { SkillProp.RETURN_CODE, (byte)ReturnCode.Ok } }; SendParameters sendParameters = new SendParameters { Unreliable = true, ChannelId = Settings.ItemEventChannel }; UseSkillEventData evtInstance = new UseSkillEventData { Properties = data }; EventData eventData = new EventData((byte)EventCode.UseSkill, evtInstance); var message = new ItemEventMessage(actor.Avatar, eventData, sendParameters); ((MmoItem)actor.Avatar).ReceiveEvent(eventData, sendParameters); actor.Avatar.EventChannel.Publish(message); }
public override void Use(ICombatActor actor) { if (ready) { if (!actor.ShipDestroyed) { ICombatActor targetActor = null; if (actor.GetTarget.TargetIsICombatActor(out targetActor)) { if (actor.GetShip.Energy.EnoughAdd(_energy)) { UseTimeUpdate(); targetActor.GetShip.GetBonuses().GetBonus(BonusType.increaseCooldown).ReplaceBuff(actor.Avatar.Id + ID, new Buff(effect, () => { return(active); })); StartClientEvent(actor, new Hashtable()); } else { SendClientErrorEvent(actor, ReturnCode.Fatal, string.Format("source has {0} energy but need: {1}", actor.GetShip.Energy.Energy, _energy)); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Target not valid"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Actor ship destroyed"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Skill not ready"); } }
public override void Use(ICombatActor actor) { if (ready) { if (actor.ShipDestroyed == false) { if (actor.GetShip.Energy.EnoughAdd(_energy)) { UseTimeUpdate(); actor.GetShip.GetBonuses().GetBonus(BonusType.increaseDamage).ReplaceBuff(ID, new Buff(effect, () => { return(active); })); StartClientEvent(actor, new Hashtable()); } else { SendClientErrorEvent(actor, ReturnCode.Fatal, string.Format("source has {0} energy but need: {1}", actor.GetShip.Energy.Energy, _energy)); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Actor ship destroyed"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Skill not ready"); } }
public override void updateCooldown(ICombatActor actor) { if (actor != null) { _cooldown = actor.GetShip.GetWeapon.Cooldown * 0.5f; } else { ConsoleLogging.Get.Print("actor null in skill"); } }
public PlayerSkills(ICombatActor actor) { _owner = actor; useSkills = new List <UseSkill>(); for (int i = 0; i < 6; i++) { useSkills.Add(new EmptySkill()); } //test //Parce(); // }
public override void Release() { target = null; toggled = false; if (source != null) { source.GetShip.Energy.RemoveEnergyBuf(ID); this.StartClientEvent(this.source, new Hashtable() { { GenericEventProps.status, this.toggled } }); } }
public override void Use(ICombatActor actor) { if (ready) { if (actor.ShipDestroyed == false) { ICombatActor targetActor; if (actor.GetTarget.TargetIsICombatActor(out targetActor)) { if (actor.GetShip.Energy.EnoughAdd(_energy)) { UseTimeUpdate(); bool isHitted = actor.GetShip.GetWeapon.TryHit(); float actualDamage = 0; if (isHitted) { float damage = actor.GetMyWeaponDamage() * effect; actualDamage = targetActor.ApplyDamageToMe(actor.Avatar.Type, actor.Avatar.Id, damage); //actor.ApplyDamageToMe(actualDamage * 0.1f); } StartClientEvent(actor, new Hashtable() { { GenericEventProps.IsHItted, isHitted }, { GenericEventProps.actual_damage, actualDamage } }); } else { SendClientErrorEvent(actor, ReturnCode.Fatal, string.Format("source has {0} energy but need: {1}", actor.GetShip.Energy.Energy, _energy)); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Target not valid"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Actor ship destroyed"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Skill not ready"); } }
public override void Use(ICombatActor actor) { if (ready && (actor.ShipDestroyed == false)) { if (actor.GetShip.Energy.EnoughAdd(_energy)) { UseTimeUpdate(); StartClientEvent(actor, new Hashtable()); } else { SendClientErrorEvent(actor, ReturnCode.Fatal, string.Format("source has {0} energy but need: {1}", actor.GetShip.Energy.Energy, _energy)); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Skill not ready or actor ship destroyed"); } }
public override void Use(ICombatActor actor) { if (ready) { if (!actor.ShipDestroyed) { if (actor.GetShip.Energy.EnoughAdd(_energy)) { UseTimeUpdate(); /* * actor.GetShip.GetBonuses().GetBonus(BonusType.decreaseCooldown).ReplaceBuff(ID + actor.Avatar.Id, new Buff(effect, () => * { * return active; * })); * actor.GetShip.GetBonuses().GetBonus(BonusType.decreaseResists).ReplaceBuff(ID + actor.Avatar.Id, new Buff(0.5f, () => * { * return active; * }));*/ actor.GetShip.GetBonuses().GetBonus(BonusType.decreaseCooldown).ReplaceBuff(ID + actor.Avatar.Id, new Buff(effect, () => { return(active); })); actor.GetShip.GetBonuses().GetBonus(BonusType.decreasePrecision).ReplaceBuff(ID + actor.Avatar.Id, new Buff(0.3f, () => { return(active); })); StartClientEvent(actor, new Hashtable()); } else { SendClientErrorEvent(actor, ReturnCode.Fatal, string.Format("source has {0} energy but need: {1}", actor.GetShip.Energy.Energy, _energy)); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Actor ship destroyed"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Skill not ready"); } }
public override void Use(ICombatActor actor) { this.actor = actor; actor.GetShip.Energy.RemoveEnergyBuf(ID); if (toggled) { toggled = false; target = null; this.StartClientEvent(this.actor, new Hashtable() { { GenericEventProps.status, this.toggled } }); return; } else { if (ready) { if (!actor.ShipDestroyed) { if (actor.GetShip.Energy.MaxEnergy > _energy) { if (actor.GetTarget.TargetIsICombatActor(out target)) { ConsoleLogging.Get.Print("Apply SK0121 to obj {0}", (ItemType)target.Avatar.Type); toggled = true; target.GetShip.GetBonuses().GetBonus(BonusType.increaseCooldown).ReplaceBuff(actor.Avatar.Id + ID, new Buff(effect, () => { return(toggled); })); actor.GetShip.Energy.SetEnergyBuf(ID, -_energy); this.StartClientEvent(this.actor, new Hashtable() { { GenericEventProps.status, this.toggled } }); } } } } } }
public override void Use(ICombatActor actor) { if (ready) { if (actor.ShipDestroyed == false) { ICombatActor target = null; if (actor.GetTarget.TargetIsICombatActor(out target)) { if (actor.GetShip.Energy.EnoughAdd(_energy)) { UseTimeUpdate(); ConsoleLogging.Get.Print("apply bonus from {0} to {1}", actor.Avatar.Id, target.Avatar.Id); target.GetShip.GetBonuses().GetBonus(BonusType.decreasePrecision).ReplaceBuff(actor.Avatar.Id + ID, new Buff(effect, () => { return(active); })); StartClientEvent(actor, new Hashtable()); } else { SendClientErrorEvent(actor, ReturnCode.Fatal, string.Format("source has {0} energy but need: {1}", actor.GetShip.Energy.Energy, _energy)); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Target not valid"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Actor ship destroyed"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Skill not ready"); } }
public void SendClientErrorEvent(ICombatActor actor, ReturnCode code, string reason) { Hashtable data = new Hashtable { { SkillProp.RETURN_CODE, (byte)code }, { SkillProp.REASON_MESSAGE, reason } }; SendParameters sendParameters = new SendParameters { Unreliable = true, ChannelId = Settings.ItemEventChannel }; UseSkillEventData evtInstance = new UseSkillEventData { Properties = data }; EventData eventData = new EventData((byte)EventCode.UseSkill, evtInstance); var message = new ItemEventMessage(actor.Avatar, eventData, sendParameters); ((MmoItem)actor.Avatar).ReceiveEvent(eventData, sendParameters); actor.Avatar.EventChannel.Publish(message); }
public override void Use(ICombatActor actor) { if (ready) { if (!actor.ShipDestroyed) { if (actor.GetShip.Energy.EnoughAdd(_energy)) { UseTimeUpdate(); //apply overheating status for player actor.ApplyOverheatingGun(); //add such bonus to player with effect actor.GetShip.GetBonuses().GetBonus(BonusType.overheatingGuns).ReplaceBuff(ID, new Buff(effect, () => { return(actor.GetOverheatingStatus()); })); StartClientEvent(actor, new Hashtable()); } else { SendClientErrorEvent(actor, ReturnCode.Fatal, string.Format("source has {0} energy but need: {1}", actor.GetShip.Energy.Energy, _energy)); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Actor ship destroyed"); } } else { SendClientErrorEvent(actor, ReturnCode.Fatal, "Skill not ready"); } }
public StandardAttackOperation(ICombatActor hunter, ICombatActor prey) : base(hunter, prey) { }
protected BaseAttackOperation(ICombatActor hunter, ICombatActor prey) { Attacker = hunter; Target = prey; }
public virtual void updateCooldown(ICombatActor actor) { }
public override void Use(ICombatActor actor) { //Debug.Log("use Empty skill "); }
public abstract void Use(ICombatActor item);