Пример #1
0
        public void CheckEnabled()
        {
            ActivatedAbilities    ObjectsAbilityList = Object.GetPart <ActivatedAbilities>();
            ActivatedAbilityEntry Wrestle            = ObjectsAbilityList.GetAbilityByCommand("wm-WrestleCommand");
            ActivatedAbilityEntry HipThrow           = ObjectsAbilityList.GetAbilityByCommand("wm-HipThrowCommand");
            ActivatedAbilityEntry Suplex             = ObjectsAbilityList.GetAbilityByCommand("wm-SuplexCommand");
            ActivatedAbilityEntry Subdue             = ObjectsAbilityList.GetAbilityByCommand("wm-SubdueCommand");
            ActivatedAbilityEntry RavageLimb         = ObjectsAbilityList.GetAbilityByCommand("wm-RavageLimbCommand");

            if (WrestleCommand != null)
            {
                Wrestle.Enabled = ShouldEnable();
            }
            if (HipThrowCommand != null)
            {
                HipThrow.Enabled = ShouldEnable();
            }
            if (SuplexCommand != null)
            {
                Suplex.Enabled = ShouldEnable();
            }
            if (SubdueCommand != null)
            {
                Subdue.Enabled = ShouldEnable();
            }
            if (RavageLimbCommand != null)
            {
                RavageLimb.Enabled = ShouldEnable();
            }
        }
Пример #2
0
        public override bool Mutate(GameObject GO, int Level)
        {
            Body SourceBody = GO.GetPart <Body>();

            if (SourceBody != null)
            {
                GameObject TailObj = GameObject.create("Ovipositor");

                var body = GO.GetPart <Body>();
                var core = body.GetBody();
                var tail = core.AddPartAt(Base: "Tail", DefaultBehavior: "Ovipositor", InsertAfter: "Feet", OrInsertBefore: "Hands");
                tail.DefaultBehaviorBlueprint = "Ovipositor";
                tail.DefaultBehavior          = TailObj;
                // Armor part = TailObj.GetPart<Armor>();
                // part.AV = 1;
                // part.DV = 0;
                body.UpdateBodyParts();
            }
            CooldownMyActivatedAbility(ActivatedAbilityID, PlaceHolder, ParentObject);
            ActivatedAbilities activatedAbilities = ParentObject.GetPart("ActivatedAbilities") as ActivatedAbilities;

            ActivatedAbilityID = activatedAbilities.AddAbility("Lay Egg", "CommandLayEgg", "Physical Mutation", "Lay an egg.", "O", null, false, false, false, false, false, false, false, true, PlaceHolder);
            ChangeLevel(Level);
            return(base.Mutate(GO, Level));
        }
Пример #3
0
        public override void Apply(ActivatedAbilities abilities)
        {
            _abilities = abilities;

            var ap = new ManaAbilityParameters
            {
                Text = string.Format("{{T}}: Add {0} to your mana pool.",
                                     BasicLandTypeToManaSymbol[_landSubtype]),
            };

            ap.ManaAmount(Mana.GetBasicLandMana(_landSubtype));
            _addedAbility = new ManaAbility(ap);
            _addedAbility.Initialize(OwningCard, Game);

            if (_replace)
            {
                _modifier = new SetList <ActivatedAbility>(new List <ActivatedAbility> {
                    _addedAbility
                });
            }
            else
            {
                _modifier = new AddToList <ActivatedAbility>(_addedAbility);
            }

            _modifier.Initialize(ChangeTracker);
            _abilities.AddModifier(_modifier);
        }
Пример #4
0
 public override void Apply(ActivatedAbilities abilities)
 {
     _abilities = abilities;
     _modifier  = new AddToList <ActivatedAbility>(_activatedAbility);
     _modifier.Initialize(ChangeTracker);
     _activatedAbility.Initialize(OwningCard, Game);
     _abilities.AddModifier(_modifier);
 }
Пример #5
0
        public override void Apply(ActivatedAbilities abilities)
        {
            _abilities = abilities;

              foreach (var manaAbility in _abilities.GetManaAbilities())
              {
            manaAbility.AddAditionalAmountAbilityWillProduce(_amount);
              }
        }
        public override bool Mutate(GameObject GO, int Level)
        {
            Unmutate(GO);
            ActivatedAbilities part = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            SWForceChokeActivatedAbilityID = part.AddAbility("Force Choke", "CommandSWForceChoke", "Mental Mutation", "#");
            SWForceChokeActivatedAbility   = part.AbilityByGuid[SWForceChokeActivatedAbilityID];
            return(true);
        }
Пример #7
0
        public override void Apply(ActivatedAbilities abilities)
        {
            _abilities = abilities;

            foreach (var manaAbility in _abilities.GetManaAbilities())
            {
                manaAbility.AddAditionalAmountAbilityWillProduce(_amount);
            }
        }
 public override bool RemoveSkill(GameObject GO)
 {
     if (ActivatedAbilityID != Guid.Empty)
     {
         ActivatedAbilities activatedAbilities = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;
         activatedAbilities.RemoveAbility(ActivatedAbilityID);
     }
     return(true);
 }
Пример #9
0
        public override bool Mutate(GameObject GO, int Level)
        {
            Unmutate(GO);
            ActivatedAbilities part = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            ReadEmotionsActivatedAbilityID = part.AddAbility(DisplayName, "CommandReadEmotions", "Mental Mutation", "#");
            ReadEmotionsActivatedAbility   = part.AbilityByGuid[ReadEmotionsActivatedAbilityID];
            return(true);
        }
Пример #10
0
        public override void Register(GameObject Object)
        {
            Object.RegisterPartEvent((IPart)this, "BeforeApplyDamage");
            Object.RegisterPartEvent((IPart)this, "EndTurn");
            ActivatedAbilities part = Object.GetPart("ActivatedAbilities") as ActivatedAbilities;

            this.ChargeCellsActivatedAbilityID = part.AddAbility("Charge Cells", "CommandKoboldChargeCells", "Kobold Power", 0, true, false, "Toggle to consume hunger and charge equipped cells each turn", "~", false, false);
            this.ChargeCellsActivatedAbility   = part.AbilityByGuid[this.ChargeCellsActivatedAbilityID];
            base.Register(Object);
        }
        public override bool AddSkill(GameObject GO)
        {
            ActivatedAbilities activatedAbilities = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            if (activatedAbilities != null)
            {
                AddAbility();
            }
            return(true);
        }
Пример #12
0
        public bool RemoveSkill(GameObject GO)
        {
            if (ActivatedAbilityID != Guid.Empty)
            {
                ActivatedAbilities pAA = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;
                pAA.RemoveAbility(ActivatedAbilityID);
            }

            return(true);
        }
Пример #13
0
 public override bool Unmutate(GameObject GO)
 {
     if (ReadEmotionsActivatedAbilityID != Guid.Empty)
     {
         ActivatedAbilities part = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;
         part.RemoveAbility(ReadEmotionsActivatedAbilityID);
         ReadEmotionsActivatedAbilityID = Guid.Empty;
     }
     return(true);
 }
Пример #14
0
        public override bool FireEvent(Event E)
        {
            if (E.ID == "GetInventoryActions")
            {
                E.GetParameter <EventParameterGetInventoryActions>("Actions").AddAction("Water", 'W', false, "&WW&yater", "CommandWater");
            }
            // else if (E.ID == "OwnerGetInventoryActions")
            // {
            //     GameObject GO = E.GetGameObjectParameter("Object");
            //     if(GO.GetPart<acegiak_Seed>() != null){

            //     }
            //     E.GetParameter<EventParameterGetInventoryActions>("Actions").AddAction("Water", 'W', false, "&WW&yater", "CommandWater", 5);
            // }
            else if (E.ID == "CommandWater")
            {
                // if(ParentObject.Equipped == null){
                //     Popup.Show("You must have a watering can equipped to water.");
                // }
                GameObject who = E.GetGameObjectParameter("Owner");
                if (who == null)
                {
                    who = ParentObject.Equipped;
                }
                if (who == null)
                {
                    who = ParentObject;
                }
                Water(who);
                E.RequestInterfaceExit();
            }
            else
            if (E.ID == "Equipped")
            {
                GameObject         GO   = E.GetGameObjectParameter("EquippingObject");
                ActivatedAbilities part = GO.GetPart <ActivatedAbilities>();
                if (part != null)
                {
                    ActivatedAbilityID = part.AddAbility("Water", "CommandWater", "Gear");
                    ActivatedAbilityEntry activatedAbilityEntry = part.AbilityByGuid[ActivatedAbilityID];
                    GO.RegisterPartEvent(this, "CommandWater");
                }
            }
            else if (E.ID == "Unequipped")
            {
                GameObject         GO   = E.GetGameObjectParameter("UnequippingObject");
                ActivatedAbilities part = GO.GetPart <ActivatedAbilities>();
                if (part != null)
                {
                    part.RemoveAbility(ActivatedAbilityID);
                    GO.UnregisterPartEvent(this, "CommandWater");
                }
            }
            return(base.FireEvent(E));
        }
        public override bool Mutate(GameObject GO, int Level)
        {
            ActivatedAbilities part = GO.GetPart <ActivatedAbilities>();

            if (part != null)
            {
                this.ActivatedAbilityID = part.AddAbility("Evolve", "CommandEvolve", "Physical Mutation", -1, false, false, "Evolve from liquid.", string.Empty + (object)'\x0003', false);
                this.ActivatedAbility   = part.AbilityByGuid[this.ActivatedAbilityID];
            }
            return(base.Mutate(GO, Level));
        }
Пример #16
0
        public override bool AddSkill(GameObject GO)
        {
            ActivatedAbilities activatedAbilities = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            if (activatedAbilities != null)
            {
                ActivatedAbilityID = activatedAbilities.AddAbility("Polearm Lunge [&Wattack&y]", "CommandAcegiakPolearmLunge", "Skill", "You strike out with a polearm to attack a foe two spaces away.", string.Empty + '\u0010');
                pActivatedAbility  = activatedAbilities.AbilityByGuid[ActivatedAbilityID];
            }
            return(true);
        }
Пример #17
0
        public bool AddSkill(GameObject GO)
        {
            ActivatedAbilities pAA = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            if (pAA != null)
            {
                ActivatedAbilityID = pAA.AddAbility("Hit The Gas", "CommandAcegiakGasGasGas", "Maneuvers", -1, "While gassing it you move 2-4 spaces each turn.", "-");
                Ability            = pAA.AbilityByGuid[ActivatedAbilityID];
            }

            return(true);
        }
Пример #18
0
        public override bool AddSkill(GameObject GO)
        {
            ActivatedAbilities pAA = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            if (pAA != null)
            {
                ActivatedAbilityID = pAA.AddAbility("Double Grip", "CommandAcegiakPolearmGrip", "Skill", "You wield your polearm with two hands for additional damage.", "G", null, true, false);
                Ability            = pAA.AbilityByGuid[ActivatedAbilityID];
            }

            return(true);
        }
Пример #19
0
        public override bool AddSkill(GameObject GO)
        {
            ActivatedAbilities pAA = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            if (pAA != null)
            {
                ActivatedAbilityID = pAA.AddAbility("Repel Attackers", "CommandAcegiakPolearmRepel", "Skill","When attacking with a polearm you push enemies away from you.", ">", null, true,true);
                Ability = pAA.AbilityByGuid[ActivatedAbilityID];
            }

            return true;
        }
Пример #20
0
        public override bool Mutate(GameObject GO, int Level)
        {
            this.ParentObject.ApplyEffect((Effect) new Phased(9999));
            ActivatedAbilities part = GO.GetPart("ActivatedAbilities") as ActivatedAbilities;

            if (part != null)
            {
                this.UnphaseActivatedAbilityID = part.AddAbility("Unphase", "CommandUnphase", "Physical Mutation", true, false);
                this.UnphaseActivatedAbility   = part.AbilityByGuid[this.UnphaseActivatedAbilityID];
            }
            this.ChangeLevel(Level);
            return(base.Mutate(GO, Level));
        }
Пример #21
0
        public override void Apply(ActivatedAbilities abilities)
        {
            if (!_activated)
            {
                return;
            }

            _activatedAbilities         = abilities;
            _activatedAbilitiesModifier = new SetList <ActivatedAbility>(
                new List <ActivatedAbility>());

            _activatedAbilitiesModifier.Initialize(ChangeTracker);
            _activatedAbilities.AddModifier(_activatedAbilitiesModifier);
        }
Пример #22
0
            /// <summary>
            /// Calculates the willpower-adjusted cooldown for an ability.
            /// </summary>
            public int GetAdjustedCooldown(int baseCooldown)
            {
                GameObject player = XRLCore.Core?.Game?.Player?.Body;

                if (player == null || !player.HasStat("Willpower"))
                {
                    return(baseCooldown);
                }
                int internalCooldown = baseCooldown * 10;
                int val = (int)((double)internalCooldown * (100.0 - (double)((player.Stat("Willpower", 0) - 16) * 5))) / 100;
                int calculatedCooldown = Math.Max(val, ActivatedAbilities.MinimumValueForCooldown(internalCooldown));

                baseCooldown = (int)Math.Ceiling((double)((float)calculatedCooldown / 10f));
                return(baseCooldown);
            }
Пример #23
0
        public Mountain(Player owner)
            : this()
        {
            Owner = owner;

            ActivatedAbilities.Add(new Ability(
                                       (Player p, State s) =>
            {
                return((this.Status & Card.StatusEnum.Tapped) == Card.StatusEnum.Default);
            },
                                       (Player p, State s) =>
            {
                s.ManaPools[p].R++;
                this.Status |= Card.StatusEnum.Tapped;
            }
                                       ));
        }
Пример #24
0
        public override void Apply(ActivatedAbilities abilities)
        {
            _abilities = abilities;
              if (_isBasicLand)
              {
            _removedAbility = _abilities.RemoveFirst();
              }

              var basicLandMana = Mana.GetBasicLandMana(_changeTo);

              var ap = new ManaAbilityParameters
            {
              Text = "{{T}}: Add {0} to your mana pool.",
            };

              ap.ManaAmount(basicLandMana);
              _addedAbility = new ManaAbility(ap);
              _addedAbility.Initialize(OwningCard, Game);
              _abilities.Add(_addedAbility);
        }
Пример #25
0
        public override void Apply(ActivatedAbilities abilities)
        {
            _abilities = abilities;
            if (_isBasicLand)
            {
                _removedAbility = _abilities.RemoveFirst();
            }

            var basicLandMana = Mana.GetBasicLandMana(_changeTo);

            var ap = new ManaAbilityParameters
            {
                Text = "{{T}}: Add {0} to your mana pool.",
            };

            ap.ManaAmount(basicLandMana);
            _addedAbility = new ManaAbility(ap);
            _addedAbility.Initialize(OwningCard, Game);
            _abilities.Add(_addedAbility);
        }
Пример #26
0
        public override bool Mutate(GameObject GO, int Level)
        {
            if (!ParentObject.HasPart("NotOriginalEntity"))
            {
                // Statshifter - Setting all stats for starting husk
                StatShifter.SetStatShift(ParentObject, "Ego", 6, true);
                StatShifter.SetStatShift(ParentObject, "Willpower", 6, true);
                StatShifter.SetStatShift(ParentObject, "Intelligence", 6, true);
                StatShifter.SetStatShift(ParentObject, "Strength", -6, true);
                StatShifter.SetStatShift(ParentObject, "Toughness", -6, true);
                StatShifter.SetStatShift(ParentObject, "Agility", -6, true);
            }
            if (!ParentObject.HasEffect <Disintegrating>())
            {
                ParentObject.ApplyEffect(new Disintegrating(9999));
            }

            ActivatedAbilities activatedAbilities = ParentObject.GetPart("ActivatedAbilities") as ActivatedAbilities;

            this.ActivatedAbilityID = activatedAbilities.AddAbility("Soulshunt", "CommandSoulShunt", "Mental Mutation", "Shunt the imprints of your victims' mind from their body, and assume the throne of their vessel.\n\n" + "Target makes a Willpower saving-throw vs your Ego Modifier {{light blue|(+10)}} or be shunted from its body; you assume control of the target's body permanently. Your new husk will wither over time. On a successful soulshunt you gain a 10% chance to increase your ego score by {{light blue|1}}." + "\n\n{{dark gray|Base cooldown: 2400}}", "(O)", null, false, false, false, false, false, false, false, false, -1);
            return(base.Mutate(GO, Level));
        }
Пример #27
0
        public void LoadPlayerAbilities()
        {
            this.PlayerAbilities.Clear();
            ActivatedAbilities activatedAbilities = XRLCore.Core.Game.Player.Body.GetPart("ActivatedAbilities") as ActivatedAbilities;

            if (activatedAbilities == null || activatedAbilities.AbilityLists == null)
            {
                return;
            }
            foreach (KeyValuePair <string, List <ActivatedAbilityEntry> > abilityList in activatedAbilities.AbilityLists)
            {
                List <ActivatedAbilityEntry> entries = new List <ActivatedAbilityEntry>();
                foreach (ActivatedAbilityEntry entry in abilityList.Value)
                {
                    entries.Add(entry);
                }
                if (entries.Count > 0)
                {
                    this.PlayerAbilities.Add(abilityList.Key, entries);
                }
            }
        }
Пример #28
0
        public TimeChangeRemoval ChangeTime(ChangeCharacterTimeDto changeCharacterTimeDto)
        {
            ActivatedAbilities.ForEach(x => x.ActiveTime.Add(new TimeLimitUnitParsed
            {
                Time = changeCharacterTimeDto.TimeUnit
            }));
            var toRemove = new List <RoundActivateAbilities>();

            foreach (var feat in changeCharacterTimeDto.Bonus.Feats)
            {
                toRemove.AddRange(feat.ChangeTime(changeCharacterTimeDto));
            }

            foreach (var roundActivateAbilitiese in toRemove)
            {
                //Removing the time unit just added. No need to add it to DB to be removed.
                roundActivateAbilitiese.ActiveTime.RemoveAll(x => x.ID == Guid.Empty);
            }

            var dmgToRemove = new List <DamageTaken>();

            if (changeCharacterTimeDto.TimeUnit == TimeLimitUnit.Encounter || changeCharacterTimeDto.TimeUnit == TimeLimitUnit.Day)
            {
                dmgToRemove = changeCharacterTimeDto.Bonus.Character.HitPoints.DamgeToDelete(changeCharacterTimeDto.Bonus);
            }

            //UsedActions.RemoveAll(x => x.ID == Guid.Empty);

            return(new TimeChangeRemoval
            {
                UsedActions = GetActionToRemove(UsedActions, changeCharacterTimeDto.TimeUnit),
                DeaktivatedAbilities = toRemove,
                DeaktivatedConditions = ActivatedConditions.Where(x => x.AutoDismissAfter.HasValue && (int)x.AutoDismissAfter.Value <= (int)changeCharacterTimeDto.TimeUnit).ToList(),
                DamagesToRemove = dmgToRemove
            });
        }
Пример #29
0
 public override void Apply(ActivatedAbilities abilities)
 {
     abilities.DisableAll();
       _activatedAbilities = abilities;
 }
Пример #30
0
 public override void Apply(ActivatedAbilities abilities)
 {
     _abilities = abilities;
     _activatedAbility.Initialize(OwningCard, Game);
     _abilities.Add(_activatedAbility);
 }
Пример #31
0
        public override bool FireEvent(Event E)
        {
            if (E.ID == "AIGetOffensiveMutationList")
            {
                int intParameter = E.GetIntParameter("Distance");
                if (intParameter <= 1 & IsMyActivatedAbilityCoolingDown(ActivatedAbilityID, ParentObject))
                {
                    GameObject gameObjectParameter2 = E.GetGameObjectParameter("Target");
                    if (gameObjectParameter2.PhaseAndFlightMatches(ParentObject))
                    {
                        List <AICommandList> list = E.GetParameter("List") as List <AICommandList>;
                        list.Add(new AICommandList("CommandSoulShunt", 1));
                    }
                }
            }
            if (E.ID == "DamageFromDecay")
            {
                int DegradateLevel = ParentObject.Stat("Level");

                if (!ParentObject.MakeSave("Toughness", (28 + DegradateLevel), null, null, "Husk Deterioration"))
                {
                    // StatShifter.SetStatShift(ParentObject, "Hitpoints", -Stat.Random(0, 3), true);
                    ParentObject.Statistics["Hitpoints"].BaseValue -= Stat.Random(0, 3);
                }
            }
            else if (E.ID == "ApplyingTonic")
            {
                if (E.GetParameter <GameObject>("Tonic").Blueprint == "UbernostrumTonic" && SetCounterUberAptitude <= 0)
                {
                    UbernostrumScaling = (int)Math.Round(Stat.Random(0.10f, 0.30f) * ParentObject.GetStatValue("Hitpoints", 1));

                    StatShifter.SetStatShift(ParentObject, "Hitpoints", UbernostrumScaling, true);
                    SetCounterUberAptitude += 1;
                }
                else if (E.GetParameter <GameObject>("Tonic").Blueprint == "UbernostrumTonic" && SetCounterUberAptitude > 0)
                {
                    UbernostrumScaling  = (int)Math.Round(Stat.Random(0.10f, 0.30f) * ParentObject.GetStatValue("Hitpoints", 1));
                    UbernostrumScaling -= (int)Math.Round(UbernostrumScaling * (SetCounterUberAptitude + 0.10));

                    StatShifter.SetStatShift(ParentObject, "Hitpoints", UbernostrumScaling, true);
                    SetCounterUberAptitude += 1;
                }
            }
            else if (E.ID == "EndTurn")
            {
                if (HuskWeakeningDuration > 0)
                {
                    --HuskWeakeningDuration;
                    if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.7)
                    {
                        ParentObject.FireEvent(Event.New("DebuffsFromDecay"));
                    }
                    else if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.3)
                    {
                        ParentObject.FireEvent(Event.New("DebuffsFromDecay"));
                    }
                    else if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.1)
                    {
                        ParentObject.FireEvent(Event.New("DebuffsFromDecay"));
                    }
                    else if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.05)
                    {
                        ParentObject.FireEvent(Event.New("DebuffsFromDecay"));
                    }
                }
                else if (ParentObject.Statistics["Hitpoints"].BaseValue <= 1)
                {
                    if (ParentObject.IsPlayer())
                    {
                        ParentObject.Die(null, null, "As your husk crumbles to dust, so do your last tethers to world as your form radiates away.", Force: false);
                    }
                }
                if (!ParentObject.HasEffect <Disintegrating>())
                {
                    ParentObject.ApplyEffect(new Disintegrating(9999));
                }
            }
            else if (E.ID == "CommandSoulShunt")
            {
                ActivatedAbilities activatedAbilities = ParentObject.GetPart("ActivatedAbilities") as ActivatedAbilities;
                activatedAbilities.GetAbility(ActivatedAbilityID).Cooldown = 24000;
                SoulShunt();
                var HuskCurrentToughness = ParentObject.Stat("Toughness");
                HuskWeakeningDuration = 1200 * Math.Min(1, HuskCurrentToughness);
            }
            else if (E.ID == "DebuffsFromDecay")
            {
                var OwnersStrength  = ParentObject.Stat("Strength");
                var OwnersToughness = ParentObject.Stat("Toughness");
                var OwnersAgility   = ParentObject.Stat("Agility");

                if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.6)
                {
                }
                else if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.5)
                {
                    StatShifter.SetStatShift(ParentObject, "Strength", -((int)Math.Round(OwnersStrength * 0.2)), false);
                    StatShifter.SetStatShift(ParentObject, "Toughness", -((int)Math.Round(OwnersToughness * 0.2)), false);
                    StatShifter.SetStatShift(ParentObject, "Agility", -((int)Math.Round(OwnersAgility * 0.2)), false);
                }
                else if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.3)
                {
                    StatShifter.SetStatShift(ParentObject, "Strength", -((int)Math.Round(OwnersStrength * 0.4)), false);
                    StatShifter.SetStatShift(ParentObject, "Toughness", -((int)Math.Round(OwnersToughness * 0.4)), false);
                    StatShifter.SetStatShift(ParentObject, "Agility", -((int)Math.Round(OwnersAgility * 0.4)), false);
                }
                else if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.1)
                {
                    StatShifter.SetStatShift(ParentObject, "Strength", -((int)Math.Round(OwnersStrength * 0.6)), false);
                    StatShifter.SetStatShift(ParentObject, "Toughness", -((int)Math.Round(OwnersToughness * 0.6)), false);
                    StatShifter.SetStatShift(ParentObject, "Agility", -((int)Math.Round(OwnersAgility * 0.6)), false);
                }
                else if (HuskWeakeningDuration >= HuskWeakeningDuration * 0.05)
                {
                    StatShifter.SetStatShift(ParentObject, "Strength", -((int)Math.Round(OwnersStrength * 0.8)), false);
                    StatShifter.SetStatShift(ParentObject, "Toughness", -((int)Math.Round(OwnersToughness * 0.8)), false);
                    StatShifter.SetStatShift(ParentObject, "Agility", -((int)Math.Round(OwnersAgility * 0.8)), false);
                }
                else if (HuskWeakeningDuration <= 0)
                {
                    HuskWeakeningDuration = (int)Math.Round(HuskWeakeningDuration * 0.7);
                }
            }
            else if (E.ID == "SuccessfulDethroning")
            {
                GameObject OriginalBody = E.GetGameObjectParameter("OriginalBody");

                var SkillAccess  = OriginalBody.GetPart <Skills>();
                var SkillListing = SkillAccess.SkillList;

                var CreatureTier          = OriginalBody.GetTier();
                var PrimaryFaction        = OriginalBody.GetPrimaryFaction();
                var FactionVar            = Factions.get(PrimaryFaction);
                var NewBodyPrimaryFaction = OriginalBody.GetPrimaryFaction();

                var ParentIntelligenceSkillAward = (ParentObject.BaseStat("Intelligence") - 10) * 4;

                ParentObject.FireEvent(Event.New("EntityHasSwappedBodies"));

                if (!ParentObject.HasSkill("Survival"))
                {
                    ParentObject.AddSkill("Survival");
                    if (!ParentObject.HasSkill("Survival_Camp"))
                    {
                        ParentObject.AddSkill("Survival_Camp");
                    }
                }

                foreach (var k in SkillListing)
                {
                    ParentObject.GetStat("SP").BaseValue += ParentIntelligenceSkillAward;
                }
                if (FactionVar.Visible)
                {
                    try
                    {
                        XRL.Core.XRLCore.Core.Game.PlayerReputation.modify(PrimaryFaction, -CreatureTier * 50, true);
                    }
                    catch
                    {
                        return(true);
                    }
                }

                if (OriginalBody != null)
                {
                    // AddPlayerMessage("Original Body: " + OriginalBody + ".");
                    // AddPlayerMessage("Parent Body: " + ParentObject + ".");

                    if (!ParentObject.HasProperName)
                    {
                        ParentObject.DisplayName = OriginalBody.DisplayNameOnly;
                        OriginalBody.DisplayName = Names.NameMaker.MakeName(ParentObject);
                    }
                    else
                    {
                        var NewName = ParentObject.DisplayNameOnly;
                        ParentObject.DisplayName = OriginalBody.DisplayNameOnly;
                        OriginalBody.DisplayName = NewName;
                    }
                    OriginalBody.GetAngryAt(ParentObject, -100);

                    PlayWorldSound("soulshunt");

                    var DifferenceVar = ParentObject.StatMod("Ego") - OriginalBody.StatMod("Ego");
                    DifferenceVar *= 5;

                    if (Stat.Random(1, 100) <= DifferenceVar && IsPlayer())
                    {
                        if (Popup.ShowYesNo("You feel the remnants of tender light pulsating within your new husk, would you like to imprint these codings upon your own animus?", false, DialogResult.Yes) == DialogResult.Yes)
                        {
                            StatShifter.SetStatShift(ParentObject, "Ego", 1, true);
                        }
                        else
                        {
                            Popup.Show("You cast the remnants away.");
                        }
                    }
                }
            }

            return(base.FireEvent(E));
        }
Пример #32
0
 public override void Apply(ActivatedAbilities abilities)
 {
     _abilities = abilities;
       _activatedAbility.Initialize(OwningCard, Game);
       _abilities.Add(_activatedAbility);
 }
Пример #33
0
 public override void Apply(ActivatedAbilities abilities)
 {
     abilities.DisableAll();
     _activatedAbilities = abilities;
 }
        public void ActuallyFire(int Charges)
        {
            FocusPsi PsiMutation = ParentObject.GetPart <FocusPsi>();

            // Shows the line picker interface for the player.

            TextConsole  _TextConsole = UI.Look._TextConsole;
            ScreenBuffer Buffer       = TextConsole.ScrapBuffer;

            Core.XRLCore.Core.RenderMapToBuffer(Buffer);

            List <GameObject> hit       = new List <GameObject>(1);
            List <Cell>       usedCells = new List <Cell>(1);
            var line = PickLine(20, AllowVis.Any, null, false, ForMissileFrom: ParentObject);

            Body            body        = ParentObject.GetPart <Body>();
            List <BodyPart> ParentsHead = body.GetPart("Head");

            Cell targetCell = line[line.Count - 1];

            if (!PsiMutation.usePsiCharges(Charges))
            {
                AddPlayerMessage("You do not have enough psi-charges!");
                return;
            }
            foreach (var Head in ParentsHead)
            {
                if (Head.Equipped != null)
                {
                    Physics.ApplyExplosion(currentCell, GetForce(Level, Charges), usedCells, hit, true, true, ParentObject, GetDamage(Level, Charges), 1, false, false, 2);
                    AddPlayerMessage("Your helmet obstructs the energy of the beam--it explodes in your face!");
                    return;
                }
            }
            if (ParentObject.HasEffect("Dazed") || ParentObject.HasEffect("Confused"))
            {
                Physics.ApplyExplosion(currentCell, GetForce(Level, Charges), usedCells, hit, true, true, ParentObject, GetDamage(Level, Charges), 1, false, false, 2);
                AddPlayerMessage("You lack the concentration to hold your focus! The collected energy explodes in your face!");
                return;
            }

            ActivatedAbilities activatedAbilities = ParentObject.GetPart("ActivatedAbilities") as ActivatedAbilities;

            activatedAbilities.GetAbility(CombustionBlastActivatedAbilityID).Cooldown = (Charges - 1) * 100;

            // Loop through each cell of the line in order.

            List <string> SparkySparkyChars = new List <string>()
            {
                "\xf8", "*", "."
            };
            List <Point> Beamline = Zone.Line(line[0].X, line[0].Y, targetCell.X, targetCell.Y);

            base.PlayWorldSound("sparkblast", 0.3f, 0.1f, true, null);

            for (int index = 1; index < line.Count; index++)
            {
                Cell cell        = line[index];
                char DisplayBeam = Beamline[index].DisplayChar;
                Buffer.Goto(cell.X, cell.Y);
                Buffer.Write("&Y^r" + DisplayBeam);

                Cell SparkyBeam = cell.GetRandomLocalAdjacentCell();
                Buffer.Goto(SparkyBeam.X, SparkyBeam.Y);
                Buffer.Write("&W" + SparkySparkyChars.GetRandomElement());
                _TextConsole.DrawBuffer(Buffer);
                System.Threading.Thread.Sleep(18);
                // Find a solid object and combat id on obj in line, to hit in this cell.
                GameObject obj = cell.FindObject(o => o.ConsiderSolidFor(ParentObject, ParentObject) || (o.HasPart("Combat") && !o.pPhysics.Solid));


                if (obj != null)
                {
                    targetCell = cell;
                    break;
                }
            }
            if (Stat.Random(1, 100) <= 50)
            {
                base.PlayWorldSound("bang1", 0.3f, 0, true, null);
            }
            else
            {
                base.PlayWorldSound("bang2", 0.3f, 0, true, null);
            }
            ComExplode(GetForce(Level, Charges), targetCell, ParentObject, GetDamage(Level, Charges));
            ParentObject.UseEnergy(10000);
        }