protected override void Update() { base.Update(); if (coolDownRemainsDuration <= 0f) { BasePlayerCharacterEntity owningCharacter = BasePlayerCharacterController.OwningCharacter; if (owningCharacter != null && GuildSkill != null) { int indexOfSkillUsage = owningCharacter.IndexOfSkillUsage(GuildSkill.DataId, SkillUsageType.GuildSkill); if (indexOfSkillUsage >= 0) { coolDownRemainsDuration = owningCharacter.SkillUsages[indexOfSkillUsage].coolDownRemainsDuration; if (coolDownRemainsDuration <= 1f) { coolDownRemainsDuration = 0f; } } } } if (coolDownRemainsDuration > 0f) { coolDownRemainsDuration -= Time.deltaTime; if (coolDownRemainsDuration <= 0f) { coolDownRemainsDuration = 0f; } } else { coolDownRemainsDuration = 0f; } // Update UIs float coolDownDuration = GuildSkill.GetCoolDownDuration(Level); if (uiTextCoolDownDuration != null) { uiTextCoolDownDuration.text = string.Format( LanguageManager.GetText(formatKeyCoolDownDuration), coolDownDuration.ToString("N0")); } if (uiTextCoolDownRemainsDuration != null) { uiTextCoolDownRemainsDuration.text = string.Format( LanguageManager.GetText(formatKeyCoolDownRemainsDuration), coolDownRemainsDuration.ToString("N0")); uiTextCoolDownRemainsDuration.gameObject.SetActive(coolDownRemainsDuration > 0); } if (imageCoolDownGage != null) { imageCoolDownGage.fillAmount = coolDownDuration <= 0 ? 0 : coolDownRemainsDuration / coolDownDuration; } }
public virtual bool CanUseGuildSkill(BasePlayerCharacterEntity playerCharacterEntity, int dataId, out int guildId, out GuildData guild) { guildId = 0; guild = null; if (playerCharacterEntity == null || !IsServer || !GameInstance.GuildSkills.ContainsKey(dataId)) { return(false); } guildId = playerCharacterEntity.GuildId; if (guildId <= 0 || !guilds.TryGetValue(guildId, out guild)) { return(false); } if (guild.GetSkillLevel(dataId) <= 0) { return(false); } if (playerCharacterEntity.IndexOfSkillUsage(dataId, SkillUsageType.GuildSkill) >= 0) { return(false); } return(true); }