Пример #1
0
    public void Activate(Critter newCritter)
    {
        critter = newCritter;
        size = critter.GetSize();
        scale = .4f + (.05f * size);

        Vector3 scaleVect = new Vector3(scale, scale, 1);

        gameObject.GetComponent<RectTransform>().localScale = scaleVect;
    }
Пример #2
0
 private void PopulateSliders(Critter critter)
 {
     statSliders[0].value = critter.GetOffense();
     statSliders[1].value = critter.GetDefense();
     statSliders[2].value = critter.GetSpeed();
     statSliders[3].value = critter.GetSense();
     statSliders[4].value = critter.GetSneak();
     subStatSliders[0].value = critter.GetSize();
     subStatSliders[1].value = critter.GetBreedRate();
     subStatSliders[2].value = critter.GetEfficiency();
     subStatSliders[3].value = critter.GetMetabolism();
 }
Пример #3
0
    public void CloneStats(Critter critter)
    {
        offense = critter.GetOffense();
        defense = critter.GetDefense();
        baseSpeed = critter.GetBaseSpeed();
        sense = critter.GetSense();
        sneak = critter.GetSneak();
        size = critter.GetSize();
        breedRate = critter.GetBreedRate();
        metabolism = critter.GetMetabolism();

        biomePref = critter.GetBiomePrefs();
        climateFocus = critter.GetClimateFocus();
        climatePref = critter.GetClimatePref();
        climateRange = critter.GetClimateRange();
        geoPref = critter.GetGeoPrefs();
        tempFocus = critter.GetTempFocus();
        tempPref = critter.GetTempPref();
        tempRange = critter.GetTempRange();

        evoMod = critter.GetEvoMod();
        migrateMod = critter.GetMigrateMod();
    }
Пример #4
0
    //Determines if a creature successfully kills its target, then takes care of casualties and enegery gain.
    void Hunt(Critter target, Hex habitat)
    {
        float casualties = 0;
        float bite = biteSize;
        float targetPop = target.GetLocalPopulation(habitat);
        float targetFoodValue = target.GetBaseFoodValue();
        float huntScore = ChaseScore(target) * FightScore(target) / 100;
        //print ("-----Target = Creature#" + target.number + "------------------------------------------------------------------------------------------Hunt Success Probability = " + huntScore + ".\r\n");

        //print ("This creature (#" + number + ") Hunts Creature #" + target.number + ".\r\n");
        if(target == this){
            AquireTarget(habitat);
        }
        else if (Random.Range (1, 101) <= huntScore * AptitudeCheck(target)) {
            float popRatio;

            if(bite > energy_Needed){
                bite = energy_Needed;
            }
            if(bite < 0){
                bite = 0;
            }

            casualties = (float)((bite / targetFoodValue * target.GetSize()));

            casualties = KillCount(target, casualties);

            if(casualties >= targetPop){
                casualties = targetPop / 2;
            }

            popRatio = targetPop / (float)(1.25f * GetLocalPopulation(habitat));

            if(popRatio > 1.25f){
                popRatio = 1.25f;
            }

            casualties = (casualties * popRatio);

            foodTaken += casualties * (targetFoodValue * size);

            //print (name + " + Target: " + target.name + " PopRatio " + popRatio + "\r\n");

            if(energy_Needed <= foodTaken){
                foodTaken = energy_Needed;
            }

            targetPop -= casualties;
            target.SetLocalAdultPopulation(targetPop, habitat);

            target.AddCrittersEaten(casualties);
            target.AddToHuntDeathsList(habitat, turn, casualties);

            habitat.AddExcessMeatFood(foodTaken * .5f);

            target.MortalityCheck(habitat);

            target.UpdateStats();

            //if(isPlayer){
                //print ("Total Kills = " + casualties + ". Food aquired = " + foodTaken + " vs. Energy Needed = " + energy_Needed +"\r\n");
            //}
        } //else {print ("Hunt Failed.\r\n");}
    }
Пример #5
0
    private float AptitudeCheck(Critter target)
    {
        float value = 1;

        for(int i = 0; i < locomotion.Count; i++){

        }
        //if isn't flyer but target is: value *= .5f;

        //if is value *= 1.25f;

        if(diet.Contains(dietType.INSECT)){
            if(target.GetSize() > 1){
                value *= .5f;
            }
        }
        if(target.GetSize() > size){
            if(target.GetSize() > size + 1){
                value *= .5f;
            }
            else{
                value *= .75f;
            }
        }

        return value;
    }