void OnStructureUpgrade(BuildingBlock block, BasePlayer player, BuildingGrade.Enum grade) { if (sd.OnUpgrade.ContainsKey("From" + block.grade.ToString() + "To" + grade.ToString()) == false) { sd.OnUpgrade.Add("From" + block.grade.ToString() + "To" + grade.ToString(), 1); } else { if (sd.PlayerXP.ContainsKey(player.UserIDString) == false) { sd.PlayerXP.Add(player.UserIDString, 0); } if (sd.PlayerLevel.ContainsKey(player.UserIDString) == false) { sd.PlayerLevel.Add(player.UserIDString, 1); } XPToAdd[player] = XPToAdd[player] + sd.OnUpgrade["From" + block.grade.ToString() + "To" + grade.ToString()]; PlayerStreakEnded[player] = false; PlayerStreakTime[player] = sd.StreakTimeEnd; if (sd.PlayerXP[player.UserIDString] >= (sd.XpNeededPerLevel_Will_be_Mutiplied_By_Level * sd.PlayerLevel[player.UserIDString]) * sd.PlayerLevel[player.UserIDString]) { sd.PlayerXP[player.UserIDString] = 0; sd.PlayerLevel[player.UserIDString] = sd.PlayerLevel[player.UserIDString] + 1; Reconomy.Call("GiveMoney", player, sd.MoneyPerLevel_Will_be_Mutiplied_By_Level * sd.PlayerLevel[player.UserIDString], "You leveled up!", true); } } }
private void Upgrade(BuildingBlock block) { if (Interface.Oxide.CallHook("OnStructureUpgrade", block, player, gradeEnum) != null) { Destroy(this); return; } Refresh(); if (UpgradeBlocked(block)) { return; } if (block.grade >= gradeEnum) { return; } if (block.SecondsSinceAttacked < config.attackTime) { return; } if (config.checkPrivilege && !player.CanBuild()) { return; } if (config.checkHealth && Math.Abs(block.Health() - block.MaxHealth()) > 1) { return; } try { var resources = block.blockDefinition.grades[gradeInt].costToBuild; if (!TakeResources(resources)) { return; } } catch { return; } block.SetGrade(gradeEnum); block.SetHealthToMax(); block.StartBeingRotatable(); block.SendNetworkUpdate(); block.UpdateSkin(); block.ResetUpkeepTime(); Effect.server.Run("assets/bundled/prefabs/fx/build/promote_" + gradeEnum.ToString().ToLower() + ".prefab", block.transform.position); }
object OnStructureUpgrade(BuildingBlock block, BasePlayer player, BuildingGrade.Enum gradeEnum) { var grade = gradeEnum.ToString(); if ((bool)Config[grade] || IsAllowed(player.UserIDString, $"{Title}.{grade}")) { return(null); } PrintToChat(player, Lang("NotAllowed", player.UserIDString, grade)); return(true); }
private object OnStructureUpgrade(BaseCombatEntity entity, BasePlayer player, BuildingGrade.Enum grade) { if (permission.UserHasPermission(player.UserIDString, BypassPerm)) { return(null); } if (CFile.Hits.ContainsKey(grade) && Entities.ContainsKey(entity.net.ID) && CFile.Hits[grade] > Entities[entity.net.ID]) { PrintToChat(player, Lang("NoUpgrade", player.UserIDString, grade.ToString(), CFile.Hits[grade] - Entities[entity.net.ID])); return(false); } return(null); }
private static void SetBuildingBlockGrade(BuildingBlock buildingBlock, BuildingGrade.Enum targetGrade) { buildingBlock.SetGrade(targetGrade); buildingBlock.SetHealthToMax(); buildingBlock.StartBeingRotatable(); buildingBlock.SendNetworkUpdate(); buildingBlock.UpdateSkin(); buildingBlock.ResetUpkeepTime(); buildingBlock.UpdateSurroundingEntities(); BuildingManager.server.GetBuilding(buildingBlock.buildingID)?.Dirty(); if (targetGrade > BuildingGrade.Enum.Twigs) { Effect.server.Run("assets/bundled/prefabs/fx/build/promote_" + targetGrade.ToString().ToLower() + ".prefab", buildingBlock, 0u, Vector3.zero, Vector3.zero); } }
object OnStructureUpgrade(BuildingBlock block, BasePlayer player, BuildingGrade.Enum grade) { string gradestring = grade.ToString(); switch (gradestring) { case "Wood": { if (!Convert.ToBoolean(Config["Grade", "Wood"])) { PrintToChat(player, GetMessage("NotAllowed", player.UserIDString).Replace("{grade}", gradestring)); return(false); } break; } case "Stone": { if (!Convert.ToBoolean(Config["Grade", "Stone"])) { PrintToChat(player, GetMessage("NotAllowed", player.UserIDString).Replace("{grade}", gradestring)); return(false); } break; } case "Metal": { if (!Convert.ToBoolean(Config["Grade", "Metal"])) { PrintToChat(player, GetMessage("NotAllowed", player.UserIDString).Replace("{grade}", gradestring)); return(false); } break; } case "TopTier": { if (!Convert.ToBoolean(Config["Grade", "TopTier"])) { PrintToChat(player, GetMessage("NotAllowed", player.UserIDString).Replace("{grade}", gradestring)); return(false); } break; } } return(null); }
private void DoUpgradeToGrade(BaseEntity.RPCMessage msg) { if (!msg.player.CanInteract()) { return; } BuildingGrade.Enum @enum = (BuildingGrade.Enum)msg.read.Int32(); ConstructionGrade grade = this.GetGrade(@enum); if (grade == null) { return; } if (!this.CanChangeToGrade(@enum, msg.player)) { return; } if (!this.CanAffordUpgrade(@enum, msg.player)) { return; } if (base.SecondsSinceAttacked < 30f) { return; } if (Interface.CallHook("OnStructureUpgrade", this, msg.player, @enum) != null) { return; } this.PayForUpgrade(grade, msg.player); this.SetGrade(@enum); this.SetHealthToMax(); this.StartBeingRotatable(); base.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); this.UpdateSkin(false); base.ResetUpkeepTime(); BuildingManager.Building building = BuildingManager.server.GetBuilding(this.buildingID); if (building != null) { building.Dirty(); } Effect.server.Run(string.Concat("assets/bundled/prefabs/fx/build/promote_", @enum.ToString().ToLower(), ".prefab"), this, 0, Vector3.zero, Vector3.zero, null, false); }
private void DoUpgradeToGrade(RPCMessage msg) { if (msg.player.CanInteract()) { BuildingGrade.Enum @enum = (BuildingGrade.Enum)msg.read.Int32(); ConstructionGrade constructionGrade = GetGrade(@enum); if (!(constructionGrade == null) && CanChangeToGrade(@enum, msg.player) && CanAffordUpgrade(@enum, msg.player) && Interface.CallHook("OnStructureUpgrade", this, msg.player, @enum) == null && !(base.SecondsSinceAttacked < 30f)) { PayForUpgrade(constructionGrade, msg.player); SetGrade(@enum); SetHealthToMax(); StartBeingRotatable(); SendNetworkUpdate(); UpdateSkin(); ResetUpkeepTime(); UpdateSurroundingEntities(); BuildingManager.server.GetBuilding(buildingID)?.Dirty(); Effect.server.Run("assets/bundled/prefabs/fx/build/promote_" + @enum.ToString().ToLower() + ".prefab", this, 0u, Vector3.zero, Vector3.zero); } } }
private void DoUpgradeToGrade(BaseEntity.RPCMessage msg) { if (!msg.player.CanInteract()) { return; } BuildingGrade.Enum @enum = (BuildingGrade.Enum)msg.read.Int32(); ConstructionGrade grade = this.GetGrade(@enum); if ((PrefabAttribute)grade == (PrefabAttribute)null || !this.CanChangeToGrade(@enum, msg.player) || (!this.CanAffordUpgrade(@enum, msg.player) || (double)this.SecondsSinceAttacked < 30.0) || Interface.CallHook("OnStructureUpgrade", (object)this, (object)msg.player, (object)@enum) != null) { return; } this.PayForUpgrade(grade, msg.player); this.SetGrade(@enum); this.SetHealthToMax(); this.StartBeingRotatable(); this.SendNetworkUpdate(BasePlayer.NetworkQueue.Update); this.UpdateSkin(false); this.ResetUpkeepTime(); BuildingManager.server.GetBuilding(this.buildingID)?.Dirty(); Effect.server.Run("assets/bundled/prefabs/fx/build/promote_" + @enum.ToString().ToLower() + ".prefab", (BaseEntity)this, 0U, Vector3.get_zero(), Vector3.get_zero(), (Connection)null, false); }
void OnStructureUpgrade(BaseCombatEntity block, BasePlayer player, BuildingGrade.Enum grade) { if (PlayerHasFlag(player.userID, PlayerFlags.PLUGIN_DISABLED)) { return; } if (playersInfo[player.userID].upgradeInfo != grade) { playersInfo[player.userID].upgradeInfo = grade; RenderMode(player, false); if (!PlayerHasFlag(player.userID, PlayerFlags.MESSAGES_DISABLED)) { SendReply(player, pluginPrefix + "You are now in UPGRADE mode. [" + grade.ToString() + "]"); } } RefreshTimer(player); }
void OnStructureUpgrade(BaseCombatEntity block, BasePlayer player, BuildingGrade.Enum grade) { if (block != null && upgradeBlockCheck.Contains(block as BuildingBlock)) { upgradeBlockCheck.Remove(block as BuildingBlock); return; } if (!playersInfo.ContainsKey(player.userID)) { playersInfo[player.userID] = new PlayerDetails(); } if ((enablePermission && !permission.UserHasPermission(player.UserIDString, permissionName)) || PlayerHasFlag(player.userID, PlayerFlags.PLUGIN_DISABLED)) { return; } if (playersInfo[player.userID].upgradeInfo != grade) { playersInfo[player.userID].upgradeInfo = grade; RenderMode(player, false); if (!PlayerHasFlag(player.userID, PlayerFlags.MESSAGES_DISABLED)) { player.ChatMessage(pluginPrefix + string.Format(lang.GetMessage("UpgradeModeGrade", this, player.UserIDString), grade.ToString())); } } if (enableDistanceUpgrade && player.GetComponent <EHammer>() == null) { player.gameObject.AddComponent <EHammer>(); } RefreshTimer(player); }