public override bool activate(ObjectActor self, ObjectCombatable target, out string message) { //Debug.Log(energyCost); ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; if (targetActor != null) { Shield preexisting = target.gameObject.GetComponent <Shield>(); if (preexisting == null) { Shield effect = target.gameObject.AddComponent <Shield>(); effect.setup(targetActor, source, skillName, briefSkillDescription, duration, value); targetActor.applyNewEffect(effect); } else { preexisting.stack(); } } message = ""; return(false); }
public void setup( ObjectActor subject, ObjectInteractable source, string name, string desc, float duration, float value ) { this.subject = subject; // order passed in. this.source = source; skillName = name; briefSkillDescription = desc; this.duration = duration; this.value = value; setEnd(duration); obs1 = subject.gameObject.AddComponent <FloatAdjuster>(); obs1.setupObserver(subtractDamage); subject.piercingDamageSubscribe(obs1); obs2 = subject.gameObject.AddComponent <FloatAdjuster>(); obs2.setupObserver(subtractDamage); subject.bludgeoningDamageSubscribe(obs2); obs3 = subject.gameObject.AddComponent <FloatAdjuster>(); obs3.setupObserver(subtractDamage); subject.slashingDamageSubscribe(obs3); instanceList = new List <GameObject>(); }
public override bool activate(ObjectActor self, ObjectCombatable target, out string message) { ObjectActor targetActor = target as ObjectActor; ObjectInteractable source = self as ObjectInteractable; if (targetActor != null) { GrennsFire preexisting = target.gameObject.GetComponent <GrennsFire>(); if (preexisting == null) { GrennsFire grennsFire = target.gameObject.AddComponent <GrennsFire>(); grennsFire.setup(targetActor, source, skillName, briefSkillDescription, duration, DEGENSPEED); targetActor.applyNewEffect(grennsFire); targetActor.beginBurning(self); } else { preexisting.stack(); } } message = ""; return(false); }
private void Update() { //selection handler Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { Object ObjectHit = hit.collider.GetComponent <Object>(); ObjectInteractable interactableObjectHit = hit.collider.GetComponent <ObjectInteractable>(); ObjectCombatable CombatableObjectHit = hit.collider.GetComponent <ObjectCombatable>(); ObjectActor ActorObjectHit = hit.collider.GetComponent <ObjectActor>(); if ((interactableObjectHit != null) && !EventSystem.current.IsPointerOverGameObject()) { /* * Really need to start documenting this earlier in the process. * * * This bit is handling highlighting and dehighlighting as the mouse passes over something. */ if (interactableObjectHit != selectedObject) { if (highlightedObject == null) { interactableObjectHit.beingHighlighted(true); highlightedObject = interactableObjectHit; } else { highlightedObject.beingHighlighted(false); highlightedObject = interactableObjectHit; highlightedObject.beingHighlighted(true); } } /* * This handles the player's selection and reselection system. */ if (Input.GetMouseButtonDown(0)) { if (selectedObject != interactableObjectHit) { if (selectedObject != null) { selectedObject.beingSelected(false); } interactableObjectHit.beingSelected(true); selectedObject = interactableObjectHit; highlightedObject = null; string name = ObjectHit.name; if (ActorObjectHit != null) { TargetPanel.Instance.newActorTarget(ActorObjectHit, name); } else if (CombatableObjectHit != null) { TargetPanel.Instance.newCombatableTarget(CombatableObjectHit, name); } else { TargetPanel.Instance.newInteractableTarget(interactableObjectHit, name); } } } } else if (highlightedObject != null && (EventSystem.current.IsPointerOverGameObject() || hit.collider.tag == "Terrain")) { highlightedObject.beingHighlighted(false); highlightedObject = null; } //movement if (Input.GetMouseButton(0) && hit.collider.gameObject.tag == "Terrain" && !EventSystem.current.IsPointerOverGameObject() && !actorSelf.getDeathState() && !dragAndDrop) { navAgent.stoppingDistance = defaultStoppingDist; navAgent.SetDestination(hit.point); if (Input.GetButton("Shift")) { //MoveAction newAction = new MoveAction(hit.point); //ActionQueue.Instance.Enqueue(newAction); } } } else if (highlightedObject != null) { highlightedObject.beingHighlighted(false); highlightedObject = null; } PlayerHealthBar.value = actorSelf.getPercentHealth(); PlayerHealthNum.text = Mathf.Round(actorSelf.getCurrentHealth()).ToString(); PlayerEnergyBar.value = actorSelf.getPercentEnergy(); PlayerEnergyNum.text = Mathf.Round(actorSelf.getCurrentEnergy()).ToString(); if (actorSelf.getSkillActivating() && !lastUpdateActivationState) { PlayerProgressBar.setActive(true); PlayerProgressBar.setName(actorSelf.getNameOfSkillInProgress()); PlayerProgressBar.placeIcon(actorSelf.getReferenceToSkillInProgress()); } else if (actorSelf.getSkillActivating() && lastUpdateActivationState) { PlayerProgressBar.setPercent(actorSelf.getSkillProgress()); } else { PlayerProgressBar.removeIcon(); PlayerProgressBar.setActive(false); } lastUpdateActivationState = actorSelf.getSkillActivating(); if (Input.GetKeyDown(KeyCode.Alpha1)) { playerTriggerSkill(0); } else if (Input.GetKeyDown(KeyCode.Alpha2)) { playerTriggerSkill(1); } else if (Input.GetKeyDown(KeyCode.Alpha3)) { playerTriggerSkill(2); } else if (Input.GetKeyDown(KeyCode.Alpha4)) { playerTriggerSkill(3); } else if (Input.GetKeyDown(KeyCode.Alpha5)) { playerTriggerSkill(4); } else if (Input.GetKeyDown(KeyCode.Alpha6)) { playerTriggerSkill(5); } else if (Input.GetKeyDown(KeyCode.Alpha7)) { playerTriggerSkill(6); } else if (Input.GetKeyDown(KeyCode.Alpha8)) { playerTriggerSkill(7); } }
public override void end(ObjectActor subject) { subject.changeMaxEnergy(ENERGYLOSS); Destroy(this); }
public override void end(ObjectActor subject) { subject.moveSpeedChangeValue(speedChanged * multiple); Destroy(this); }
public override void end(ObjectActor subject) { subject.physicalArmorValueChange(ARMORLOSS * multiple); base.end(subject); }
private void changeTarget() { Debug.Log(gameObject + " change target called"); targetActor = targets[rand.Next(targets.Count - 1)]; }
public void end(ObjectActor subject) { multiple = 1; Destroy(this); }
public virtual void newTargetIndividual(ObjectActor newTarget) { checkTargetList(); targets.Add(newTarget); inCombat = true; }
public abstract void activate(ObjectActor self, ObjectCombatable target);
public override void end(ObjectActor subject) { subject.attackModChange(ATTACKLOSS * multiple); base.end(subject); }
// activate returns true if a message is needed due to something happening. // An example is a condition for a skill being activated is not met. The message string is filled // with the text to be shown to the player. public abstract bool activate(ObjectActor self, ObjectCombatable target, out string message);
public void beginExhausted(ObjectActor subject, ObjectInteractable source) { beginCondition <ExhaustedEffect>(subject, source); }
public void end(ObjectActor subject) { subject.endBurning(); subject.beginShattered(source); Destroy(this); }
public override void newTargetIndividual(ObjectActor newTarget) { base.newTargetIndividual(newTarget); timer = Time.time + 20.0f; }
public void beginScarred(ObjectActor subject, ObjectInteractable source) { beginCondition <ScarredEffect>(subject, source); }
private void changeTarget() { targetActor = targets[rand.Next(targets.Count - 1)]; }
/* * skillName = "Stab"; * briefSkillDescription = "Target takes 20 piercing damage."; * fullSkillDescription = "Target is struck from up to 3.5 meters away for 20 piercing damage."; * energyCost = 5.0f; * sacrificeCost = 0.02f; * adrenalineCost = 1; * castTime = 0.2f; * cooldown = 5.5f; * range = 3.5f; */ public override void activate(ObjectActor self, ObjectCombatable target) { float damage = self.getStr() * 0.5f + 10.0f; target.takePiercingDamage(damage, (ObjectInteractable)self); }
public override void end(ObjectActor subject) { subject.changeMaxHealth(HEALTHLOSS); Destroy(this); }
public override void end(ObjectActor subject) { subject.magicArmorValueChange(ARMORLOSS * multiple); Destroy(this); }
public void end(ObjectActor subject) { Destroy(this); }
public void end(ObjectActor subject) { obs.complete(); Destroy(this); }