コード例 #1
0
ファイル: SpeedAccessory.cs プロジェクト: RistoPaasivirta/IOX
    void ChargeBoost(MonsterCharacter.ChargeRegenFrame frame)
    {
        if (RechargesCells)
        {
            if (owner.ammunition[5] < owner.maxAmmo[5])
            {
                if (owner.ChargePoints >= owner.MaxChargePoints)
                {
                    owner.ChargePoints -= ChargeCostForRecharge;
                    owner.ammunition[5]++;
                }
            }
        }

        frame.RechargeAmount *= 100 + ChargeBonus;
        frame.RechargeAmount /= 100;
    }
コード例 #2
0
    private void Awake()
    {
        Messaging.GUI.ActiveSlot.Invoke(-1);

        character = GetComponent <MonsterCharacter>();
        character.OnInputRequest = FillInputFrame;
        character.OnDeath.AddListener(() => { OnDeath(); });
        character.OnDamage.AddListener((_) => { Messaging.GUI.Painflash.Invoke(.25f); });

        character.OnWeaponChange.AddListener((i) =>
        {
            PlayerInfo.CurrentLocal.LastPlayerWeaponSwap = i;
            Messaging.GUI.ActiveSlot.Invoke(i);

            if (i >= 0 && i < character.weapons.Length && character.weapons[i] != null)
            {
                Messaging.GUI.LeftAbilityIcon.Invoke(character.weapons[i].LeftAbilitySprite);
                Messaging.GUI.RightAbilityIcon.Invoke(character.weapons[i].RightAbilitySprite);
            }
            else
            {
                Messaging.GUI.LeftAbilityIcon.Invoke(null);
                Messaging.GUI.RightAbilityIcon.Invoke(null);
            }
        });

        GetComponent <ThingController>().GridPosChanged.AddListener((p) =>
        {
            Messaging.Player.PlayerGridPosition.Invoke(p);

            int r = Room.GetRoomIndex(p);
            if (r != -1)
            {
                Messaging.Player.PlayerEnterRoom.Invoke(r);
            }
        });

        PlayerInfo.CurrentLocal.PlayerHasBeenInitialized = true;

        character.OnDeserialize.AddListener(() =>
        {
            Messaging.CameraControl.Spectator.Invoke(false);
            Messaging.CameraControl.RemoveShake.Invoke();
            Messaging.CameraControl.TargetPosition.Invoke(transform.position);
            Messaging.CameraControl.TargetRotation.Invoke(0);
            Messaging.CameraControl.SpeedMultiplier.Invoke(1f);
            Messaging.CameraControl.Teleport.Invoke();
        });

        Messaging.Player.EquipPlayerItems.AddListener(() =>
        {
            for (int w = 0; w < Mathf.Min(PlayerInfo.CurrentLocal.PlayerWeapons.Length, character.weapons.Length); w++)
            {
                if (PlayerInfo.CurrentLocal.PlayerWeapons == null)
                {
                    character.weapons[w] = null;
                    continue;
                }

                character.weapons[w] = PlayerInfo.CurrentLocal.PlayerWeapons[w];
            }

            for (int s = 0; s < Mathf.Min(PlayerInfo.CurrentLocal.PlayerSkills.Length, character.Skills.Length); s++)
            {
                if (PlayerInfo.CurrentLocal.PlayerSkills == null)
                {
                    character.Skills[s] = null;
                    continue;
                }

                character.Skills[s] = PlayerInfo.CurrentLocal.PlayerSkills[s];
            }

            SetActionBarIcons();
        });

        Messaging.Player.ForceHolster.AddListener(() => { character.UnEquip(); });
        Messaging.Player.DeActivateSkill.AddListener((i) =>
        {
            character.Skills[i]?.DeActivate(character, i);
        });

        Messaging.Player.ActivateAccessory.AddListener((i) =>
        {
            if (i >= 0 && i < PlayerInfo.CurrentLocal.PlayerAccessories.Length)
            {
                PlayerInfo.CurrentLocal.PlayerAccessories[i]?.Activate(character);
            }
        });

        Messaging.Player.DeActivateAccessory.AddListener((i) =>
        {
            if (i >= 0 && i < PlayerInfo.CurrentLocal.PlayerAccessories.Length)
            {
                PlayerInfo.CurrentLocal.PlayerAccessories[i]?.DeActivate(character);
            }
        });

        Messaging.Player.AddTalent.AddListener((talent) =>
        {
            if (PlayerInfo.CurrentLocal.TalentPoints <= 0)
            {
                Messaging.GUI.ScreenMessage.Invoke("NOT ENOUGH TALENT POINTS!", Color.red);
                return;
            }

            PlayerInfo.CurrentLocal.Talents.Add(talent);
            talent.Activate(character);
            PlayerInfo.CurrentLocal.TalentPoints--;
            Messaging.Player.TalentPoints.Invoke(PlayerInfo.CurrentLocal.TalentPoints);
        });

        Messaging.Player.RemoveTalent.AddListener((talent) =>
        {
            if (!PlayerInfo.CurrentLocal.Talents.Contains(talent))
            {
                Debug.LogError("PlayerControls: RemoveTalent: talent \"" + talent.name + "\" not found in PlayerInfo.CurrentLocal.Talents");
                return;
            }

            talent.DeActivate(character);
            PlayerInfo.CurrentLocal.Talents.Remove(talent);
            PlayerInfo.CurrentLocal.TalentPoints++;
            Messaging.Player.TalentPoints.Invoke(PlayerInfo.CurrentLocal.TalentPoints);
        });

        Messaging.Player.GetLocalPlayerStats = () =>
        {
            MonsterCharacter.ChargeRegenFrame frame = new MonsterCharacter.ChargeRegenFrame
            {
                RechargeAmount = character.ChargeRegenPerTick
            };

            character.OnChargeRegen.Invoke(frame);

            return(new PlayerStats()
            {
                MaxHealth = character.MaxHitPoints / 1000,
                MaxCharge = character.MaxChargePoints / 1000,
                Armor = character.Armor,
                MovementSpeed = character.walkSpeed,
                ChargeRegen = (float)frame.RechargeAmount * 50f / 1000f,
                DamageDecay = (float)character.SoftDamageDecayPerTick * 50f / 1000f,
            });
        };

        Messaging.Player.Invulnerable.AddListener((b) =>
        {
            character.Invulnerable = b;
        });

        Messaging.GUI.OpenCanvas.Invoke("GameCanvas");
    }
コード例 #3
0
ファイル: ChargeTalent.cs プロジェクト: RistoPaasivirta/IOX
 void TalentBonus(MonsterCharacter.ChargeRegenFrame frame) =>
 frame.RechargeAmount *= 2;