Files
2HUCardTDGame/tools/panorama_decompile/decompiled_scrips/power.js
2021-11-10 08:48:00 -05:00

269 lines
9.9 KiB
JavaScript

var PowerLabelModifier;
var CritDamageLabelModifier;
var CritChanceLabelModifier;
var itemList = [];
function CustomPowerPanelRefresh() {
var mainSelected = Players.GetLocalPlayerPortraitUnit();
if(mainSelected != null && mainSelected != -1) {
if (Entities.GetTeamNumber(mainSelected) == DOTATeam_t.DOTA_TEAM_GOODGUYS) {
var basePower = Entities.GetDayTimeVisionRange(mainSelected) - 800;
var percentage = Entities.GetNightTimeVisionRange(mainSelected) - 800;
var bonusPower = Math.floor(basePower * percentage/100);
if (!Entities.IsRooted(mainSelected)) {
basePower = 0;
bonusPower = 0;
}
if (bonusPower > 0) {
PowerLabelModifier.text = basePower.toString() + "<font color='#2dc03a'>+" + bonusPower.toString() + "</font>";
} else if (bonusPower == 0) {
PowerLabelModifier.text = basePower.toString();
} else {
PowerLabelModifier.text = basePower.toString() + "<font color='red'>-" + Math.abs(bonusPower).toString() + "</font>";
}
var buffs = Entities.GetNumBuffs(mainSelected);
var isCritZero = true;
var isChanceZero = true;
var isCritFind = false;
var isChanceFind = false;
for (var i = 0; i < buffs; i++) {
var buff = Entities.GetBuff(mainSelected, i);
var buffname = Buffs.GetName( mainSelected, buff);
if (!isCritFind && buffname === "modifier_touhoutd_crit_damage") {
CritDamageLabelModifier.text = "<font color='yellow'>" + Buffs.GetStackCount(mainSelected, buff) + "%</font>";
isCritZero = false;
isCritFind = true;
if (isChanceFind) break;
} else if (!isChanceFind && buffname === "modifier_touhoutd_crit_chance") {
CritChanceLabelModifier.text = "<font color='#c9520d'>" + Buffs.GetStackCount(mainSelected, buff) + "%</font>";
isChanceZero = false;
isChanceFind = true;
if (isCritFind) break;
}
}
if (isCritZero) CritDamageLabelModifier.text = "<font color='yellow'>0%</font>";
if (isChanceZero) CritChanceLabelModifier.text = "<font color='#c9520d'>0%</font>";
} else {
PowerLabelModifier.text = "0";
CritDamageLabelModifier.text = "<font color='yellow'>0%</font>";
CritChanceLabelModifier.text = "<font color='#c9520d'>0%</font>";
}
}
}
function CustomStarPanelRefresh() {
var mainSelected = Players.GetLocalPlayerPortraitUnit();
if(mainSelected != null && mainSelected != -1) {
for (var i = 0; i <= 5; i++ ) {
var ent = Entities.GetItemInSlot(mainSelected, i);
if (ent != "-1" && ent != "32767") {
var star = 0;
var level = 0;
var itemName = Abilities.GetAbilityName(ent);
if (itemName.substr(0,6) === "item_0") {
var itemLevel = Abilities.GetLevel(ent);
star = Math.floor((itemLevel-1)/10) + 1;
level = itemLevel - (star-1) * 10;
} else {
if (itemName == "item_1003" || itemName == "item_1011") {
star = 1;
level = 10;
} else if (itemName == "item_1004" || itemName == "item_1012") {
star = 2;
level = 10;
} else if (itemName == "item_1005" || itemName == "item_1013") {
star = 3;
level = 10;
} else if (itemName == "item_1006" || itemName == "item_1014") {
star = 4;
level = 10;
}
}
for (var j = 1; j <= 5; j++) {
itemList[i][j].visible = j <= star;
}
itemList[i][6].visible = level > 0;
itemList[i][6].text = level > 0 ? level.toString() : "";
} else {
for ( var j = 1; j <= 6; j++ ) {
itemList[i][j].visible = false;
}
}
}
}
}
function CustomPanelRefresh () {
CustomPowerPanelRefresh();
CustomStarPanelRefresh();
return $.Schedule(0.15, CustomPanelRefresh);
}
;(function(){
// 能量显示
var root = $.GetContextPanel().GetParent().GetParent().GetParent();
var stats = root.FindChild("HUDElements").FindChild("lower_hud").FindChild("center_with_stats").FindChild("center_block").FindChild("stats_container");
stats.FindChildTraverse("stats").style["height"] = "110px";
stats.FindChildTraverse("stragiint").visible = false;
var statContainer = stats.FindChildTraverse("stats").FindChild("Aligner").FindChild("StatContainer");
if(statContainer.FindChildTraverse("power") == null)
{
var power = $.CreatePanel("Panel", statContainer, "power");
power.AddClass("StatIconLabel");
var column = $.CreatePanel("Panel", power, "column");
column.AddClass("LabelColumn");
var container = $.CreatePanel("Panel", column, "container");
container.AddClass("DamageLabelContainer");
var labelmodifier = $.CreatePanel("Label", container, "labelmodifier");
labelmodifier.AddClass("MonoNumbersFont");
labelmodifier.AddClass("StatRegionLabel");
labelmodifier.AddClass("StatModifier");
labelmodifier.style["margin-top"] = "1px";
labelmodifier.html = true;
labelmodifier.text = "0";
PowerLabelModifier = labelmodifier;
var icon = $.CreatePanel("Panel", power, "DamageIcon");
icon.AddClass("StatIcon");
}
if(statContainer.FindChildTraverse("crit_damage") == null)
{
var power = $.CreatePanel("Panel", statContainer, "crit_damage");
power.AddClass("StatIconLabel");
var column = $.CreatePanel("Panel", power, "column");
column.AddClass("LabelColumn");
var container = $.CreatePanel("Panel", column, "container");
container.AddClass("DamageLabelContainer");
var labelmodifier = $.CreatePanel("Label", container, "labelmodifier");
labelmodifier.AddClass("MonoNumbersFont");
labelmodifier.AddClass("StatRegionLabel");
labelmodifier.AddClass("StatModifier");
// labelmodifier.style["margin-top"] = "1px";
labelmodifier.html = true;
labelmodifier.text = "<font color='yellow'>0%</font>";
CritDamageLabelModifier = labelmodifier;
var icon = $.CreatePanel("Panel", power, "DamageIcon");
icon.AddClass("StatIcon");
}
if(statContainer.FindChildTraverse("crit_chance") == null)
{
var power = $.CreatePanel("Panel", statContainer, "crit_chance");
power.AddClass("StatIconLabel");
var column = $.CreatePanel("Panel", power, "column");
column.AddClass("LabelColumn");
var container = $.CreatePanel("Panel", column, "container");
container.AddClass("DamageLabelContainer");
var labelmodifier = $.CreatePanel("Label", container, "labelmodifier");
labelmodifier.AddClass("MonoNumbersFont");
labelmodifier.AddClass("StatRegionLabel");
labelmodifier.AddClass("StatModifier");
// labelmodifier.style["margin-top"] = "1px";
labelmodifier.html = true;
labelmodifier.text = "<font color='#c9520d'>0%</font>";
CritChanceLabelModifier = labelmodifier;
var icon = $.CreatePanel("Panel", power, "DamageIcon");
icon.AddClass("StatIcon");
}
// 背包物品星级和等级
var centerBlock = root.FindChild("HUDElements").FindChild("lower_hud").FindChild("center_with_stats").FindChild("center_block");
var inventory = centerBlock.FindChild("inventory");
var list = inventory.FindChildTraverse("inventory_list");
for ( var i = 0; i <= 2; i++ ) {
var slot = list.FindChildTraverse("inventory_slot_" + i.toString());
var item = slot.FindChildTraverse("AbilityButton");
itemList[i] = item;
var labelmodifier = $.CreatePanel("Label", item, "labellevel");
itemList[i][6] = labelmodifier;
labelmodifier.style.width = "16px";
labelmodifier.style.height = "16px";
labelmodifier.style.color = "#FFCC33";
labelmodifier.style["horizontal-align"] = "right";
labelmodifier.style["vertical-align"] = "top";
labelmodifier.style["font-size"] = "16px";
labelmodifier.style["text-shadow"] = "0px 0px 4px 4 #000000";
labelmodifier.style["letter-spacing"] = "0 px";
labelmodifier.text = "";
for ( var j = 1; j <= 5; j++ )
{
var img = $.CreatePanel("Image", item, "Image_" + j.toString());
var imgNum = "Image_"+j.toString();
img.SetImage("s2r://panorama/images/custom_game/star_png.vtex");
img.style.width = "12px";
img.style.height = "12px";
img.style.x = (12* (j-1)).toString() + "px";
img.style["horizontal-align"] = "left";
img.style["vertical-align"] = "bottom";
itemList[i][j] = img;
img.visible = false;
}
}
list = inventory.FindChildTraverse("inventory_list2");
for ( var i = 3; i <= 5; i++ ) {
var slot = list.FindChildTraverse("inventory_slot_" + i.toString());
var item = slot.FindChildTraverse("AbilityButton");
itemList[i] = item;
var labelmodifier = $.CreatePanel("Label", item, "labellevel");
itemList[i][6] = labelmodifier;
labelmodifier.style.width = "16px";
labelmodifier.style.height = "16px";
labelmodifier.style.color = "#FFCC33";
labelmodifier.style["horizontal-align"] = "right";
labelmodifier.style["vertical-align"] = "top";
labelmodifier.style["font-size"] = "16px";
labelmodifier.style["text-shadow"] = "0px 0px 4px 4 #000000";
labelmodifier.style["letter-spacing"] = "0 px";
labelmodifier.text = "";
for ( var j = 1; j <= 5; j++ )
{
var img = $.CreatePanel("Image", item, "Image_" + j.toString());
var imgNum = "Image_"+j.toString();
img.SetImage("s2r://panorama/images/custom_game/star_png.vtex");
img.style.width = "12px";
img.style.height = "12px";
img.style.x = (12* (j-1)).toString() + "px";
img.style["horizontal-align"] = "left";
img.style["vertical-align"] = "bottom";
itemList[i][j] = img;
img.visible = false;
}
}
CustomPanelRefresh();
GameEvents.Subscribe("dota_inventory_changed", OnDotaInventoryChanged);
GameEvents.Subscribe("dota_inventory_item_changed", OnDotaInventoryChanged);
// GameEvents.Subscribe("dota_player_update_selected_unit", OnDotaPlayerUpdateSelectedUnit);
// GameEvents.Subscribe("dota_player_update_query_unit", OnDotaPlayerUpdateSelectedUnit); //点击单位
// GameEvents.Subscribe("thtd_power_update", CustomPowerPanelRefresh);
// GameEvents.Subscribe("dota_portrait_unit_modifiers_changed", OnDotaPortraitUnitModifiersChanged);
})();
function OnDotaInventoryChanged(data) {
// 背包有物品称动、入、出均可触发
CustomStarPanelRefresh();
}
// function OnDotaPlayerUpdateSelectedUnit(data) {
// CustomPowerPanelRefresh();
// CustomStarPanelRefresh();
// }
// function OnDotaPortraitUnitModifiersChanged(data) {
// CustomPowerPanelRefresh();
// }