示例#1
0
    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);
    }
示例#2
0
 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>();
 }
示例#3
0
    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);
    }
示例#4
0
    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);
        }
    }
示例#5
0
 public override void end(ObjectActor subject)
 {
     subject.changeMaxEnergy(ENERGYLOSS);
     Destroy(this);
 }
示例#6
0
 public override void end(ObjectActor subject)
 {
     subject.moveSpeedChangeValue(speedChanged * multiple);
     Destroy(this);
 }
示例#7
0
 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)];
 }
示例#9
0
 public void end(ObjectActor subject)
 {
     multiple = 1;
     Destroy(this);
 }
示例#10
0
 public virtual void newTargetIndividual(ObjectActor newTarget)
 {
     checkTargetList();
     targets.Add(newTarget);
     inCombat = true;
 }
示例#11
0
 public abstract void activate(ObjectActor self, ObjectCombatable target);
示例#12
0
 public override void end(ObjectActor subject)
 {
     subject.attackModChange(ATTACKLOSS * multiple);
     base.end(subject);
 }
示例#13
0
 // 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);
示例#14
0
 public void beginExhausted(ObjectActor subject, ObjectInteractable source)
 {
     beginCondition <ExhaustedEffect>(subject, source);
 }
示例#15
0
 public void end(ObjectActor subject)
 {
     subject.endBurning();
     subject.beginShattered(source);
     Destroy(this);
 }
示例#16
0
 public override void newTargetIndividual(ObjectActor newTarget)
 {
     base.newTargetIndividual(newTarget);
     timer = Time.time + 20.0f;
 }
示例#17
0
 public void beginScarred(ObjectActor subject, ObjectInteractable source)
 {
     beginCondition <ScarredEffect>(subject, source);
 }
示例#18
0
 private void changeTarget()
 {
     targetActor = targets[rand.Next(targets.Count - 1)];
 }
示例#19
0
    /*
     *  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);
    }
示例#20
0
 public override void end(ObjectActor subject)
 {
     subject.changeMaxHealth(HEALTHLOSS);
     Destroy(this);
 }
示例#21
0
 public override void end(ObjectActor subject)
 {
     subject.magicArmorValueChange(ARMORLOSS * multiple);
     Destroy(this);
 }
示例#22
0
 public void end(ObjectActor subject)
 {
     Destroy(this);
 }
示例#23
0
 public void end(ObjectActor subject)
 {
     obs.complete();
     Destroy(this);
 }