Готовый перевод Tales of Maj'Eyal / Сказы Мадж'Эяла: tome_modules_mod
file/game/modules/tome.team/mod/ai/escort.lua.txt
doEmote("Помогите!"..(dir and (" %s to the %s!"):format(self:canSee(enemy) and string.capitalize(enemy.name) or "Что-то", dir) or ""))
file/game/modules/tome.team/mod/ai/heal.lua.txt
print("AI looking for target", self.uid, self.name, "::", act.uid, act.name, self.fov.actors[act].sqdist)
print(self.name, self.uid, "dumb ai talents can try use", t.name, tid, "::", t.mode, not self:isTalentCoolingDown(t), target_dist <= self:getTalentRange(t), self:preUseTalent(t, true), self:canProject({type="bolt"}, self.ai_target.actor.x, self.ai_target.actor.y))
print(self.name, self.uid, "dumb ai talents can use", t.name, tid)
print(self.name, self.uid, "dumb ai talents can activate", t.name, tid)
print("dumb ai uses", tid)
file/game/modules/tome.team/mod/ai/party.lua.txt
print("[PARTY AI] leashing to anchor", self.name)
print("[PARTY AI] moving towards anchor", self.name)
file/game/modules/tome.team/mod/ai/quests.lua.txt
game.level.turn_counter_desc = "Защищайте Лиммира от демонов прибывающих с северо-востока. Сдерживайте их!"
doEmote("Это место искажено! Я очищу его! Защищай меня пока я не закончу!", 120)
file/game/modules/tome.team/mod/ai/sandworm_tunneler.lua.txt
print("tunneling from",x1, y1, "to", x2, y2, "initial dir", xdir, ydir)
print(feat, "try pos", nx, ny, "dir", util.coordToDir(xdir, ydir, nx, ny))
game.logSeen(self, "#OLIVE_DRAB#%s зарывается в землю и скрывается.", self.name)
file/game/modules/tome.team/mod/ai/shadow.lua.txt
game.logPlayer(self.summoner, "#PINK#%s уходит в тени.", self.name:capitalize())
file/game/modules/tome.team/mod/ai/tactical.lua.txt
print("looking for dmap", dir, i, "::", c, cd)
print("================= TACTICAL AI", self.name, self.uid, self.x, self.y, "on target", aitarget and aitarget.name, aitarget and aitarget.uid, ax, ay, "====")
print(self.name, "tactical ai talents testing", t.name, tid, t.is_object_use and t.getObject(self, t).name or "", "on target", aitarget and aitarget.name, ax, ay)
print("[DEBUG] ударил врага!")
print("[DEBUG] ударил себя!")
print("[DEBUG] ударил союзника!")
print(self.name, self.uid, "tactical ai talents can use", tid, tact, "weight", val)
print("Tactical ai report for", self.name)
print(" * "..k, v, "(mult)", self.ai_tactic[k])
print("Тактический выбор:", res[1][1], tid)
file/game/modules/tome.team/mod/ai/target.lua.txt
print("AI looking for target", self.uid, self.name, "::", act.uid, act.name, self.fov.actors[act].sqdist)
print("AI took for target", self.uid, self.name, "::", act.uid, act.name, self.fov.actors[act].sqdist, "<", sqsense)
file/game/modules/tome.team/mod/ai/worldnpcs.lua.txt
print("AI looking for target", self.uid, self.name, "::", act.uid, act.name, self.fov.actors[act].sqdist)
print("AI took for target", self.uid, self.name, "::", act.uid, act.name, self.fov.actors[act].sqdist, "<", sqsense)
print(self.name, "Выбор маршрута!", self.ai_state.route_path, "from", self.x, self.y, "to", self.ai_state.route.x, self.ai_state.route.y)
print("Использование маршрута", self.ai_state.route_path)
print("Nulling!", path, path and path[1], path and path[1] and core.fov.distance(self.x, self.y, path[1].x, path[1].y))
print("Hostile selected random wander", tx, ty)
file/game/modules/tome.team/mod/class/Actor.lua.txt
game.logSeen(self, "%s был разрушен #ORCHID#антимагическими силами#LAST#!", t.name)
game.logSeen(self, "%s пытается одолеть паралич.", self.name:capitalize())
game.log("#VIOLET#Следуя пути развития %s; %s повышается на 1.", b.name, self.stats_def[stat].name)
game.log("#VIOLET#Следуя пути развития %s; изучается ветка талантов %s.", b.name, tt)
game.log("#VIOLET#Следуя пути развития %s; изучается талант %s.", b.name, t.name)
game.log("#VIOLET#Следуя пути развития %s; изучается талант %s.", b.name, t.name)
game.logPlayer(self, "Вы спите и не можете двигаться!")
game.logPlayer(self, "Вы не в состоянии пошевелиться!")
game.logPlayer(self, "#F53CBE#Ваши движения усилили ваше неистовство! (+1 время действия)")
print("[PATH STRING] for", self.name, " :=: ", ps)
game.logPlayer(self, "#LIGHT_RED#Ваш %s не может быть телепортирован и падает на землю!", o:getName{do_color=true})
game.logPlayer(self, "#CADET_BLUE#Вы обнаружили ловушку (%s)!", trap:getName())
return "#B4B4B4# "..score
elseif score <= 20 then
return "#B4B4B4#"..score
elseif score <= 40 then
return "#FFFFFF#"..score
elseif score <= 60 then
return "#00FF80#"..score
elseif score <= 80 then
return "#0080FF#"..score
elseif score <= 99 then
return "#8d55ff#"..score
elseif score >= 100 then
return "#8d55ff#"..score -- Enable longer numbers
end
print("============================================== SEEING from", self.name)
print(("%3d : %-40s at %3dx%3d (see at %3dx%3d), diff %3dx%3d"):format(d.sqdist, a.name, a.x, a.y, d.x, d.y,d.dx,d.dy))
return ("%s(%d, %s)"):format(e.desc, dur, charges)
elseif dur and not charges then return ("%s(%d)"):format(e.desc, dur)
elseif not dur and charges then return ("%s(%s)"):format(e.desc, charges)
else return e.desc end
print("[HEALING]", self.uid, self.name, "for", value)
game:delayedLogDamage(src or self, self, -value-psi_heal, ("#LIGHT_GREEN#%d лечения #LAST##AQUAMARINE#(%d переводится в пси)#LAST#"):format(value, psi_heal), false)
game:delayedLogDamage(src or self, self, -value, ("#LIGHT_GREEN#%d здоровья#LAST#"):format(value), false)
game:delayedLogDamage(src or {}, self, 0, ("#STEEL_BLUE#(%d shifted)#LAST#"):format(value), nil)
game:delayedLogDamage(src, self, 0, ("#SLATE#(%d поглощено)#LAST#"):format(absorb), false)
game.logSeen(self, "%s высвобождает накопленный урон для возмездия!", self.name:capitalize())
print("[onTakeHit] After Trained Reactions effect reduction ", value)
print("[onTakeHit] After Trained Reactions life% trigger ", value)
game:delayedLogMessage(self, nil, "mitosis_damage", "#DARK_GREEN##Source# распределяет урон между %s и слизью!", string.his_her(self))
game:delayedLogMessage(self, src, "displacement_shield"..(self.displacement_shield_target.uid or ""), "#CRIMSON##Source# переносит часть урона в #Target#!")
game:delayedLogDamage(src, self, 0, ("#CRIMSON#(%d перенесено)#LAST#"):format(displaced), false)
game:delayedLogDamage(src, self.displacement_shield_target, displaced, ("#CRIMSON#%d перенесено#LAST#"):format(displaced), false)
game:delayedLogDamage(src, self, 0, ("#STEEL_BLUE#(%d поглощено временем)#LAST#"):format(math.min(value, self.time_shield_absorb)), false)
game.logPlayer(self, "Ваш темпоральный щит уничтожен!")
game:delayedLogDamage(src, self, 0, ("#SLATE#(%d поглощено)#LAST#"):format(adjusted_value), false)
game:delayedLogDamage(self, src, reflected, ("#SLATE#%d отражено#LAST#"):format(reflected), false)
game:delayedLogMessage(self, src, "reflection" ,"#CRIMSON##Source# отражает урон в #Target#!#LAST#")
game.logPlayer(self, "Ваш щит разрушился от полученного урона!")
game:delayedLogMessage(self, src, "displacement_shield"..(shadow.uid or ""), "#CRIMSON##Source# делит часть полученного урона с тенью!")
game:delayedLogDamage(src, self, 0, ("#PINK#(%d перенесён)#LAST#"):format(displaced), false)
game:delayedLogDamage(src, shadow, displaced, ("#PINK#%d перенесён#LAST#"):format(displaced), false)
game:delayedLogMessage(self, nil, "disruption_shield", "#LIGHT_BLUE##Source# обращает повреждение в ману!")
game:delayedLogDamage(src, self, 0, ("#LIGHT_BLUE#(%d преобразован)#LAST#"):format(converted), false)
game:delayedLogDamage(src, self, 0, ("#SLATE#(%d в кости)#LAST#"):format(value), false)
game:delayedLogDamage(src, self, 0, ("#SLATE#(%d отклонено)#LAST#"):format(oldval - value), false)
game:delayedLogDamage(src or {}, self, 0, ("#STEEL_BLUE#(%d в лёд)#LAST#"):format(value*absorb), nil)
game:delayedLogDamage(src, self, 0, ("#SLATE#(%d поглощено)#LAST#"):format(absorb), false)
game.logPlayer(self, "Ваше поглощающее поле уничтожено!")
game.logSeen(self, "%s разбит на кусочки!", self.name:capitalize())
game.logPlayer(self, hateMessage.." (+%d ненависть)", hateGain)
game.logPlayer(src, hateMessage.." (+%d ненависть)", hateGain)
game.logSeen(self, "%s делится надвое!", self.name:capitalize())
print("Psi Damage Resist", psi_damage_resist, "Damage", damage_to_psi, "Final", damage_to_psi*psi_damage_resist)
game:delayedLogMessage(self, nil, "Solipsism hit", mindcolor.."#Source# переводит часть урона в пси!")
game:delayedLogDamage(src, self, damage_to_psi*psi_damage_resist, ("%s%d %s#LAST#"):format(mindcolor, damage_to_psi*psi_damage_resist, "в пси"), false)
game:delayedLogDamage(src, self, 0, ("#RED#(%d проигнорировано)#LAST#"):format(value - (self.life - 1)), false)
game:delayedLogMessage(self, nil, "unstoppable", "#RED##Source# неудержим!")
game.logSeen(self, "#YELLOW#%s исцеляется зарядом позитивной энергии!#LAST#", self.name:capitalize())
game.logSeen(self, "%s исчезает на мгновение и появляется снова невредимой!", self.name:capitalize())
logCombat(src, "#AQUAMARINE#Вы высасываете вим из #Target#.")
game:delayedLogMessage(src, self, "life_leech"..self.uid, "#CRIMSON##Source# похищает здоровье #Target#!")
game:delayedLogMessage(src, self, "lifesteal"..self.uid, "#CRIMSON##Source# крадёт здоровье из #Target#!")
game:delayedLogDamage(src, self, 0, ("#LIGHT_GREY#(%d игнорируется)#LAST#"):format(ignored), false)
print("[TAKE HIT] after flat damage cap", value)
game:delayedLogDamage(src, self, 0, ("#SLATE#(%d в камень)#LAST#"):format(abs), false)
game:delayedLogMessage(eff.src, self, "stone_link"..(self.uid or ""), "#OLIVE_DRAB##Source# переносит урон с #Target# в %s!#LAST#", string.his_her_self(eff.src))
game:delayedLogDamage(src, self, 0, ("#OLIVE_DRAB#(%d перенесено)#LAST#"):format(value), false)
game:delayedLogDamage(src, eff.src, value, ("#OLIVE_DRAB#%d перенесено#LAST#"):format(value), false)
game:delayedLogMessage(src, self, "resource_leech", "#CRIMSON##Source# высасывает энергию из #Target#!")
game.logSeen(self, self.self_resurrect_msg or "#LIGHT_RED#%s восстаёт из мёртвых!", self.name:capitalize())
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, "ВОССТАЛ!", {255,120,0})
game.logPlayer(game.player, "Вы чувствуете выброс силы от смерти могущественного создания.")
print("Refusing to drop "..self.name.." artifact "..o.name.." with chance "..o.__special_boss_drop.chance)
game.logPlayer(src.summoner, "%s подпитывается ненавистью своей последней жертвы. (+%d ненависти)", src.name:capitalize(), src.summoner_hate_per_kill)
game.logPlayer(game.player, "#LIGHT_RED#Стирающее существование заклинание проваливается и отменяется, оставляя временную линию нетронутой.")
simpleLongPopup("Level 50!", "Вы достигли #LIGHT_GREEN#50 уровня персонажа#WHITE#, поздравляем!\n\nЭтот уровень особый, он приносит вам на #LIGHT_GREEN#10#WHITE# больше очков характеристик, на #LIGHT_GREEN#3#WHITE# больше очков классовых талантов и на #LIGHT_GREEN#3#WHITE# больше общих очков талантов.\nТеперь можете смело идти к победе!", 400)
game.flyers:add(x, y, 80, 0.5, -2, "НОВЫЙ УРОВЕНЬ!", {0,255,255})
game.log("#00ffff#Добро пожаловать на уровень %d [%s].", self.level, self.name:capitalize())
game.log("%s имеет %s не распределённые. %s", self.name:capitalize(), table.concat(points, ", "), more)
game.logPlayer(self, "#AQUAMARINE#Вы получили еще одну жизнь (%d осталось).", self.easy_mode_lifes)
print("Общая переносимость", enc)
game.logPlayer(self, "#FF0000#Вы несёте слишком много. Вы перегружены!")
game.logPlayer(self, "#FF0000#Выбросите что-то из своих вещей.")
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, rng.float(-2.5, -1.5), "+ПЕРЕГРУЗ!", {255,0,0}, true)
game.logPlayer(self, "#00FF00#Вы больше не перегружены.")
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, rng.float(-2.5, -1.5), "-ПЕРЕГРУЗ!", {255,0,0}, true)
game.logPlayer(self, "Вы не можете менять экипировку пока спите!")
message == "Воитель"
game.logSeen(self, "%s искажает пространство и время, чтоб экипировать: %s.", self.name:capitalize(), names)
game.logSeen(self, "%s меняет %s оружие на: %s.", self.name:capitalize(), self:his_her(), names)
print("Активация пси клинков", o.name)
print("деактивация пси клинков", o.name)
return "MAINHAND" end
return "OFFHAND"
else
return o.offslot
end
game.logPlayer(self, "#STEEL_BLUE#Колдует %s.", anom.name)
game.bignews:saySimple(180, "#STEEL_BLUE#Выбор цели для %s", anom.name)
game.logPlayer(self, "#STEEL_BLUE#Вы перенесены на иную временную линию.")
game.logPlayer(self, "#LIGHT_RED#Вы потеряли контроль и высвободили аномалию!")
game.logPlayer(self, "#LIGHT_RED#Вы чувствуете, что пространство и время начинают искажаться!")
game.logPlayer(self, "#LIGHT_BLUE#Пространство и время стабилизируются.")
game.logPlayer(self, "#LIGHT_RED#Пространство и время выходят из под вашего контроля!")
game.logPlayer(self, "#LIGHT_BLUE#Пространство и время стабилизируются... немного.")
game.logSeen(self, self.forbid_talents[ab.id] or "%s не может использовать %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "%s слишком напуган, чтобы применить %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "%s находится под безмолвием и не может использовать %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "Заклинания не удалось.")
game.logSeen(self, "%s потерял связь с природой и не может использовать %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "%s не может использовать данный тип усилений.", self.name:capitalize())
game.logSeen(self, "%s не может использовать данный тип усилений.", self.name:capitalize())
game.logSeen(self, "Тяжёлая броня на %s препятствует использованию умения.", self.name:capitalize())
game.logSeen(self, "%s не может использовать это умение при одетом оружии или щите.", self.name:capitalize())
game.logPlayer(self, "%s спит и не может сделать этого.", self.name:capitalize(), ab.name)
game.logPlayer(self, "Вы %s %s активировать %s.", res_def.invert_values and "have too much committed" or "do not have enough uncommitted", res_def.name, ab.name)
game.logPlayer(self, "Недостаточно резонанса для использования %s.", ab.name)
game.logPlayer(self, "В крепости не хватает энергии для %s.", ab.name)
game.logPlayer(self, "У вас слишком много %s для использования %s.", res_def.name, ab.name)
game.logPlayer(self, "У вас не хватает %s для использования %s.", res_def.name, ab.name)
game.logPlayer(self, "Вы провалили использование %s из-за нарушенного природного равновесия!", ab.name)
game.logSeen(self, "%s %s был прерван #ORCHID#антимагическими силами#LAST#!", self.name:capitalize(), ab.name)
game.logSeen(self, "%s %s был прерван #ORCHID#антиприродными силами#LAST#!", self.name:capitalize(), ab.name)
game.logSeen(self, "%s дезориентирован и не смог использовать %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "%s не смог использовать %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "%s слишком испуган и не может использовать %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "%s облажался и провалил использование %s, %s ранен!", self.name:capitalize(), ab.name, self:his_her_self())
game.logSeen(self, "%s's %s был прерван выстрелом!", self.name:capitalize(), ab.name)
game.logSeen(self, "%s", self:useTalentMessage(ab))
game.logSeen(self, "%s %s %s.", self.name:capitalize(), self:isTalentActive(ab.id) and "деактивирует" or "активирует", ab.name)
game.logSeen(self, "%s колдует %s.", self.name:capitalize(), ab.name)
game.logSeen(self, "%s использует %s.", self.name:capitalize(), ab.name)
print("[CALLBACK] upgrading to prioritized", storename)
return "spell"
elseif t.is_summon then
return "summon"
elseif t.type[1]:find("^technique/archery") then
return "archery"
elseif t.type[1]:find("^technique/") then
return "weapon"
elseif t.is_mind then
return "mind"
else
return "standard"
end
game.logSeen(self, "%s талант '%s%s' прерван мозговым паразитом.", self.name:capitalize(), (t.display_entity and t.display_entity:getDisplayString() or ""), t.name)
d:add({"color",0x6f,0xff,0x83}, "Текущий уровень таланта: ", {"color",0x00,0xFF,0x00}, ("%.1f"):format(self:getTalentLevel(t)), true)
d:add({"color",0x6f,0xff,0x83}, "Тип: ", {"color",0x00,0xFF,0x00}, "Пассивный", true)
d:add({"color",0x6f,0xff,0x83}, "Тип: ", {"color",0x00,0xFF,0x00}, "Поддерживаемый", true)
d:add({"color",0x6f,0xff,0x83}, "Тип: ", {"color",0x00,0xFF,0x00}, "Активируемый", true)
d:add({"color",0x6f,0xff,0x83}, "Требуется резонанса: ", {"color",0xFF, 0xFF, 0x00}, ""..math.round(util.getval(t.feedback, self, t) * (100 + 2 * self:combatFatigue()) / 100, 0.1), true)
d:add({"color",0x6f,0xff,0x83}, "Требуется энергии крепости: ", {"color",0x00,0xff,0xa0}, ""..math.round(t.fortress_energy, 0.1), true)
d:add({"color",0x6f,0xff,0x83}, "Требуется резонанса на поддержание: ", {"color",0xFF, 0xFF, 0x00}, ""..(util.getval(t.sustain_feedback, self, t)), true)
d:add({"color",0x6f,0xff,0x83}, ("%s %s: "):format(res_def.name:capitalize(), cost >= 0 and "cost" or "gain"), res_def.color or {"color",0xff,0xa8,0xa8}, ""..math.round(math.abs(cost), .1), true)
d:add({"color",0x6f,0xff,0x83}, ("Затраты %s на поддержание: "):format(res_def.name:lower()), res_def.color or {"color",0xff,0xa8,0xa8}, ""..math.round(cost, .1), true)
d:add({"color",0x6f,0xff,0x83}, ("%s %s: "):format(cost > 0 and "Generates" or "Removes", res_def.name:lower()), res_def.color or {"color",0xff,0xa8,0xa8}, ""..math.round(math.abs(cost), .1), true)
d:add({"color",0x6f,0xff,0x83}, ("%s %s: "):format(cost > 0 and "Drains" or "Replenishes", res_def.name:lower()), res_def.color or {"color",0xff,0xa8,0xa8}, ""..math.round(math.abs(cost), .1), true)
d:add({"color",0x6f,0xff,0x83}, "Дальность: ", {"color",0xFF,0xFF,0xFF}, ("%d"):format(self:getTalentRange(t)), true)
d:add({"color",0x6f,0xff,0x83}, "Дальность: ", {"color",0xFF,0xFF,0xFF}, "melee/personal", true)
d:add({"color",0x6f,0xff,0x83}, ("%s Откат: "):format(t.fixed_cooldown and "Fixed " or ""), {"color",0xFF,0xFF,0xFF}, ""..self:getTalentCooldown(t), true)
d:add({"color",0x6f,0xff,0x83}, "Скорость снаряда: ", {"color",0xFF,0xFF,0xFF}, ""..(speed * 100).."% от базовой", true)
d:add({"color",0x6f,0xff,0x83}, "Скорость снаряда(только для дальних атак): ", {"color",0xFF,0xFF,0xFF}, "instantaneous", true)
d:add({"color",0x6f,0xff,0x83}, "Скорость Использование: ", {"color",0xFF,0xFF,0xFF}, uspeed, true)
d:add({"color",0x6f,0xff,0x83}, "Шанс быть не обнаруженным: ", {"color",0xFF,0xFF,0xFF}, ("%d%%"):format(chance), true)
d:add({"color",0x6f,0xff,0x83}, "Это: ", {"color",0xFF,0xFF,0xFF}, table.concatNice(is_a, ", ", " and "), true)
d:add({"color",0x6f,0xff,0x83}, ("%s Откат: "):format(t.fixed_cooldown and "Fixed " or ""), {"color",0xFF,0xFF,0xFF}, ""..self:getTalentCooldown(t), true)
d:add({"color",0x6f,0xff,0x83}, "Отключит: ", {"color",0xFF,0xFF,0xFF}, table.concat(replaces, ', '), true)
d:add({"color",0x6f,0xff,0x83}, "Описание: ", {"color",0xFF,0xFF,0xFF})
simplePopup("Автоматическое использование активировано", t.name:capitalize().." теперь будет использоваться по мере доступности.")
list[#list+1] = "- требует ходов для использования"
list[#list+1] = "- требует цель, ваш последний враг будет выбран автоматически."
list[#list+1] = "- будет работать только при наличии врагов в поле зрения"
list[#list+1] = "- будет автоматически выбирать вас в качестве цели, если такая требуется"
list[#list+1] = "- срабатывает если врага видно"
list[#list+1] = "- будет срабатывать только если враги будут рядом и видимы"
simplePopup("Автоматическое использование отключено", t.name:capitalize().." не будет автоматически использоваться.")
return "mental"
elseif talent_def.is_spell then return "spell"
else return "sustain_generic" end
game.logSeen(self, "#LIGHT_RED#%s начинает задыхаться!", self.name:capitalize())
game.logSeen(self, "#ORANGE#%s срывает эффект '%s'!", self.name:capitalize(), e.desc)
logCombat(who, "#Source# отклоняет снаряд от #Target# %s", dir)
game.logSeen(self, "%s отражает заклинание!", self.name:capitalize())
game.logSeen(self, "%s игнорирует заклинание!", self.name:capitalize())
print("Projectile slowing down from", proj.energy.mod)
print("Projectile slowing down to", proj.energy.mod)
print("Projectile slowing down from", p.energy.mod)
print("Projectile slowing down to", p.energy.mod)
print("Sanctuary marking reduced damage on projectile:", p.tmp_proj.sanctuaryDamageChange)
game.logPlayer(self, "Вы не можете бросить предмет пока спите.")
game.logPlayer(self, "Вы не можете выбросить %s (сюжетный предмет).", o:getName{do_colour=true})
game.logPlayer(self, "Вы не можете выбросить %s (помеченный).", o:getName{do_colour=true})
game.logPlayer(self, "Вы уничтожаете %s.", o:getName{do_colour=true, do_count=true})
game.logPlayer(self, "Вы не можете уничтожить %s.", o:getName{do_colour=true})
game.logSeen(self, "%s падает на пол: %s.", self.name:capitalize(), stack:getName{do_color=true, do_count=true})
game.logPlayer(self, "Вы не можете сменить свою экипировку пока спите!")
game.logPlayer(self, "Вы не можете сменить экипировку!")
game.logPlayer(self, "Вы должны выбросить %s из-за нехватки свободного места.", rrs:getName{do_color = true})
game.logPlayer(self, "Вы не можете сменить свою экипировку пока спите!")
game.logPlayer(self, "Вы не можете сменить экипировку!")
return ("%s - %sEncumbrance %d/%d"):format(title, color, enc, max)
end
game.logPlayer(self, "Вы извлекаете %s из %s", gem:getName{do_color=true, do_count=true}, o:getName{do_color=true, do_count=true})
game.log("Вы получаете %0.2f золота от трансмогрификации %s.", price, o:getName{do_count=true, do_color=true})
simplePopup("Трансмогрификационый Сундук", "Когда вы закрываете окно инвентаря, все предметы в сундуке будут трансмогрификацированы.")
return "Трансмогрификационый Сундук"
end
return "transmogrify"
end
game.logPlayer(self, "Вы не можете сменить экипировку!")
game.logPlayer(self, "Вы извлекаете %s из %s.", oldo:getName{do_color=true}, base_o:getName{do_color=true})
game.logPlayer(self, "Вы не можете сменить экипировку!")
game.logPlayer(self, "Вы не можете смастерить это без требуемых предметов.")
game.logPlayer(self, "Этот предмет не применим: %s.", err)
game.logPlayer(self, "Данную вещь нельзя изменить таким способом.")
game.logPlayer(self, "Данную вещь нельзя изменить таким способом.")
game.logPlayer(self, "Данную вещь нельзя изменить таким способом.")
game.logPlayer(self, "Данную вещь нельзя изменить таким способом.")
game.logPlayer(self, "Эта вещь уже подвергалась изменениям.")
game.logPlayer(self, "Вы прикрепили %s к %s.", wear_o:getName{do_color=true}, base_o:getName{do_color=true})
game.logPlayer(self, "Вы не смогли прикрепить %s к %s.", wear_o:getName{do_color=true}, base_o:getName{do_color=true})
game.log("#CRIMSON#--- %s IN COMBAT since %d turns", self.name, (game.turn - self.in_combat) / 10)
game.log("#YELLOW#--- %s OUT OF COMBAT", self.name)
file/game/modules/tome.team/mod/class/Encounter.lua.txt
print("coords", (coord.x+i-1).."x"..(coord.y+y-1), tonumber(c))
file/game/modules/tome.team/mod/class/FortressPC.lua.txt
game.logPlayer(self, "Вы не можете двигаться!")
game.logPlayer(self, "Вы обнаружили ловушку (%s)!", trap:getName())
print("[MOVE] actor moved without a starting position", self.name, x, y)
simplePopup(self.name, "Телепортация не удалась!")
file/game/modules/tome.team/mod/class/Game.lua.txt
Calendar.new("/data/calendar_allied.lua", "Сегодня % %s %s год, эпоха господства Мадж'Эяла.\nТекущее время: %02d:%02d.", 122, 167, 11)
print("Игрок мертв, перезагрузка")
core.display.drawStringBlendedNewSurface(lfont, "<Режим прокрутки, используйте клавиши перемещения для осмотра местности>", unpack(colors.simple(colors.GOLD)))
Calendar.new("/data/calendar_"..(self.player.calendar or "allied")..".lua", "Сегодня %s %s %s год, эпоха господства Мадж'Эяла.\nТекущее время: %02d:%02d.", (self.player.calendar_start_year or 122), (self.player.calendar_start_day or 167), (self.player.calendar_start_hour or 11))
title="Основной персонаж"
Birther.new("Character Creation ("
desc", ipairs), "
self.player, {"base", "world", "difficulty", "permadeath", "race", "subrace", "sex", "class", "subclass" }
Calendar.new("/data/calendar_"..(self.player.calendar or "allied")..".lua", "Сегодня %s %s %s год, эпоха господства Мадж'Эяла.\nТекущее время: %02d:%02d.", 122, 167, 11)
print("[PLAYER BIRTH] resolve...")
print("[PLAYER BIRTH] resolved!")
).new("Добро пожаловать в #LIGHT_BLUE#Tales of Maj'Eyal"
Calendar.new("/data/calendar_"..(self.player.calendar or "allied")..".lua", "Сегодня %s %s %s год, эпоха господства Мадж'Эяла.\nТекущее время: %02d:%02d.", 122, 167, 11)
print("Loading tileset attachements from ", Tiles.prefix.."attachements.lua")
print("Loading tileset attachements error", err)
print("Loading tileset attachements error", err)
print("Loading tileset attachements from ", Tiles.prefix..file)
print("Loading tileset attachements error", err)
print("Loading tileset attachements error", err)
print("Loading tileset facings from ", Tiles.prefix.."facings.lua")
print("Loading tileset facings error", err)
print("Loading tileset facings error", err)
print("Loading tileset facings from ", Tiles.prefix..file)
print("Loading tileset facings error", err)
print("Loading tileset facings error", err)
print("[DISPLAY MODE] Tileset: "..gfx.tiles)
print("[DISPLAY MODE] Размер: "..gfx.size)
print("[GAME] Создание FBOs")
description = ([[%s the level %d %s %s.
Сложность: %s / %s
Кампания: %s
Уровень исследования %s of %s.]])
description = ([[%s %s %s.
Сложность: %s / %s
Кампания: %s]])
print("[STORE] Хватает", def)
print("Direct execute of on level load", id, fct, data)
print("Registering on level load", id, fct, data)
print("Running on level loads", self.zone.short_name.."-"..self.level.level)
self.logPlayer(self.player, "#LIGHT_RED#Вы не можете покинуть местность из-за совершённого недавно убийства (%d ходов осталось ожидать)!", left)
self.logPlayer(self.player, "#LIGHT_RED#Вы не можете покинуть данную местность в чужом теле!")
self.logPlayer(self.player, "#LIGHT_RED#Вы не можете покинуть данную местность этим персонажем!")
self.logPlayer(self.player, "#LIGHT_RED#Вы не сможете избежать своей судьбы, покинув местность!")
print("=====Level Generation Failure: Unable to create level", lev, "of zone:", failed_zone.short_name, "===")
print("\n=====START Level Generation Failure Log=====\n")
print("=====Zone=====:", failed_zone, "====")
print("=====Generator Data:=====", failed_zone.generator, "====")
print("=====Failed Level====:", failed_level, "====")
print("\n=====END Level Generation Failure Log=====\n")
print("[changeLevelFailure] Stay selected by default")
print("[changeLevelFailure]", sel.name)
print("[changeLevelFailure]", sel.name)
simplePopup("Информация записана", "Информация о неисправной локации и этажу записана в логе.")
print("[changeLevelFailure]", sel.name)
print("[changeLevelFailure]", sel.name)
text = ("Игра не смогла создать %s этаж %s за %s попыток. Что вы будете делать дальше?")
print("Entering zone:", self.zone.name, "level:", self.level and self.level.level, "in debug mode")
simpleWaiter("Загрузка уровня", "Пожалуйста, подождите, пока загружается уровень...", nil, 10000)
yesnoPopup("Слишком просто!", "Эта локация настолько проста для вас, что вы можете без проблем прогуляться до её конца.", function(ret) if ret then
game:changeLevel(self.zone.max_level)
end end, "Прогуляться", "Остаться тут")
feeling = "Вы волнуетесь, из-за чего сердце начинает биться всё быстрее. Чувствуется ужасная угроза при входе в эту область."
feeling = "Вы немного волнуетесь и начинаете передвигаться осторожнее."
feeling = "Вы очень уверенно входите в это место."
feeling = "Вы заходите в эту область ни о чём не задумываясь и зевая.Чувствуется, что лучше потратить своё время где-то ещё."
self.log("#TEAL#%s", feeling)
simpleWaiter("Хрономансия", "Сворачивание пространственно-временной структуры...")
simpleWaiter("Хрономансия", "Разворачивание пространственно-временной структуры...")
print("Updating zone name", name)
logMessage(src, dams.srcSeen, target, dams.tgtSeen, "#Source# попадает в #Target# на %s (%0.0f всего урона)%s.", table.concat(dams.descs, ", "), dams.total, dams.healing<0 and (" #LIGHT_GREEN#[%0.0f восстановлено]#LAST#"):format(-dams.healing) or "")
logMessage(src, dams.srcSeen, target, dams.tgtSeen, "#Source# поражает #Target# на %s урона.", table.concat(dams.descs, ", "))
logMessage(src, dams.srcSeen, target, dams.tgtSeen, "#Source# получает %s.", table.concat(dams.descs, ", "))
logMessage(src, dams.srcSeen, target, dams.tgtSeen, "#Target# получает %s от #Source#.", table.concat(dams.descs, ", "))
self.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, rng.float(-2.5, -1.5), ("Убивает (%d)!"):format(dams.total), {255,0,255}, true)
self:delayedLogMessage(target, nil, "death", self:logMessage(src, dams.srcSeen, target, dams.tgtSeen, "#{bold}##Source# убивает #Target#!#{normal}#"))
game.log("%s", self.delayed_death_message)
self.log("Полоска здоровья и тактические границы отображаются большими.")
self.log("Показывать только шкалу здоровья.")
self.log("Тактическая информация не отображается.")
self.log("Полоска здоровья и тактические границы отображаются маленькими.")
self.logPlayer(self.player, "Вы не можете делать это на карте мира.")
print(" => ", a.image, (a.display_x or 0).."x"..(a.display_y or 0))
melindaCompanion(self.player, "Осквернитель", "Искажатель")
self.log("В каком направлении бежать?")
self.log("Вы не можете автоматически исследовать этот уровень.")
self.log("Вы не можете заниматься автоисследованием, когда в зоне видимости присутствуют враги(%s на %s%s)!", seen[1].actor.name, dir, self.level.map:isOnScreen(seen[1].x, seen[1].y) and "" or " - offscreen")
self.log("Нечего больше исследовать.")
self.log("Страница горячих клавиш %d сейчас отображается.", self.player.hotkey_page)
self.log("Страница горячих клавиш %d сейчас отображается.", self.player.hotkey_page)
self.log("Вы не можете покинуть этот уровень сейчас.")
self.log("Вы не можете использовать природный дар из-за следующего эффекта(ов): %s", table.concat(stop, ", "))
self.log("Выход из данной местности не тут.")
getEncumberTitleUpdator("Инвентарь")
game.log("#GOLD#Автоматически использует талант: %s", not self.player.no_automatic_talents and "#LIGHT_GREEN#enabled" or "#LIGHT_RED#disabled")
).new("Журнал сообщений"
self.log("Отображение существ.")
self.log("Отображение талантов.")
game.log("Подсказка %s", self.tooltip.locked and "locked" or "unlocked")
local l = {
"resume",
{ "Показать достижения", function() self:unregisterDialog(menu) self:registerDialog(require("mod.dialogs.ShowAchievements").new("Tales of Maj'Eyal Achievements", self.player)) end },
{ "Показать известные записи", function() self:unregisterDialog(menu) self:registerDialog(require("mod.dialogs.ShowLore").new("Tales of Maj'Eyal Lore", self.party)) end },
{ "Показать ингредиенты", function() self:unregisterDialog(menu) self:registerDialog(require("mod.dialogs.ShowIngredients").new(self.party)) end },
"highscores",
{ "Инвентарь", function() self:unregisterDialog(menu) self.key:triggerVirtual("SHOW_INVENTORY") end },
{ "Окно персонажа", function() self:unregisterDialog(menu) self.key:triggerVirtual("SHOW_CHARACTER_SHEET") end },
"keybinds",
{"Игровые опции", function() self:unregisterDialog(menu) self:registerDialog(require("mod.dialogs.GameOptions").new()) end},
"video",
"sound",
"save",
"quit",
"exit",
}
self.log("Осмотр местности... (клавиши направления для выбора интересных мест, shift+стрелочки для свободного перемещения)")
game.log("Подсказка %s", self.tooltip.locked and "locked" or "unlocked")
game.log("Подсказка %s", self.tooltip.locked and "locked" or "unlocked")
self.log("Тип перемещения: #LIGHT_GREEN#Обычный#LAST#.")
self.log("Тип перемещения: #LIGHT_RED#Пассивный#LAST#.")
yesnoPopup("Сохранить и выйти в главное меню?", "Сохранить и выйти в главное меню?", function(ok)
if ok then
-- savefile_pipe is created as a global by the engine
self:saveGame()
util.showMainMenu()
end
self.quit_dialog = nil
end)
yesnoPopup("Сохранить и выйти из игры?", "Сохранить и выйти из игры?", function(ok)
if ok then
-- savefile_pipe is created as a global by the engine
self:saveGame()
savefile_pipe:forceWait()
engine.GameTurnBased.onExit(self)
end
self.quit_dialog = nil
end)
print("Played ToME for "..time.." seconds")
print("Сохранение JSON", pcall(function() if not game.player.__no_save_json then
local party = game.party:cloneFull()
party.__te4_uuid = game:getPlayer(true).__te4_uuid
for m, _ in pairs(party.members) do
m:attr("save_cleanup", 1)
m:stripForExport()
m:attr("save_cleanup", -1)
end
party:attr("save_cleanup", 1)
party:stripForExport()
party:attr("save_cleanup", -1)
game.player:saveUUID(party)
end end))
self.log("Сохранение игры...")
game.log("#ANTIQUE_WHITE#Заставка разблокирована: #GOLD#"..name)
print("Placed lore", o.name, x, y)
unlocks_list = {
birth_transmo_chest = "Доступна опция: трансмутационный сундук",
birth_zigur_sacrifice = "Доступна опция: жертва Зигуру",
cosmetic_race_human_redhead = "Внешность: красная голова",
cosmetic_race_dwarf_female_beard = "Внешность: борода у женщины дварфа",
difficulty_insane = "Сложность: безумие",
difficulty_madness = "Сложность: сумасшествие",
campaign_infinite_dungeon = "Кампания: Бесконечное подземелье",
campaign_arena = "Кампания: Арена",
undead_ghoul = "Раса: гуль",
undead_skeleton = "Раса: скелет",
yeek = "Раса: йиик",
race_ogre = "Раса: огр",
mage = "Класс: архимаг",
mage_tempest = "Классовая ветка: шторм",
mage_geomancer = "Классовая ветка: камень",
mage_pyromancer = "Классовая ветка: первобытное пламя",
mage_cryomancer = "Классовая ветка: абсолютный ноль",
mage_necromancer = "Класс: некромант",
cosmetic_class_alchemist_drolem = "Классовая особенность: алхимический дролем",
rogue_marauder = "Класс: мародёр",
rogue_skirmisher = "Класс: застрельщик",
rogue_poisons = "Классовая ветка: Яды",
divine_anorithil = "Класс: Аноритил",
divine_sun_paladin = "Класс: паладин солнца",
wilder_wyrmic = "Класс: драконоподобный",
wilder_summoner = "Класс: призыватель",
wilder_oozemancer = "Класс: слиземант",
wilder_stone_warden = "Класс: каменный воитель",
corrupter_reaver = "Класс: похититель",
corrupter_corruptor = "Класс: искажатель",
afflicted_cursed = "Класс: проклятый",
afflicted_doomed = "Класс: обречённый",
chronomancer_temporal_warden = "Класс: хранитель времени",
chronomancer_paradox_mage = "Класс: маг парадокса",
psionic_mindslayer = "Класс: убийца разума",
psionic_solipsist = "Класс: солипсист",
warrior_brawler = "Класс: бунтарь",
adventurer = "Класс: искатель приключений",
}
file/game/modules/tome.team/mod/class/GameState.lua.txt
game.log("#AQUAMARINE#Магазины получили новые товары.")
print("[STORES] restocking")
print("Zone guardian dead, setting up backup guardian", guardian, zonelevel)
print("possible chatter", zone, data.rumor)
print("Not gone east, no backup guardian")
print("Backup Guardian allocated: ", data.guardian, m.uid, m.name)
print("WARNING: Backup Guardian not found: ", data.guardian)
phonemesVocals = "а, е, и, о, ы, у"
phonemesConsonants = "б, ц, ч, ск, сз, д, дх, ф, г, гх, х, дж, к, кх, л, м, н, п, пх, ку, р, рх, с, ш, т, ст, тс, тз, в, вв, кс, з, зх"
syllablesStart = "Аэр, Аль, Ам, Ан, Ар, Арм, Арз, Бе, Бал, Бар, Бе, Бел, Бер, Бок, Бор, Бран, Брег, Брен, Брод, Кам, Чал, Чам, Че, Чуз, Даг, Дэйм, Дэир, Дел, Др, Дюр, Дюв, Эар, Елен, Эр, Ерел, Ерем, Фал, Фул, Гал, Ге, Гет, Гил, Гор, Грин, Ган, Хе, Хал, Хан, Хар, Хаз, Хетт, Хур, Исс, Кел, Ке, Кор, Лел, Лор, Ме, Мал, Мэн, Мард, Не, Ол, Радх, Раг, Релг, Рх, Ран, Сэм, Тарр, Те, Тор, Тюл, Тюр, Юи, Ульф, Унр, Юр, Урз, Яр, Зе, Зан, Зен"
syllablesMiddle = "де, до, дра, ду, дуна, га, го, хара, калто, ла, лата, ле, ма, нари, ра, ре, рего, ро, родда, роми, рью, са, то, я, зила"
syllablesEnd = "бар, берс, блэк, чак, чик, дан, дар, дас, диг, дил, дин, дир, дор, дюр, фанг, фаст, гар, гас, ген, горн, грим, гунд, хад, хек, хелл, хир, хор, кан, каз, кхад, кор, лач, лар, лдил, лдир, лег, лен, лин, мас, мнир, ндил, ндюр, нег, ник, нтир, раб, рач, рэйн, рак, ран, ранд, раз, рек, риг, рим, рин, рион, син, ста, стир, сюс, тар, тад, зел, тир, вон, вор, йон, зор"
phonemesVocals = "а, е, и, о, ы, у"
syllablesStart = "Ад, Аэр, Ар, Бел, Бет, Без, Цен, Цир, Эйлин, Эл, Эм, Эмель, Г, Гл, Глор, Ис, Исл, Ив, Лэй, Лиз, Мэй, Нер, Пол, Пор, Сал, Сил, Вел, Вор, Кс, Ксан, Ксер, Юв, Зюб"
syllablesMiddle = "бре, да, дхе, га, лда, ле, лра, ми, ра, ри, риа, ре, се, йа"
syllablesEnd = "ба, без, да, кира, лайз, лле, ма, мина, мира, на, нн, нне, нор, ра, рин, ссра, та, з, за, зра, тира, тта, веа, вена, ве, вен, вюн"
syllablesStart ="Феникса, Горения, Огня, Пламени, Ожога, Сияния, Иссушения, Тепла, Скальда, Ада, Пекла, Преисподней, Лавы, Костра, Печи, Углей, Опаливания, Вспышки, Подгорания, Клейма, Воспламенения, Блеска, Тления, Факела, Пепла, Бездны, Обугленный, Обжигающий, Солнечный, Магмовый, Вспыхивающий"
syllablesEnd = " дуги, бича, искушения, желчи, укуса, взрыва, безмятежности, крови, обиды, цветения, мясника, размывания, молнии, кости, скуки, связи, косы, приваривания, нарушителя, разрушителя, ветра, затвердевания, импульса, вестника, носильщика, покорителя, скверны, поломки, рождения, тьмы, блеска, крипты, трещины, удара, крика, пореза, броска, резчика, углубления, рывка, сна, риска, смерти, лезвия, зависти, неистовства, страха, известности, враждебности, одержимости, кулака, горя, разреза, разрезания, труда, трудяги, коварства, непоколебимости, просеивания, славы, очарования, зазубрины, рубщика, путаницы, оттенка, голода, охоты, охотника, раздражения, идола, бессмертного, справедливости, насмешки, сдавливания, убийства, убийцы, поцелуя, поцелуя, кармы, родственности, короля, беспринципности, рыцаря, владыки, истории, хлыста, порки, леди, травмы, метки, луны, повелителя, повелительницы, трясины, монстра, силы, сущности, смертного, служителя, злобы, ничтожности, отмены, расцвета, когтя, приближения, ночи, клятвы, приказа, предсказания, слизи, почтения, забвения, натиска, обсидиана, звона, парирования, мощи, прорицателя, проповедника, боли, страсти, пронизывания, пронзателя, гордости, разбрызгивания, благочестия, паники, боли, наказания, пелены, подавления, подавителя, дрожи, добычи, королевы, уничтожения, уничтожителя, быстроты, пера, жнеца, разрушения, разрушителя, выравнивания, среза, рёва, ярости, расы, сияния, наездника, дождя, гнили, искупления, руны, господства, прорыва, обмана, восстания, ворона, реки, потрошителя, разрыва, вспарывателя, камня, вони, надзора, непоколебимости, оцепенения, расщепления, хищника, сияния, отрезания, резальщика, спора, порождения, породителя, прокалывателя, вопля, стали, топки, змеи, печали, мудреца, укрепления, змея, сдвига, греха, подъёма, преследователя, формирователя, странника, наступления, наступающего, пилы, шрама, разделения, звезды, прожилки, жала, жалящего, удара, атакующего, оглушения, солнца, движения, бегущего, стягивания, камня, рубца, отрубания, разбивания, разбивателя, пронзания, пронзателя, терний, ужаса, прикосновения, волны, потока, испытания, тайфуна, титана, головоломки, вкуса, измены, копателя, порчи, следа, тени, привратника, храбрости, бродяги, подлости, отделки, покрова, яда, гадюки, хранилища, отмщения, вихря, порока, разорения, скорохода, пробуждения, пробуждающего, войны, щита, хранителя, осы, плакальщика, клина, движения, родника, шёпота, дикости, дикого, воли, воздуха, занозы, крыла, удаления, зимы, провода, сгустка, желания, ведьмы, волка, горя, увядания, увядшего, червя, венца, ценности, крушения, крушителя, рывка, плетущего, преобразования, рвения, ветерка"
syllablesStart ="Холода, Льда, Мороза, Ледяного дождя, Снега, Озноба, Дрожи, Зимы, Бурана, Ледника, Тундры, Айсберга, Града, Заморозки, Стужи, Изморози, Мглы, Дождя, Волны, Охлаждения"
syllablesEnd = "дуги, бича, искушения, желчи, укуса, взрыва, безмятежности, крови, обиды, цветения, мясника, размывания, молнии, кости, скуки, связи, косы, приваривания, нарушителя, разрушителя, ветра, затвердевания, импульса, вестника, носильщика, покорителя, скверны, клейма, поломки, рождения, тьмы, блеска, крипты, трещины, удара, крика, пореза, броска, резчика, углубления, рывка, сна, риска, смерти, лезвия, зависти, неистовства, страха, известности, враждебности, одержимости, кулака, горя, разреза, разрезания, труда, трудяги, коварства, непоколебимости, просеивания, славы, очарования, зазубрины, рубщика, путаницы, оттенка, голода, охоты, охотника, раздражения, идола, бессмертного, справедливости, насмешки, сдавливания, убийства, убийцы, поцелуя, поцелуя, кармы, родственности, короля, беспринципности, рыцаря, владыки, истории, хлыста, порки, леди, травмы, метки, луны, повелителя, повелительницы, трясины, монстра, силы, сущности, смертного, служителя, злобы, ничтожности, отмены, расцвета, когтя, приближения, ночи, клятвы, приказа, предсказания, слизи, почтения, забвения, натиска, обсидиана, звона, парирования, мощи, прорицателя, проповедника, боли, страсти, пронизывания, пронзателя, гордости, разбрызгивания, благочестия, паники, боли, наказания, пелены, подавления, подавителя, дрожи, добычи, королевы, уничтожения, уничтожителя, быстроты, пера, жнеца, разрушения, разрушителя, выравнивания, среза, рёва, ярости, расы, сияния, наездника, дождя, гнили, искупления, руны, господства, прорыва, обмана, восстания, ворона, реки, потрошителя, разрыва, вспарывателя, камня, вони, надзора, непоколебимости, оцепенения, расщепления, хищника, сияния, отрезания, резальщика, спора, порождения, породителя, прокалывателя, вопля, стали, топки, змеи, печали, мудреца, укрепления, змея, сдвига, греха, подъёма, преследователя, формирователя, странника, наступления, наступающего, пилы, шрама, разделения, звезды, прожилки, жала, жалящего, удара, атакующего, оглушения, солнца, движения, бегущего, стягивания, камня, рубца, отрубания, разбивания, разбивателя, пронзания, пронзателя, терний, ужаса, прикосновения, волны, потока, испытания, тайфуна, титана, головоломки, вкуса, измены, копателя, порчи, следа, тени, привратника, храбрости, бродяги, подлости, отделки, покрова, яда, гадюки, хранилища, отмщения, вихря, порока, разорения, скорохода, пробуждения, пробуждающего, войны, щита, хранителя, осы, плакальщика, клина, движения, родника, шёпота, дикости, дикого, воли, воздуха, занозы, крыла, удаления, зимы, провода, сгустка, желания, ведьмы, волка, горя, увядания, увядшего, червя, венца, ценности, крушения, крушителя, рывка, плетущего, преобразования, рвения, ветерка"
syllablesStart ="Бури, Шторма, Молнии, Искры, Шока, Грома, Заряда, Тучи, Воздуха, Облаков, Ветра, Треска, Мерцания, Вспышки, Разряда, Порыва, Сияния, Разряда, Неба, Грохота"
syllablesEnd = "погибели, искушения, раздражительности, укуса, заряда, безмятежности, крови, порыва, цветения, палача, затмения, костей, скуки, связи, плетения, твёрдости, нарушителя, разрушителя, бриза, усиления, взрыва, вестника, носильщика, искривления, скверны, клейма, разрыва, рождения, тьмы, блеска, скрытого, раскола, конфликта, крика, пореза, подготовки, резчика, глубины, рывка, грёз, смелости, смерти, остроты, зависти, неистовства, ужаса, славы, враждебности, ожога, ослепления, демона, кулака, пронзающего, разреза, режущего, подавления, подавляющего, хитрости, мужества, сбора, славы, очарования, разрубания, рубаки, путаницы, шума, голода, охоты, охотника, гнева, божества, бессмертного, правосудия, насмешки, сдавливания, убийства, убийцы, поцелуя, поцелуя, кармы, родства, короля, плута, рыцаря, лорда, знаний, издёвки, порки, леди, увечья, метки, лунатика, повелителя, повелительницы, трясины, монстра, силы, сущности, смертного, служителя, злобы, греха, обнуления, зенита, прикованного, близости, ночи, клятвы, порядка, предсказателя, слизи, почтения, забвения, натиска, обсидиана, грохота, погребального пламени, отражения, мощи, прорицателя, пророка, боли, страсти, пронизывания, пронизывающего, гордыни, дробления, благочестия, паники, страданий, наказания, пелены, закалки, гасителя, дрожи, преследования, королевы, уничтожения, уничтожающего, быстроты, с пером, жнеца, опустошения, опустошителя, разрушения, остроты, рыка, ярости, погони, сияния, наездника, дождя, гнили, искупления, руны, власти, разрыва, обмана, восстания, ворона, реки, превосходного качества, трещины, превосходного качества, камня, дымки, надзирателя, решимости, точности, раскола, хищника, блеска, среза, срезающего, битвы, вызова, вызывающего, пронизывания, шквала, твёрдости, растопки, змеи, скорби, мудрости, риска, змея, сдвига, греха, иссушения, шпиля, преследователя, формирования, быстроты, стремительности, стремительного, обзора, шрама, раскола, звезды, стремительности, жала, жалящего, оглушения, солнца, размаха, машущего, быстроты, камня, рубца, разрыва, погрома, погромщика, шипа, с шипами, колючек, кошмара, касания, волны, потока, испытания, тайфуна, титана, головоломки, клыка, предательства, укрытия, порчи, следа, тени, сопровождения, доблести, бродяги, подлости, истока, завесы, яда, гадюки, хранилища, возмездия, вихря, порока, разрушения, ходока, пробуждения, пробудившегося, войны, щита, смотрителя, осы, плакальщика, остроты, пути, хорошего качества, шёпота, дикости, дикаря, воли, ветра, вялости, крыла, просеивания, зимы, соединения, обмана, желания, ведьмы, волка, скорби, увядания, увядающего, червя, плетения, богатства, краха, мародера, искажения, истязателя, преображения, рвения, ветерка"
syllablesStart ="Света, Сияния, Дня, Солнца, Утра, Звезды, Горения, Отблеска, Проблеска, Яркости, Призмы, Ошеломления, Мерцания, Рассвета, Зенита, Блеска, Вспышки, Свечения, Слепоты, Искры, Великолепия, Бликов, Свечи, Глянца"
syllablesEnd = "дуги, бича, искушения, желчи, укуса, взрыва, безмятежности, крови, обиды, цветения, мясника, размывания, молнии, кости, скуки, связи, косы, приваривания, нарушителя, разрушителя, ветра, затвердевания, импульса, вестника, носильщика, покорителя, скверны, клейма, поломки, рождения, тьмы, блеска, крипты, трещины, удара, крика, пореза, броска, резчика, углубления, рывка, сна, риска, смерти, лезвия, зависти, неистовства, страха, известности, враждебности, обжигания, одержимости, кулака, горя, разреза, разрезания, труда, трудяги, коварства, непоколебимости, просеивания, славы, очарования, зазубрины, рубщика, путаницы, оттенка, голода, охоты, охотника, раздражения, идола, бессмертного, справедливости, насмешки, сдавливания, убийства, убийцы, поцелуя, поцелуя, кармы, родственности, короля, беспринципности, рыцаря, владыки, истории, хлыста, порки, леди, травмы, метки, луны, повелителя, повелительницы, трясины, монстра, силы, сущности, смертного, служителя, злобы, ничтожности, отмены, когтя, приближения, ночи, клятвы, приказа, предсказания, слизи, почтения, забвения, натиска, обсидиана, звона, погребения, парирования, мощи, прорицателя, проповедника, боли, страсти, пронизывания, пронзателя, гордости, разбрызгивания, благочестия, паники, боли, наказания, пелены, подавления, подавителя, дрожи, добычи, королевы, уничтожения, уничтожителя, быстроты, пера, жнеца, разрушения, разрушителя, выравнивания, среза, рёва, ярости, расы, сияния, наездника, дождя, гнили, искупления, руны, господства, прорыва, обмана, восстания, ворона, реки, потрошителя, разрыва, вспарывателя, камня, вони, надзора, непоколебимости, оцепенения, расщепления, хищника, сияния, отрезания, резальщика, спора, порождения, породителя, прокалывателя, вопля, стали, топки, змеи, печали, мудреца, укрепления, змея, сдвига, греха, поиска, подъёма, преследователя, формирователя, странника, наступления, наступающего, пилы, шрама, разделения, прожилки, жала, жалящего, удара, атакующего, оглушения, солнца, движения, бегущего, стягивания, камня, рубца, отрубания, разбивания, разбивателя, пронзания, пронзателя, терний, ужаса, прикосновения, волны, потока, испытания, тайфуна, титана, головоломки, вкуса, измены, копателя, порчи, следа, тени, привратника, храбрости, бродяги, подлости, отделки, покрова, яда, гадюки, хранилища, отмщения, вихря, порока, разорения, скорохода, пробуждения, пробуждающего, войны, щита, хранителя, осы, плакальщика, клина, движения, родника, шёпота, дикости, дикого, воли, воздуха, занозы, крыла, удаления, зимы, провода, сгустка, желания, ведьмы, волка, горя, увядания, увядшего, червя, венца, ценности, крушения, крушителя, рывка, плетущего, преобразования, рвения, ветерка"
syllablesStart ="Ночи, Тени, Пустоты, Тьмы, Мрака, Несчастья, Мрачности, Мглы, Сумрака, Темноты, Блеклости, Туманности, Сажи, Смолы, Тумана, Темени, Угля, Черноты, Полумрака, Обсидиана, Ворона, Чёрного, Демона, Дюазеля, Затемнения, Затмения, Слепоты, Бездны"
syllablesStart ="Природы, Зелени, Глины, Земли, Лечения, Корней, Разрастания, Роста, Коры, Цветения, Сатира, Дождя, Чистоты, Дикости, Ветра, Излечения, Очищения, Леса, Ветерка, Дуба, Ивы, Дерева, Баланса, Цветка, Загнивания, Мертвечины, Гнили, Струпа, Грязи, Заразы, Нежити, Отвращения, Вопля, Болезни, Чумы, Гноя, Крови, Гнилокровия, Осквернения, Грязи, Навоза, Разложения, Токсина, Яда, Скорпиона, Змея, Гадюки, Кобры, Серы, Трясины, Ила, Негодяя, Мертвечины, Желчи, Топи, Стока, Болота, Трупа, Пены, Плесени, Паука, Мокроты, Слизи, Заболевания, Выжимки, Мази, Цисты"
print("Comparing power sources",e1.name, e2.name)
print("Begin randart generation:", "level = ", lev, "egos =", nb_egos,"gr egos =", gr_egos, "rand themes = ", nb_themes, "points = ", points, "nb_powers = ",nb_powers)
print(" * forcing themes:",table.concat(data.force_themes,","))
print(" * using themes", table.concat(table.keys(themes), ','))
print(" * forcing egos:", table.concat(force_egos, ','))
print(" * forbid power sources:", table.concat(table.keys(data.forbid_power_source), ','))
print(" * allowed power sources:", table.concat(table.keys(data.power_source), ','))
print("Selected powers:")
print("Creating randart "..name.."("..o.unided_name..") with "..(themename or "no themename"))
print(" * loaded ", #legos, "ego definitions from ", o.egos)
print(" * found forced ego", e.e.name)
print(" ** selected ego", ego.name, (ego.greater_ego and "(greater)" or "(normal)"), ego.power_source and table.concat(table.keys(ego.power_source), ","))
print("randart creation error", err)
print("game.zone.applyEgo failed at creating a randart, retrying", data.fails)
print((" ** no ego found (+%d points)"):format(xpoints))
print(" * adding power: "..p.name.."("..p.points.." points)")
print(" * adding bias power: "..p.name.."("..p.points.." points)")
print(" * using implied power source(s) ", table.concat(table.keys(ps), ','))
print(" ** adding randart properties to ", o.name, o.uid)
print(" ** addRandartProperties: property merge restrictions: ", table.concat(table.keys(protect_props), ','))
print(" ** FAILED to generate randart properties to add to ", o.name, o.uid)
simplePopup("Засада!", "Вы попали в засаду!")
print("===playing", data.name, f, data._sound)
print("Donation check: steam user")
print("Donation check: already a reccuring donator")
print("Donation check: too soon (donator)")
print("Donation check: too soon (player)")
print("Donation check: not started tome long enough")
print("Donation check: total time too low")
print("Donation check: too low level")
print("Donation check: too low life")
print("Donation check: too many foes")
print("[TOME ENTITY FILTER] making default loot table for", what, lev)
print(" ***** LOOT MOD", k, v)
print("[TOME ENTITY FILTER] selected Uniques", r, u)
print("[TOME ENTITY FILTER] selected Double Greater", r, dg)
print("[TOME ENTITY FILTER] selected Greater + Ego", r, ge)
print("[TOME ENTITY FILTER] selected Greater", r, g)
print("[TOME ENTITY FILTER] selected Double Ego", r, de)
print("[TOME ENTITY FILTER] selected Ego", r, e)
print("[TOME ENTITY FILTER] selected Money", r, m)
print("[TOME ENTITY FILTER] selected Lore", r, l)
print("[TOME ENTITY FILTER] selected basic", r, total)
print("[TOME ENTITY FILTER] random object requested, removing ego chances")
print("[entityFilterPost]: Generated random object for", tostring(b.name))
print("[entityFilterPost]: Failed to generate random object for", tostring(b.name))
print("[entityFilterPost]: filter.random_object forcing conversion to Randart:", e.name)
print("[GameState:entityFilterPost] failed to generate random object, data:")
print("traceback:")
return "GRASS" end
return "FLOWER" else return "GRASS" end
return "TREE" end
return "DOOR" end
return "FLOOR" end
return "WALL" end
return "UP" end
return "DOWN" end
return "SANDWALL" end
return "SAND" end
return "SAND" end
return "PALMTREE" end
print("[RANDOM ZONE] Using theme", theme.name)
print("[RANDOM ZONE] Using layout", layout.name)
print("Adding to random boss class", class.name, mclass.name)
print(" power types: not_power_source =", table.concat(table.keys(b.not_power_source),","), "power_source =", table.concat(table.keys(b.power_source),","))
print("Random boss forbade talent because of level", t.name, t.id, data.level)
print("Random boss forbase talent because category /other", t.name, t.id, t.type[1])
print("Adding "..nb.." random class talents to boss")
print(count, " * talent:", tid, lev)
print(" ** Finished adding", count, "of", nb, "random class talents")
print(" class", c.name, " rejected due to power source")
print("Creating random boss ", b.name, data.level, "level", data.nb_classes, "classes")
print(" * forcing classes:",table.concat(table.keys(data.force_classes),","))
print("No zone events loaded")
print("[STARTEVENTS] Zone events list:")
print("[STARTEVENTS] Assigned events list:")
print("Alternate layout for "..short_name.." refused: never visited")
return "DEFAULT" end
print("[ZONE] Alternate layout computing for")
return "DEFAULT" end
print("[INFINITE DUNGEON] Selected challenge", data.id_challenge)
desc[#desc+1] = "\nВы прошли испытание и получаете:\n"
desc[#desc+1] = "Врагов осталось: #LIGHT_RED#"
e.desc = "#LIGHT_RED#УНИЧТОЖЬТЕ ЭТОГО ВРАГА!#LAST#\n"
desc[#desc+1] = "Ходов осталось: #LIGHT_GREEN#"
level.turn_counter_desc = "Доберитесь до выхода! Он отмечен на вашей карте."
print("[Infinite Dungeon Challenge] spawning Mirror-Match at", x, y)
game.logPlayer(who, "#ORCHID#%s не признаёт вас.", self.name:capitalize())
yesnoPopup("Challenge: #PURPLE#Зеркальное отражение", "Сразитесь со своей зеркальной копией и победите!", function(r) if not r then
self:attr("invulnerable", -1)
self:attr("negative_status_effect_immune", -1)
self:attr("stealth", 1000)
self:attr("invisible", 1000)
self.faction = "enemies"
self.ai = "tactical"
self:setTarget(p)
self:teleportRandom(p.x, p.y, 20, 10)
game.bignews:say(60, "#CRIMSON#Начать битву!")
end end, "Отказаться", "Согласиться", true)
yesnoPopup("Challenge: #PURPLE#Ограниченный обзор", "Пройдите этаж с -7 к радиусу обзора для получения награды.", function(r) if not r then
self:makeChallengeQuest(level, "Ограниченный обзор", "Пройдите этаж с -7 к радиусу обзора.", {
on_exit_check = function(self, who) who:setQuestStatus(self.id, self.COMPLETED) end,
}, function(actor, eff)
actor:effectTemporaryValue(eff, "sight", -7)
end)
end end, "Отказаться", "Согласиться", true)
desc[#desc+1] = "Ходов осталось: #LIGHT_GREEN#"
game.bignews:say(60, "#LIGHT_GREEN#Множественность: вы продержались достаточно долго. Покиньте этаж для получения награды!")
desc[#desc+1] = ("%d из %d демонических отродий убито.")
game.bignews:say(60, "#ORCHID#Вы получили голову "..target.name..", вводя в замешательство всех врагов на этаже.")
return "Random Artifact: "..o:getName{do_color=true}
end
return "+3 Stat Points"
end
game.log("#LIGHT_BLUE#%s получает: %s.", who.name:capitalize(), reward_name)
game.logPlayer(who, "#LIGHT_GREEN#%s", type(unlock) == "string" and unlock or ("Вы разблокировали новый навык: %s!"):format(t.name))
file/game/modules/tome.team/mod/class/generator/actor/Arena.lua.txt
Chat.new("arena", {name="Битва с боссом!"}, game.player)
Chat.new("arena", {name="Победа!!"}, game.player)
Chat.new("arena", {name="Битва с боссом!"}, game.player)
Chat.new("arena", {name="Победа!!"}, game.player)
Chat.new("arena", {name="Битва с боссом!"}, game.player)
Chat.new("arena", {name="Победа!!"}, game.player)
Chat.new("arena", {name="Битва с боссом!"}, game.player)
Chat.new("arena", {name="Победа!!"}, game.player)
game.level.arena.display = {game.player.name.." the "..game.level.arena.printRank(game.level.arena.rank, game.level.arena.ranks), e.display}
print("[ARENA] Miniboss error ("..e.display..")")
game.level.arena.display = {game.player.name.." the "..game.level.arena.printRank(game.level.arena.rank, game.level.arena.ranks), e.display}
game.log("#LIGHT_RED#WARNING! "..e.display.." появляется!!!")
print("[ARENA] - Boss error #1! ("..e.display..")")
Chat.new("arena", {name="Последний бой!"}, game.player)
Chat.new("арена", {name="Поздравляем!"}, game.player)
game.level.arena.display = {game.player.name.." the "..game.level.arena.printRank(game.level.arena.rank, game.level.arena.ranks), "Рей, Чемпион Арены"}
game.log("#LIGHT_RED#ВНИМАНИЕ! Рей Аркатис, чемпион арены, появляется!!!")
print("[ARENA] - Finale error #1! (Default master error)")
Chat.new("arena", {name="Последний бой!"}, game.player)
Chat.new("арена", {name="Поздравляем!"}, game.player)
game.level.arena.display = {game.player.name.." the "..game.level.arena.printRank(game.level.arena.rank, game.level.arena.ranks), m.name.." Чемпион Арены"}
game.log("#LIGHT_RED#ВНИМАНИЕ! "..m.name..", чемпион арены, появляется!!!")
game.flyers:add(x, y, 90, 0, -0.5, "СВЕРХУРОН", { 231, 0, 0 }, false)
game.log("#LIGHT_GREEN#Ваша мощная атака полностью уничтожает #WHITE#"..self.name.."#LIGHT_GREEN#!")
game.log("#LIGHT_GREEN#Зрители ликуют!")
game.log("#LIGHT_GREEN#Вы уничтожили #WHITE#"..self.name.."#LIGHT_GREEN# одним ударом!")
game.log("#LIGHT_GREEN#Зрители ликуют!")
game.log("#LIGHT_GREEN#Ваш множитель очков увеличивается на #WHITE#"..self.arenaBonusMult.."#LIGHT_GREEN#!")
game.log("#LIGHT_GREEN#Ваш множитель очков увеличивается на #WHITE#0.1#LIGHT_GREEN#!")
game.log("#YELLOW#Вы побеждаете опытного врага!")
game.log("#LIGHT_GREEN#Зрители ликуют!")
file/game/modules/tome.team/mod/class/generator/actor/HighPeakFinal.lua.txt
game.logSeen(m, "Кто-то появляется из портала!")
file/game/modules/tome.team/mod/class/generator/actor/OnSpots.lua.txt
print("Случайная генерация элитных")
file/game/modules/tome.team/mod/class/generator/actor/Random.lua.txt
print("Случайная генерация боссов")
print("Случайная генерация элитных")
file/game/modules/tome.team/mod/class/generator/actor/RandomStairGuard.lua.txt
print("[RANDOM STAIR GUARD] placed guard", m.name)
file/game/modules/tome.team/mod/class/generator/actor/ValleyMoon.lua.txt
game.logSeen(_M.limmir, "Лиммир призвал взрыв святого света!")
file/game/modules/tome.team/mod/class/generator/map/StaticPredrawn.lua.txt
return "/data-"..addon.."/maps/"..rfile..".lua"\d\a end
return "/data/maps/"..file..".lua"\d\aend
print("Static generator using file", file)
return "..mapprops.map_data)\d\a table.merge(self, params, true)\d\a end\d\a self.mapprops = mapprops\d\a\d\a for _, tileset in ipairs(map:findAll("tileset")) do\d\a local firstgid = tonumber(tileset.attr.firstgid)\d\a for _, tile in ipairs(tileset:findAll("tile")) do\d\a local tid = tonumber(tile.attr.id + firstgid)\d\a local id = tile:findOne("property", "name", "id")\d\a local tall = tile:findOne("property", "name", "tall")\d\a local image = tile:findOne("image")\d\a if id then data_ids[tid] = id.attr.value end\d\a if tall then data_talls[tid] = true end\d\a if image then\d\a local _, _, src = image.attr.source:find("(/data/gfx/[a-zA-Z0-9-_/]+%.png)$")\d\a if src then\d\a data_images[tid] = src\d\a else\d\a error("Malformed image path: "..tostring(image.attr.source))\d\a end\d\a end\d\a end\d\a end\d\a\d\a if mapprops.status_all then\d\a self.status_all = self:loadLuaInEnv(g, nil, "return "..mapprops.status_all) or {}\d\a end\d\a\d\a if mapprops.add_data then\d\a table.merge(self.level.data, self:loadLuaInEnv(g, nil, "return "..mapprops.add_data) or {}, true)\d\a end\d\a\d\a if mapprops.lua then\d\a self:loadLuaInEnv(g, nil, "return "..mapprops.lua)\d\a end\d\a\d\a -- copy certain variables from the map file\d\a if mapprops.roomcheck then\d\a self.roomcheck = self:loadLuaInEnv(g, nil, "return "..mapprops.roomcheck) \d\a end\d\a self.unique = mapprops.unique\d\a self.no_tunnels = mapprops.no_tunnels\d\a self.border = mapprops.border and tonumber(mapprops.border)\d\a if mapprops.prefer_location then\d\a self.prefer_location = self:loadLuaInEnv(g, nil, "return "..mapprops.prefer_location) \d\a end\d\a if mapprops.onplace then\d\a self.onplace = self:loadLuaInEnv(g, nil, "return "..mapprops.onplace) \d\a end\d\a \d\a local m = { w=w, h=h, prefixes={} }\d\a local m_images = { w=w, h=h, prefixes={} }\d\a\d\a local function populate(i, j, z, tid, prefix)\d\a local ii, jj = i, j\d\a m[ii] = m[ii] or {}\d\a m_images[ii] = m_images[ii] or {}\d\a m_images[ii][jj] = m_images[ii][jj] or {}\d\a\d\a if data_ids[tid] then m[ii][jj] = data_ids[tid] end\d\a if data_images[tid] then \d\a table.insert(m_images[ii][jj], {z=z, prefix=prefix, tall=data_talls[tid], image=data_images[tid]})\d\a end\d\a end\d\a\d\a self.gen_map = m\d\a self.gen_images = m_images\d\a\d\a self.map.w = m.w\d\a self.map.h = m.h\d\a\d\a local layers = {}\d\a for _, layer in ipairs(map:findAll("layer")) do\d\a local mapdata = layer:findOne("data")\d\a local layername = layer.attr.name:lower()\d\a local _, _, layername, layerz = layername:find("^([a-z:]+):([0-9]+)$")\d\a local _, _, prefix, name = layername:find("^([a-z]+):([a-z]+)$")\d\a if prefix then layername = name end\d\a if layername == "terrain" then layername = "grid" end\d\a if layername and layerz then layers[#layers+1] = {layername=layername, layerz=tonumber(layerz), prefix=prefix, layer=layer, mapdata=mapdata} end\d\a end\d\a table.sort(layers, function(a, b) return a.layerz < b.layerz end)\d\a\d\a for _, mlayer in ipairs(layers) do\d\a local layer = mlayer.layer\d\a local mapdata = mlayer.mapdata\d\a local layername = mlayer.layername\d\a local layerz = mlayer.layerz\d\a local prefix = mlayer.prefix\d\a\d\a if mapdata.attr.encoding == "base64" then\d\a local b64 = mime.unb64(mapdata[1]:trim())\d\a local data\d\a if mapdata.attr.compression == "zlib" then data = zlib.decompress(b64)\d\a elseif not mapdata.attr.compression then data = b64\d\a else error("tmx map compression unsupported: "..mapdata.attr.compression)\d\a end\d\a local gid, i = nil, 1\d\a local x, y = 1, 1\d\a while i <= #data do\d\a gid, i = struct.unpack("<I4", data, i) \d\a populate(x, y, layerz, gid, prefix)\d\a x = x + 1\d\a if x > w then x = 1 y = y + 1 end\d\a end\d\a elseif mapdata.attr.encoding == "csv" then\d\a local data = mapdata[1]:gsub("[^,0-9]", ""):split(",")\d\a local x, y = 1, 1\d\a for i, gid in ipairs(data) do\d\a gid = tonumber(gid)\d\a populate(x, y, layerz, gid, prefix)\d\a x = x + 1\d\a if x > w then x = 1 y = y + 1 end
print("[STATIC TMX MAP] size", m.w, m.h)
file/game/modules/tome.team/mod/class/generator/map/VaultLevel.lua.txt
print("[VaultLevel] has no vault")
print("[VaultLevel] using room:", room and room.name)
print("[VaultLevel] tunnelling from", sx, sy, "to", ex, ey)
file/game/modules/tome.team/mod/class/Grid.lua.txt
yesnoPopup(self.name, self.door_player_check, function(ret)
if ret then
game.level.map(x, y, engine.Map.TERRAIN, door_g)
game:playSoundNear({x=x,y=y}, self.door_sound or {"ambient/door_creaks/creak_%d",1,4})
game.level.map:checkAllEntities(x, y, "on_door_opened", e)
if game.level.map.attrs(x, y, "vault_id") and e.openVault then e:openVault(game.level.map.attrs(x, y, "vault_id")) end
end
end, "Открыть", "Уйти")
game.logSeen({x=x, y=y}, "%s", game.level.map.attrs(x, y, "on_block_change_msg"))
tstr:add(true, {"font","bold"}, {"color", color}, "Минимальный уровень: "..data.level_range[1], {"color", "LAST"}, {"font","normal"}, true)
tstr:add(true, {"font","bold"}, {"color","CRIMSON"}, "Ещё не посещено", {"color", "LAST"}, {"font","normal"}, true)
tstr:add({"color", "CRIMSON"}, "В поле зрения", {"color", "LAST"}, true)
tstr:add({"color", "YELLOW"}, "Освещено", {"color", "LAST"}, true)
tstr:add({"color", "UMBER"}, "Блокирует обзор", {"color", "LAST"}, true)
tstr:add({"color", "UMBER"}, "Блокирует передвижение", {"color", "LAST"}, true)
tstr:add({"color", "LIGHT_BLUE"}, "Требуется специальный способ дыхания.", {"color", "LAST"}, true)
tstr:add({"color", "LIGHT_UMBER"}, "Можно уничтожить", {"color", "LAST"}, true)
tstr:add({"color", "VIOLET"}, "Невозможно телепортироваться в это место", {"color", "LAST"}, true)
tstr:add(true, tostring(rawget(self, "Вид")), " / ", tostring(rawget(self, "Подвид")))
tstr:add(true, "Идентификатор: ", tostring(self.uid), true, "Координаты: ", tostring(x), "x", tostring(y))
tstr:add(true, {"color", "PINK"}, ("room_map:rm:%s(id:%s,name:%s), spec:%s, c/o:%s, bor:%s, tun:%s, rtun:%s"):format(data.room, room_base and room_base.id, room and room.name, data.special, data.can_open, data.border, data.tunnel, data.real_tunnel))
tstr:add(true, {"color", "TAN"}, "map attrs: ")
tstr:add(("%s=%s%s"):format(atr,val,", "))
game.log("#VIOLET#Вы слышите щелчок механизма.")
file/game/modules/tome.team/mod/class/interface/ActorInscriptions.lua.txt
game.logPlayer(self, "Вы не можете использовать данный тип усилений.")
game.logPlayer(self, "Вы не можете использовать данный тип усилений.")
game.logPlayer(self, "У вас слишком много усилений.")
Chat.new("player-inscription", {name=t.name}, self, src)
game.logPlayer(self, "Вы не можете брать больше усилений.")
Chat.new("player-inscription", {name=t.name}, self, src)
print("Inscribing on "..self.name.."("..self:getClassName()..")"..": "..tostring("T_"..name).." => "..tostring(self["T_"..name]))
game.logPlayer(self, "вы начертили на себе %s.", t.name)
game.logPlayer(self, "Ваш %s истощён!", t.name)
file/game/modules/tome.team/mod/class/interface/ActorObjectUse.lua.txt
return "Активировать предмет" end
return "Активировать: "..objname
end
print("[ActorObjectUse] ERROR: Talent ", t.name, " has no object data")
print("[ActorObjectUse] ERROR: Talent ", t.name, " has no object")
game.logSeen(self, "%s активирует %s %s!", self.name:capitalize(), self:his_her(), data.obj:getName({no_add_name=true, do_color = true}))
message")
local msg = self:useTalentMessage(t)
t.message = nil
if msg then game.logSeen(self, "
game.logSeen(self, "%s", msg)
return "Активировать предмет." end
return ([[Использовать %s:
%s]]):format(objname, usedesc)
end
return ([[Activate %s]]):format(obj and obj:getName({do_color = true}) or "nothing")
end
print("[ActorObjectUse] useObjectEnable: ", o and o.name or "no name", "by", self.name, "inven/slot", inven_id, slot)
print("[ActorObjectUse] Object", o.name, o.uid, "is ineligible for talent interface")
print("[ActorObjectUse] Object", o.name, o.uid, " not in inventory")
print("[ActorObjectUse] useObjectDisable: ", o and o.name or "no name", "inven/slot", inven_id, slot, "tid", tid)
print("[ActorObjectUse]", self.name, "Cleaning up: ", o.name, o.uid)
print("[ActorObjectUse]: ERROR, object", o.name, o.uid, "has no usable power")
file/game/modules/tome.team/mod/class/interface/ActorPartyQuest.lua.txt
desc")
local q = require(_M.quest_class).new(quest, self)
if q.do_not_gain then return end
self.quests = self.quests or {}
self.quests[quest.id] = q
self.quests[quest.id].gained_turn = game.turn
print("
print("[QUEST] given to", self, quest.id)
print("[QUEST] try update status on", self.name, quest, status, sub)
file/game/modules/tome.team/mod/class/interface/Archery.lua.txt
game.logPlayer(self, "Требуется стрелковое оружие (%s)!", ammo)
game.logPlayer(self, "У вас недостаточно боеприпасов!")
print("[ARCHERY ACQUIRE TARGETS WITH]", weapon and weapon.name, ammo.name, offweapon and offweapon.name, pf_weapon and pf_weapon.name)
print("== no ressource", kind)
game.logPlayer(self, "#ORCHID#Ваш %s НЕ МОЖЕТ СТРЕЛЯТЬ(Запас: %s%s#LAST#).", weapon:getName({do_color=true, no_add_name=true}), table.get(self.resources_def[kind], "color") or "#SALMON#", table.get(self.resources_def[kind], "name") or kind:capitalize())
print("== no ressource", kind)
game.logPlayer(self, "#ORCHID#Ваш %s НЕ МОЖЕТ СТРЕЛЯТЬ (Ресурс: %s%s#LAST#).", offweapon:getName({do_color=true, no_add_name=true}), table.get(self.resources_def[kind], "color") or "#SALMON#", table.get(self.resources_def[kind], "name") or kind:capitalize())
print("== no ressource", kind)
game.logPlayer(self, "#ORCHID#Ваш %s НЕ МОЖЕТ СТРЕЛЯТЬ (ресурс: %s%s#LAST#).", pf_weapon:getName({do_color=true, no_add_name=true}), table.get(self.resources_def[kind], "color") or "#SALMON#", table.get(self.resources_def[kind], "name") or kind:capitalize())
game.logPlayer(archery_actor, "#ORCHID#Цель слишком далеко. Зажмите <ctrl> для стрельбы по целям вне радиуса поражения (%d - %d).", tg.warn_range, tg.max_range)
game.logPlayer(archery_actor, "#ORCHID#Цель слишком далеко. Зажмите <ctrl> для стрельбы по целям вне радиуса поражения (%d).", tg.warn_range)
print("[archeryAcquireTargets runfire] NOT FIRING", realweapon.name, x, y, "range limit:", weapon_range)
print("[archeryAcquireTargets runfire] NOT FIRING", realweapon.name, x, y, "due to resource", kind)
game.logPlayer(self, "#ORCHID#Вы НЕ МОЖЕТЕ СТРЕЛЯТЬ из вашего %s (ресурс: %s%s#LAST#).", realweapon:getName({do_color=true, no_add_name=true}), table.get(self.resources_def[kind], "color") or "#SALMON#", table.get(self.resources_def[kind], "name") or kind:capitalize())
print("[archeryAcquireTargets runfire] NOT FIRING", realweapon.name, x, y, "due to resource", kind)
game.logPlayer(self, "#ORCHID#Вы НЕ МОЖЕТЕ СТРЕЛЯТЬ из вашего %s (ресурс: %s%s#LAST#).", realweapon:getName({do_color=true, no_add_name=true}), table.get(self.resources_def[kind], "color") or "#SALMON#", table.get(self.resources_def[kind], "name") or kind:capitalize())
print("[SHOOT] speed", speed or 1, "=>", game.energy_to_act * (speed or 1))
print("[ATTACK ARCHERY]", self.__project_source and self.__project_source.uid," to ", target.name, " :: ", dam, apr, armor, "::", mult)
print("[ATTACK ARCHERY] raw dam", dam, "versus", armor, "with APR", apr)
game:delayedLogDamage(self, target, 0, ("%s(%d парировано#LAST#)"):format(DamageType:get(damtype).text_color or "#aaaaaa#", deflect), false)
print("[ATTACK] after PARRY", dam)
print("[ATTACK ARCHERY] after armor", dam)
print("[ATTACK ARCHERY] after range", dam)
print("[ATTACK] after counterstrike", dam)
print("[ATTACK] after inc by type (weapon)", dam)
print("[ATTACK] after inc by type (ammo)", dam)
print("[ATTACK ARCHERY] after crit", dam)
print("[ATTACK ARCHERY] after mult", dam)
print("[ATTACK] mace accuracy bonus", atk, def, "=", bonus)
print("[ATTACK ARCHERY] after hook", dam)
logCombat(target, "#{bold}##Source# производит дальнюю критическую атаку по #Target#!#{normal}#")
print("[ATTACK ARCHERY]\tAmmo DamageType conversion%", conv, typ, conv_dam)
print("[ATTACK ARCHERY]\t after Ammo DamageType conversion dam:", dam)
print("[ATTACK ARCHERY]\tWeapon DamageType conversion%", conv, typ, conv_dam)
print("[ATTACK ARCHERY]\t after Weapon DamageType conversion dam:", dam)
logCombat(target, "#Source# промахивается по #target#.")
game.logSeen(target, "Разрушительный удар создает ударную волну!")
game.logPlayer(self, "Вы разоружены!")
game.logPlayer(self, "Вы должны экипировать оружие дальнего боя (%s)!", ammo)
print("[ARCHERY SHOOT]", self.name, self.uid, "using weapon:", weapon and weapon.name, "ammo:", ammo and ammo.name, "offweapon:", offweapon and offweapon.name, "pf_weapon:", pf_weapon and pf_weapon.name)
print("[ARCHERY SHOOT dofire] Shooting weapon:", realweapon and realweapon.name, "to:", targets[i].x, targets[i].y)
print("[SHOOT] error, mismatch between dual weapon/dual targets")
msg = "Несовместимое стрелковое оружие"
msg = "несовместимые боеприпасы"
msg = "Несовместимое стрелковое оружие"
msg = "несовместимые боеприпасы"
msg = "Несовместимое стрелковое оружие"
msg = "несовместимые боеприпасы"
file/game/modules/tome.team/mod/class/interface/Combat.lua.txt
game.logSeen(self, "%s боится атаковать.", self.name:capitalize())
game.logSeen(self, "%s слишком испуган и не может атаковать.", self.name:capitalize())
logCombat(target, "#Target# замечает вас в последний момент!")
print("[ATTACK] attacking with Gesture of Pain")
print("[ATTACK] attacking with (mainhand)", o.name)
print("[ATTACK] Cancelling attack (offhand) with", o.name , "(resources)")
print("[ATTACK] attacking with (offhand)", o.name)
print("[ATTACK] attacking with innate combat")
print("checkHit", atk, def)
print("=> шанс ударить", hit)
print("checkHit", atk, "vs", def, "=> chance to hit", hit)
print("checkEvasion", evasion, target.level, self.level)
print("=> evasion chance", evasion)
return false, "none" end
print("[attackTargetWith] (unarmed) against ", target.name, "unarmed attack fails due to resources")
print("[attackTargetWith] against ", target.name, "insufficient weapon resources, using unarmed combat")
print("[attackTargetWith] against ", target.name, "unarmed attack fails due to resources")
print("[ATTACK] to ", target.name, " :: ", dam, apr, armor, atk, "vs.", def, "::", mult)
print("[ATTACK] after melee attack bonus hooks and callbacks :: ", dam, apr, armor, atk, "vs.", def, "::", mult)
game.logSeen(target, "#ORCHID#%s ловко отклоняет атаку с помощью %s щита!#LAST#", target.name:capitalize(), string.his_her(target))
game.logSeen(target, "#ORCHID#%s парирует атаку с помощью %s двух оружий!#LAST#", target.name:capitalize(), string.his_her(target))
game.logSeen(target, "#ORCHID#%s инстинктивно укрепляет %s кожу и игнорирует атаку!#LAST#", target.name:capitalize(), string.his_her(target))
logCombat(target, "#Target# отклоняет атаку #Source#.")
logCombat(target, "#Target# уклоняется от #Source#.")
game:delayedLogDamage(self, target, 0, ("%s(%d парировано#LAST#)"):format(DamageType:get(damtype).text_color or "#aaaaaa#", deflect), false)
print("[ATTACK] after PARRY", dam)
game:delayedLogDamage(self, target, 0, ("%s(%d поглощено#LAST#)"):format(DamageType:get(damtype).text_color or "#aaaaaa#", deflect), false)
print("[ATTACK] после GESTURE_OF_GUARDING", dam)
print("[ATTACK] dagger accuracy bonus", atk, def, "=", bonus, "previous", apr)
print("[ATTACK] raw dam", dam, "versus", armor, pres, "with APR", apr)
print("[ATTACK] after armor", dam)
print("[ATTACK] after range", dam)
print("[ATTACK] after crit", dam)
print("[ATTACK] after mult", dam)
print("[ATTACK] mace accuracy bonus", atk, def, "=", bonus)
print("[ATTACK] after counterstrike", dam)
print("[ATTACK] after inc by type", dam)
logCombat(target, "#{bold}##Source# производит ближнюю критическую атаку по #Target#!#{normal}#")
print("[ATTACK]\tDamageType conversion%", conv, typ, conv_dam)
print("[ATTACK]\t after DamageType conversion dam:", dam)
logCombat(target, "#Source# промахивается по #Target#.")
print("[ATTACK] staff accuracy bonus", atk, def, "=", bonus)
game.logSeen(target, "Разрушительный удар создает ударную волну!")
print("[ATTACK]\tresolving on_melee_hit damage with:", fa, "flat_armor", pct, "% reflect")
print("[ATTACK]\ttarget on_melee_hit:", dam, typ, "vs", fa)
print("[ATTACK]\ttarget on_melee_hit", dr, typ, "reflected")
print("[ATTACK]\ttarget on_melee_hit:", dam.dam, typ, "vs", fa)
print("[ATTACK]\ttarget on_melee_hit", dr, typ, "reflected")
game.logPlayer(self, "#F53CBE#Вы получаете удовольствие, атакуя ослабленного врага! (+%d ненависти)", effGloomWeakness.hateBonus)
game.logPlayer(self, "#F53CBE#Ваша яростная атака усилила ваше неистовство! (+1 время действия)")
game.logSeen(target, "%s сопротивляется оглушению!", target.name:capitalize())
self.logCombat(target, self, "#Source# контратакует #Target# с помощью %s осколков щита!", string.his_her(target))
print("[TALENT WEAPON MULT]", self:getTalentLevel(t), base, max, t2, mult)
print("[PHYS CRIT %] axe accuracy bonus", atk, def, "=", bonus)
print("[PHYS CRIT %]", self.turn_procs.auto_phys_crit and 100 or chance)
print("[PHYS CRIT %] sword accuracy bonus", atk, def, "=", bonus)
print("[SPELL CRIT %]", self.turn_procs.auto_spell_crit and 100 or chance)
game.logSeen(self, "#{bold}#%s производит критическую атаку заклинанием!#{normal}#", self.name:capitalize())
print("[MIND CRIT %]", self.turn_procs.auto_mind_crit and 100 or chance)
game.logSeen(self, "#{bold}#%s производит критическую атаку разумом!#{normal}#", self.name:capitalize())
print("[SPELL] friendly fire chance", chance)
logCombat(target, "#Source# захват провален, так как #Target# слишком большой!")
game.logSeen(target, "%s сопротивляется захвату!", target.name:capitalize())
file/game/modules/tome.team/mod/class/interface/PartyDeath.lua.txt
msg = "%s %d уровня %s %s был %s убит %s%s%s на %s этаже %s."
short_msg = "%s(%d %s %s) был %s убит %s%s на %s %s."
killermsg = rng.table{
" (дурак)",
" в результате неописуемой глупости",
" крайне смиренно",
", конечно же, случайно",
" в результате ошибки в извращённом эксперименте",
", предоставил \"бесплатную\" еду дикой природе",
" (как смущает)",
}
msg = "%s %d уровня %s %s %s на %s этаже %s."
short_msg = "%s(%d %s %s) %s на %s %s."
file/game/modules/tome.team/mod/class/interface/PartyIngredients.lua.txt
desc")
assert(t.icon, "
game.log("Вы собираете новый ингредиент: #LIGHT_GREEN#%s%s#WHITE#.", d.display_entity:getDisplayString(), d.name)
game.log("Вы собираете новый инредиент: #LIGHT_GREEN#%s%s (%d)#WHITE#.", d.display_entity:getDisplayString(), d.name, nb)
file/game/modules/tome.team/mod/class/interface/PartyLore.lua.txt
print("[LORE] defined", t.order, t.id)
game.logPlayer(self, "Запись найдена: #0080FF#%s", l.name)
game.logPlayer(self, "Вы можете просмотреть все найденные записи в игровом меню, для этого нажмите Escape.")
print("[LORE] learnt", lore)
game.player:runStop("Получена запись")
game.player:restStop("Получена запись")
file/game/modules/tome.team/mod/class/interface/PlayerDumpJSON.lua.txt
title = ("%s уровень %d %s %s")
getTimeDate(reason.turn, "%s %s %s год Господства %02d:%02d")
getTimeDate(data.turn, "%s %s %s год Господства %02d:%02d")
a.desc.."\nBy "
file/game/modules/tome.team/mod/class/interface/PlayerExplore.lua.txt
simplePopup("Исследование...", "Вы занимаетесь исследованием, нажмите любую кнопку для остановки.", function()
self:runStop()
end, false, true)
file/game/modules/tome.team/mod/class/interface/TooltipsData.lua.txt
TOOLTIP_GOLD = [[#GOLD#Gold#LAST#
Деньги!
За золото вы можете купить товары в различных магазинах города.
Получить деньги вы можете забирая их с поверженных врагов, продавая вещи и выполняя задания.
]]
TOOLTIP_LIVES = [[#GOLD#Lives#LAST#
Сколько жизней у вас есть и сколько вы потеряли.
Ваше общее количество жизней зависит от выбранного режима.
Вы можете найти другие способы сохранения жизни но они не являются дополнительными.
]]
TOOLTIP_BLOOD_LIFE = [[#GOLD#Blood of Life#LAST#
В ваших венах течет Кровь Жизни.
Один раз это может спасти вас от смерти и полностью восстановить ваше здоровье.
]]
TOOLTIP_LIFE = [[#GOLD#Life#LAST#
Это - ваша жизненная сила, которая уменьшается каждый раз когда вы получаете урон.
Обычно, когда она опускается ниже нуля вы умираете, хотя некоторые эффеты позволят вам выжить при отрицательном значении.
Будьте осторожны, смерть как правило постоянна!
Увеличивается Телосложением.
]]
TOOLTIP_DAMAGE_SHIELD = [[#GOLD#Damage shields#LAST#
Различные таланты, предметы и силы могут дать вам временную защиту от повреждений.
Каждый работает по разному, но обычно поглощет определенное количество урона, который иначе бы вы получили.
]]
TOOLTIP_UNNATURAL_BODY = [[#GOLD#Unnatrual Body Regeneration#LAST#
Ваш талант Заживление Плоти позволяет вытягивать жизнь из ваших поверженных врагов.
Каждый раз, при убийстве существа ваше восстановление увеличивается и его часть каждый ход передается вам в виде здоровья.
]]
TOOLTIP_LIFE_REGEN = [[#GOLD#Life Regeneration#LAST#
Сколько здоровья вы восстанавливаете за ход.
Это значение можно улучшить с помощью заклинаний, талантов, инфузий, снаряжения.
]]
TOOLTIP_HEALING_MOD = [[#GOLD#Модификатор лечения#LAST#
Определяет эффективность всего получаемого лечения.
Все получаемое исцеление умножается на данное значение (в том числе эффекты регенерации).
Растёт при повышении телосложения.
]]
TOOLTIP_AIR = [[#GOLD#Air#LAST#
Счетчик дыхания появляется только когда вы задыхаетесь.
Если он дойдет до нуля вы умрете. Застревая в стене, находясь глубоко под водой,... все эти ситуации затрудняют ваше дыхание.
Когда вы вернетесь в нормальную атмосферу, ваш уровень дыхания будет медленно восстанавливаться.
]]
TOOLTIP_STAMINA = [[#GOLD#Stamina#LAST#
Выносливость определяет как быстро вы устаете. Каждое использование физической способности уменьшает её.
Она медленно восстанавливается со временем или на отдыхе.
Увеличивается Силой Воли.
]]
TOOLTIP_MANA = [[#GOLD#Mana#LAST#
Мана определяет запас вашей магической энергии. Каждое заклинание расходует ману, а каждое поддерживаемое заклинание уменьшает её максимальный запас.
Увеличивается Силой Воли.
]]
TOOLTIP_POSITIVE = [[#GOLD#Positive Energy#LAST#
Положительная энергия представляет ваш запас положительной "небесной" силы, наиболее тесно связанной с Солнцем.
Она медленно уменьшается и восполняется при помощи некоторых талантов.
]]
TOOLTIP_NEGATIVE = [[#GOLD#Negative Energy#LAST#
Отрицательная энергия представляет ваш запас отрицательной "небесной" силы, наиболее тесно связанной с Луной.
Она медленно уменьшается и восполняется при помощи некоторых талантов.
]]
TOOLTIP_VIM = [[#GOLD#Vim#LAST#
Вим представляет собой количество жизненной энергии которой вы управляете. Вим нужен для каждого таланта искажения.
Не восстанавливается со временем; вы должны черпать его из себя или ваших жерв.
Каждый раз когда вы убиваете существо, вы получаете Вим в количестве 10% от вашей Силы Воли.
Кроме того если вы использовали заклинание Искажения для убийства существа, при его смерти вы восполните затраченный Вим.
]]
TOOLTIP_EQUILIBRIUM = [[#GOLD#Equilibrium#LAST#
Баланс отражает ваше положение в великой гармонии природы и на сколько легко вы получаете Дары Чащи.
Вы наиболие близки к гармонии когда ваш баланс равен 0.
Вне гармонии, взывая к Дарам Чащи они могут не сработать.
]]
TOOLTIP_HATE = [[#GOLD#Hate#LAST#
Ненависть представляет собой ваш внутренний гнев против всего живого что смеет противостоять вам.
Восполняется при убийстве существ и при применении ваших талантов.
Все поражающие таланты основаны на Ненависти и многие более эффективны при её высоких уровнях.
]]
TOOLTIP_PARADOX = [[#GOLD#Paradox#LAST#
Парадокс представляет стабильность текущего временного отрезка.
Вместе с Парадоксом растет и ваша Сила Заклинаний, но вы можете сдвинуться в более стабильный отрезок когда пытаетесь использовать свою магию .
Когда ваш Парадокс превысит 600, сдвиги усилятся.
Ваш контроль над хрономантскими заклинаниями увеличивается Силой Воли.
]]
TOOLTIP_PSI = [[#GOLD#Psi#LAST#
Пси представляет количество энергии которое может использовать ваш разум. Как и саму сущность, Пси нельзя ни создать ни разрушить.
Медленно восстанавливается, пока вы впитываете окружающее вас тепло и кинетическую энергию.
Чтобы вернуть затраченную в бою энергию вы должны использовать поглощающие щиты или другие разнообразные таланты .
Ваша способность к хранению энергии определяется Силой Воли.
]]
TOOLTIP_FEEDBACK = [[#GOLD#Резонанс#LAST#
Резонанс позволяет использовать боль, как источник псионической силы и даёт возможность использовать мощные резонирующие способности.
Резонанс убывает по 10% или 1 каждый ход (в зависимости от того, что больше), скорость убывания зависит от талантов.
Весь урон, полученный от внешних источников, увеличивает ваш резонанс, его количество зависит от потерянного здоровья и уровня персонажа. Персонаж первого уровня получает 100 резонанса при потере 50% здоровья, а персонаж 50го уровня получает столько же резонанса при потере 20% здоровья.
]]
TOOLTIP_NECROTIC_AURA = [[#GOLD#Некротическая Аура#LAST#
Позволяет поднимать нежить и вытягивать души из врагов.
Для получения душ необходимо убить врага внутри ауры.
]]
TOOLTIP_FORTRESS_ENERGY = [[#GOLD#Энергия крепости#LAST#
Энергия крепости Шер'Тул. Накапливается при трансмогрификации вещей и может быть использована для активации всех систем крепости.
]]
TOOLTIP_LEVEL = [[#GOLD#Уровень и опыт#LAST#
При каждом убийства существа минимум на 5 уровней ниже вашего, вы получаете опыт.
При накоплении достаточного количества опыта, вы получаете уровень. Максимум можно получить 50ый уровень.
При каждом получении уровня, вы получаете очки характеристик и талантов для усиления персонажа.
]]
TOOLTIP_ENCUMBERED = [[#GOLD#Нагрузка#LAST#
Каждый переносимый предмет нагружает персонажа. Ваш предел переносимого веса зависит от силы.
Вы не можете двигаться при слишком большой нагрузке, выбросите что-то из вещей.
]]
TOOLTIP_INSCRIPTIONS = [[#GOLD#Усиления#LAST#
Жителя Эяла нашли способ создания травяных инфузий и рун, которые могут быть начерчены на создании. Также существуют и более экзотические виды усилений.
Эти усиления даруют возможность использовать особые способности, которые доступны всегда и могут применять бесчисленное количество раз.
Простая инфузия регенерации относится к самым распространённым типам инфузий, а использование различных типов рун распространено среди пользователей магии.
]]
TOOLTIP_SPEED_GLOBAL = [[#GOLD#Общая Скорость#LAST#
Общая скорость влияет на скорость всех действий.
При высоких значениях вы значительно ускоряетесь, например: при скорости в 200%, вы можете проводить в 2 раза больше любых действий, чем при скорости в 100%.
Обратите внимание, что на скорость движения, атак и создания заклинаний так же влияют их соответствующие скорости.
]]
TOOLTIP_SPEED_MOVEMENT = [[#GOLD#Скорость Движения#LAST#
Влияет на скорость ваших движений..
При высоких значениях вы значительно ускоряетесь, например: при скорости в 200%, вы можете двигаться в 2 раза чаще, чем при скорости в 100%.
]]
TOOLTIP_SPEED_SPELL = [[#GOLD#Скорость Заклинаний#LAST#
Влияет на скорость создания вами заклинаний.
При высоких значениях вы значительно ускоряетесь, например: при скорости в 200%, вы можете колдовать в 2 раза чаще, чем при скорости в 100%.
]]
TOOLTIP_SPEED_ATTACK = [[#GOLD#Скорость Атаки#LAST#
Влияет на скорость атаки оружием, как ближним, так и дальним.
При высоких значениях вы значительно ускоряетесь, например: при скорости в 200%, вы можете атаковать в 2 раза чаще, чем при скорости в 100%.
На скорость атаки так же влияет тип используемого оружия.
]]
TOOLTIP_SPEED_MENTAL = [[#GOLD#Скорость Мысли#LAST#
Влияет на скорость применения ментальных атак.
При высоких значениях вы значительно ускоряетесь, например: при скорости в 200%, вы можете атаковать в 2 раза чаще, чем при скорости в 100%.
]]
TOOLTIP_STATS = [[#GOLD#Характеристики#LAST#
Основные атрибуты вашего персонажа. Базовые: изменяемые свойства вашего персонажа, которые могут быть изменены добавлением очков характеристик (ограничены уровнем персонажа). Текущие: базовое значение характеристик плюс бонусы от экипировки, эффектов, некоторых талантов и т.д.. Используется для определения общей эффективности характеристик.
]]
TOOLTIP_STR = [[#GOLD#Сила#LAST#
Сила определяет способность вашего персонажа к применению физической силы. Увеличивает наносимый тяжёлым оружием урон, физическую защиту и переносимый вес.
]]
TOOLTIP_DEX = [[#GOLD#Ловкость#LAST#
Ловкость определяет способность вашего персонажа к гибкости и настороженности. Повышает точность, уворот, шанс избежать крит. атаки и наносимый вашим лёгким оружием урон.
]]
TOOLTIP_CON = [[#GOLD#Телосложение#LAST#
Телосложение определяет способность вашего персонажа противостоять повреждениям. Она увеличивает: максимум здоровья, физическую защиту и получаемое лечение.
]]
TOOLTIP_MAG = [[#GOLD#Магия#LAST#
Магия определяет способность вашего персонажа к манипулированию магической энергией мира. Она увеличивает: силу заклинаний, защиту от магии, эффективность заклинаний и других магических предметов.
]]
TOOLTIP_WIL = [[#GOLD#Сила воли#LAST#
Сила воли определяет способность вашего персонажа к концентрации. повышает максимальный запас: маны,, выносливости, пси. Увеличивает силу разума, магическую и ментальную защиту.
]]
TOOLTIP_CUN = [[#GOLD#Хитрость#LAST#
Хитрость определяет способность вашего персонажа к изучению, запоминанию и реакцию.Она позволяет вам изучить множество способностей и повышает силу разума, ментальную защиту и шанс критической атаки.
]]
TOOLTIP_STRDEXCON = "#AQUAMARINE#Физические характеристики#LAST#\n---\n"
TOOLTIP_MAGWILCUN = "#AQUAMARINE#Ментальные характеристики#LAST#\n---\n"
TOOLTIP_COMBAT_ATTACK = [[#GOLD#Точность#LAST#
Определяет ваш шанс попасть по цели и выбить её из равновесия, измеряется против вражеского уворота.
При использовании точности для накладывания на врага физических негативных эффектов, каждое очко вражеской защиты(если параметр защиты выше вашего параметра точности) снижает время действия статуса на 5%.
]]
TOOLTIP_COMBAT_PHYSICAL_POWER = [[#GOLD#Физическая мощь#LAST#
Измеряет вашу способность к нанесению урона в ближнем бою.
При использовании физической мощи для накладывания на врага физических негативных эффектов, каждое очко вражеской защиты(если параметр защиты выше вашего параметра атаки) снижает время действия статуса на 5%.
]]
TOOLTIP_COMBAT_DAMAGE = [[#GOLD#Урон#LAST#
Урон, который вы наносите по врагам, когда попадаете в них.
Он может быть уменьшен вражеской бронёй и сопротивлениями.
Повышается при росте характеристик, для разных типов оружия требуются разные характеристики. Некоторые таланты могут менять необходимые для повышения урона характеристики.
]]
TOOLTIP_COMBAT_BLOCK = [[#GOLD#Блокируемый щитом урон#LAST#
Отображает количество урона, который способен заблокировать ваш щит при активном блоке.
Обычно эффективно только против физического урона, но некоторые щиты и таланты позволяют блокировать другие типы урона.
]]
TOOLTIP_COMBAT_APR = [[#GOLD#Игнорирование брони#LAST#
Позволяет игнорировать часть вражеской брони (влияет только на броню, не на сопротивления).
Не увеличивает изначальное значение урона, так что будет полезно только против бронированных целей.
]]
TOOLTIP_COMBAT_CRIT = [[#GOLD#Шанс крит. атаки#LAST#
При атаке или использовании таланта есть шанс критической атаки, которая наносит дополнительный урон.
Некоторые таланты и вещи могут поднять этот шанс, также повышается от роста вашей хитрости.
]]
TOOLTIP_COMBAT_SPEED = [[#GOLD#Скорость атаки#LAST#
Отображает вашу скорость атаки по сравнению с нормальной, чем выше это значение, тем больше атак вы можете провести за одно и тоже время.
]]
TOOLTIP_COMBAT_RANGE = [[#GOLD#Радиус стрельбы#LAST#
Максимальная дистанция, на которую вы можете выстрелить.
]]
TOOLTIP_ARCHERY_RANGE_SPEED = [[#GOLD#Дальность и скорость выстрела#LAST#
Дальние атаки создают снаряды, которые способны пролететь определённое расстояние.
Снаряды летят со своей собственной скоростью, выраженную в процентах от нормальной скорости передвижения.
]]
TOOLTIP_COMBAT_AMMO = [[#GOLD#Оставшиеся боеприпасы#LAST#
Количество оставшихся боеприпасов.
Луки и пращи должны быть перезаряжены, когда это значение достигнет 0, перезарядка происходит каждый ход, в который вы отдыхаете или двигаетесь.
Алхимики используют специальные драгоценные камни в качестве снарядов для своих бомб, они должны быть перезаряжены вручную.
]]
TOOLTIP_FATIGUE = [[#GOLD#Нагрузка#LAST#
Нагрузка отображается в процентном значении и увеличивает стоимость ваших талантов.
Тяжёлые доспехи повышают ваш уровень нагрузки.
Не все таланты ей подвержены, например; на природные дары нагрузка не работает.
]]
TOOLTIP_ARMOR = [[#GOLD#Броня#LAST#
Броня уменьшает получаемый от ближних и дальних атак урон.
Поглощает (hardiness)% получаемого от оружия урона, но ограничивается вашим значением брони.
Противопоставляется вражескому игнорированию брони и вычитает урон до прибавок к крит. урону и множителей урона, это делает даже небольшую прибавку к броне очень эффективной.
]]
TOOLTIP_ARMOR_HARDINESS = [[#GOLD#Эффективность брони#LAST#
Отображает эффективность использования вами брони.
Поглощает (hardiness)% получаемого от оружия урона, но ограничивается вашим значением брони.
]]
TOOLTIP_CRIT_REDUCTION = [[#GOLD#Уменьшение крит. шанса#LAST#
Уменьшает вражеский шанс провести ближнюю или дальнюю критическую атаку.
]]
TOOLTIP_CRIT_SHRUG = [[#GOLD#Игнорирование крит. атак#LAST#
Даёт шанс превратить любую критическую атаку в обычную.
]]
TOOLTIP_DEFENSE = [[#GOLD#Уворот#LAST#
Уворот отображает ваш шанс уклониться от атаки в ближнем бою и уменьшает шанс потерять баланс из-за вражеской атаки. Он измеряется против вражеской точности.
]]
TOOLTIP_RDEFENSE = [[#GOLD#Уворот от дальних атак#LAST#
Определяет ваш шанс уклониться от дальних атак и уменьшает шанс получить потерю баланса при вражеской атаке. Соотносится с точностью врага.
]]
TOOLTIP_SAVES = [[#GOLD#Защита#LAST#
Отображает вашу способность к полному или частичному игнорированию вражеских негативных эффектов. Многие негативные эффекты проходят проверку вражеской мощи (физической, магической, ментальной) против вашей защиты соответствующего типа. При равных значениях мощи и защиты, шанс накладывания эффекта около 50%.
]]
TOOLTIP_PHYS_SAVE = [[#GOLD#Физическая защита#LAST#
Повышает шанс не получить физический негативный эффект. Помимо этого, каждое очко вашей защиты(если параметр защиты выше вражеского параметра мощи) снижает время действия физических статусов на 5%.
]]
TOOLTIP_SPELL_SAVE = [[#GOLD#Защита от заклинаний#LAST#
Повышает шанс не получить магический негативный эффект. Помимо этого, каждое очко вашей защиты(если параметр защиты выше вражеского параметра мощи) снижает время действия магических статусов на 5%.
]]
TOOLTIP_MENTAL_SAVE = [[#GOLD#Ментальная защита#LAST#
Повышает шанс не получить ментальный негативный эффект. Помимо этого, каждое очко вашей защиты(если параметр защиты выше вражеского параметра мощи) снижает время действия ментальных статусов на 5%.
]]
TOOLTIP_SPELL_POWER = [[#GOLD#Сила заклинаний#LAST#
Определяет эффективность ваших заклинаний,
При использовании силы заклинаний для накладывания на врага магических негативных эффектов, каждое очко вражеской защиты(если параметр защиты выше вашего параметра атаки) снижает время действия статуса на 5%.
]]
TOOLTIP_SPELL_CRIT = [[#GOLD#Шанс маг. крит. атаки#LAST#
При атаке или использовании таланта есть шанс критической атаки, которая наносит дополнительный урон.
Некоторые таланты и вещи могут поднять этот шанс, также повышается от роста вашей хитрости.
]]
TOOLTIP_SPELL_SPEED = [[#GOLD#Скорость Заклинаний#LAST#
Влияет на скорость создания вами заклинаний.
При высоких значениях вы значительно ускоряетесь, например: при скорости в 200%, вы можете колдовать в 2 раза чаще, чем при скорости в 100%.
]]
TOOLTIP_SPELL_COOLDOWN = [[#GOLD#Перезарядка заклинаний#LAST#
Влияет на скорость перезарядки ваших заклинаний.
При низких значениях, позволяет чаще использовать заклинания и руны.
]]
TOOLTIP_MINDPOWER = [[#GOLD#Сила разума#LAST#
Определяет эффективность ваших ментальных способностей.
При использовании силы разума для накладывания на врага ментальных негативных эффектов, каждое очко вражеской защиты(если параметр защиты выше вашего параметра атаки) снижает время действия статуса на 5%.
]]
TOOLTIP_MIND_CRIT = [[#GOLD#Шанс ментальной крит. атаки#LAST#
При атаке или использовании таланта есть шанс критической атаки, которая наносит дополнительный урон.
Некоторые таланты и вещи могут поднять этот шанс, также повышается от роста вашей хитрости.
]]
TOOLTIP_MIND_SPEED = [[#GOLD#Скорость мысли#LAST#
Отображает вашу скороcть использования пси способностей по сравнению с нормальной, чем выше это значение, тем больше способностей вы можете использовать за одно и тоже время.
]]
TOOLTIP_INC_DAMAGE_ALL = [[#GOLD#Повышение урона: все#LAST#
Увеличивает весь наносимый урон на определённый процент.
Разные прибавки к урону одним и тем же элементом складываются.
]]
TOOLTIP_INC_DAMAGE = [[#GOLD#Повышение урона: специальный#LAST#
Увеличивает весь наносимый урон на определённый процент.
]]
TOOLTIP_INC_DAMAGE_ACTOR = [[#GOLD#Повышение урона: по типу существа#LAST#
Увеличивает весь наносимый по определённому типу существ урон. Складывается с остальными прибавками к урону.
]]
TOOLTIP_INC_CRIT_POWER = [[#GOLD#Крит. множитель#LAST#
Повышает урон, наносимый всеми вашими критическими атаками.
]]
TOOLTIP_RESIST_DAMAGE = [[#GOLD#Сопротивление урону#LAST#
Увеличивает или уменьшает получаемый от разных элементов урон. Урон уменьшается на определённый процент(который может быть уменьшен вражеским игнорированием сопротивлений).
Ваше увеличение или уменьшение сопротивлений не может быть выше предела, который можно увеличить некоторыми вещами и талантами до 100%.
]]
TOOLTIP_RESIST_ALL = [[#GOLD#Сопротивление урону: все#LAST#
Уменьшает весь получаемый урон.
Складывается с другими сопротивлениями, но не может повышать их выше предела.
(Пример работы: при 20% сопротивления всему урону и 50% сопротивления огненному урону, вы получаете на 60% меньше урона от огня)
]]
TOOLTIP_RESIST_ABSOLUTE = [[#GOLD#Сопротивление урону: абсолют#LAST#
Уменьшает весь получаемый урон.
Не складывается с другими сопротивлениями и вычитает урон после срабатывания других сопротивлений. Ничем не игнорируется.
]]
TOOLTIP_RESIST = [[#GOLD#Сопротивление урону: специальное#LAST#
Уменьшает весь получаемый урон.
]]
TOOLTIP_RESIST_SPEED = [[#GOLD#Сопротивление урону: по скорости#LAST#
Уменьшает весь получаемый урон, эффективность зависит от вашей текущей скорости(чем её меньше, тем выше защита)
Работает после вычета урона обычным сопротивлением..
]]
TOOLTIP_RESIST_DAMAGE_ACTOR = [[#GOLD#Сопротивление урону: по типу существа#LAST#
Уменьшает весь получаемый урон от существ определённого типа. Складывается в другими сопротивлениями..
]]
TOOLTIP_AFFINITY_ALL = [[#GOLD#Сродство с элементом: все#LAST#
Весь получаемый от этого элемента урон лечит вас на определённый процент от урона.
Складывается с другими прибавками к сродству.
ВАЖНО: лечение от сродства срабатывает после получения урона и не позволяет избежать смерти.
]]
TOOLTIP_AFFINITY = [[#GOLD#Сродство с элементом: специальное#LAST#
Весь получаемый от этого элемента урон лечит вас на определённый процент от урона.
ВАЖНО: лечение от сродства срабатывает после получения урона и не позволяет избежать смерти.
]]
TOOLTIP_STATUS_IMMUNE = [[#GOLD#Сопротивление статусам#LAST#
Многих негативных эффектов можно избежать, если иметь сопротивление, которое даёт определённый шанс полного игнорирования эффекта. Этот шанс срабатывает отдельно от спас бросков и других видов защиты.
]]
TOOLTIP_SPECIFIC_IMMUNE = [[#GOLD#Сопротивление негативным эффектам#LAST#
Отображает шанс, полностью проигнорировать вражеский негативный эффект.
]]
TOOLTIP_STUN_IMMUNE = [[#GOLD#Сопротивление оглушению#LAST#
Отображает шанс, полностью проигнорировать попытку оглушить, ошеломить или заморозить вас.
]]
TOOLTIP_INSTAKILL_IMMUNE = [[#GOLD#Сопротивление мгновенному убийству#LAST#
Отображает шанс, полностью проигнорировать попытку мгновенно убить, вывести из строя или взять вас под контроль.
]]
TOOLTIP_NEGATIVE_STATUS_IMMUNE = [[#GOLD#Сопротивление негативным эффектам#LAST#
Отображает шанс, полностью проигнорировать попытки накладывания на вас негативных эффектов.
]]
TOOLTIP_ON_HIT_DAMAGE = [[#GOLD#Ответный урон#LAST#
При каждом получении урона в ближнем бою, враг получает в ответ урон и/или негативные эффекты.
]]
TOOLTIP_RESISTS_PEN_ALL = [[#GOLD#Игнорирование сопротивлений: все#LAST#
Уменьшает вражеское сопротивление урону на определённый процент.
Если у вас 50% игнорирования сопротивлений, а у вражеского существа с 50% сопротивление, то от вашей атаки его будет защищать только 25% сопротивления.
Разные прибавки к игнорированию одного и того же сопротивления складываются.
]]
TOOLTIP_RESISTS_PEN = [[#GOLD#Игнорирование сопротивлений: специальное#LAST#
Уменьшает вражеское сопротивление урону на определённый процент.
Если у вас 50% игнорирования сопротивлений, а у вражеского существа с 50% сопротивление, то от вашей атаки его будет защищать только 25% сопротивления.
]]
TOOLTIP_FLAT_RESIST = [[#GOLD#Фиксированная защита#LAST#
Уменьшает получаемый урон от определённого элемента (или от всех) на данное значение.
]]
TOOLTIP_ESP = [[#GOLD#Телепатия#LAST#
Позволяет чувствовать всех существ определённого типа на некотором расстоянии от вас.
]]
TOOLTIP_ESP_RANGE = [[#GOLD#Дистанция телепатии#LAST#
Отображает дистанцию, на которой вы способны телепатически чувствовать разных существ.
]]
TOOLTIP_ESP_ALL = [[#GOLD#Телепатия#LAST#
Позволяет чувствовать всех существ на определённом расстоянии от вас.
]]
TOOLTIP_VISION_LITE = [[#GOLD#Радиус освещения#LAST#
Максимальная дистанция, на которую от вас исходит свет. Вы не можете видеть дальше этого радиуса, если только местность не освещена.
]]
TOOLTIP_VISION_SIGHT = [[#GOLD#Дистанция зрения#LAST#
Определяет то, как далеко вы можете видеть. Работает только внутри вашего радиуса освещения или в освещённых местах.
]]
TOOLTIP_VISION_INFRA = [[#GOLD#Обострённые чувства#LAST#
Специальные виды зрения (в том числе инфразрение), который работает только во тьме и позволяет видеть только существ. Только лучшая из способностей используется.
]]
TOOLTIP_VISION_STEALTH = [[#GOLD#Скрытность#LAST#
Чтоб войти в данное состояние, необходимо использовать талант "Скрытность".
Скрытность позволяет спрятаться от взора многих существ.
Увидевшие вас существа имеют пониженный шанс попадания по вам в ближнем и стрелковом бою (магия и ментальные атаки не промахиваются)
Все существа имеют определённый шанс увидеть вас.
]]
TOOLTIP_VISION_SEE_STEALTH = [[#GOLD#Обнаружение скрытых#LAST#
Позволяет видеть скрытых существ. Чем выше значение обнаружения, тем выше шанс увидеть скрытого врага.
]]
TOOLTIP_VISION_INVISIBLE = [[#GOLD#Невидимость#LAST#
Невидимые существа скрыты от глаз других с помощью магии. Могут быть увидены существами, со способностью обнаружать невидимое.
]]
TOOLTIP_VISION_SEE_INVISIBLE = [[#GOLD#Обнаружение невидимых#LAST#
Позволяет видеть невидимых существ.
Не обладающие данной способностью не способны увидеть невидимых существ.
]]
TOOLTIP_ANTIMAGIC_USER = [[#GOLD#Антимаг#LAST#
Посвятил свою жизнь уничтожению всего магического и тайного в мире.
Использование заклинаний и магических вещей невозможно.
]]
file/game/modules/tome.team/mod/class/interface/WorldAchievements.lua.txt
print("Achievement with default image not found", t.id, "/data/gfx/achievements/"..t.id:lower()..".png")
file/game/modules/tome.team/mod/class/NicerTiles.lua.txt
print("[NICE TILER] *warning* refusing to remove zone/level changer at ", r[1], r[2], og.change_zone, og.change_level)
local s = (level.map:checkEntity(i, j, Map.TERRAIN, "type") or "wall")
local s = (level.map:checkEntity(i, j, Map.TERRAIN, "type") or "wall")
print("niceTileDoor3dUnearth case 3")
print("niceTileDoor3dUnearth case 4")
print((" [0x%s] = '%s',"):format(bit.tohex(v), name))
file/game/modules/tome.team/mod/class/NPC.lua.txt
game.logPlayer(self.summoner, "#PINK#Ваш призванный %s исчезает.", self.name)
print("[TARGET] Passing target", self.name, "from", who.name, "to", who.ai_target.actor.name)
doEmote(self.anger_emote:gsub("@himher@", src.female and "он" or "она"), 30)
str:add(
true,
("Убито вами: %s"):format(killed), true,
"Цель: ", target and target.name or "none"
)
str:add(" смотрит " ..offset)
str:add((" (%+d, %+d)"):format(dx, dy))
str:add(" смотрит на вас.")
str:add(true, "UID: "..self.uid, true, self.image)
game.logSeen(self, "%s говорит: '%s'", self.name:capitalize(), e.text)
print("Insane increasing " .. self.name .. " life by " .. lifeadd)
print("[NPC:addedToLevel]", self.name, self.uid, "wearing", o.name)
print("--- replacing", worn.name)
logCombat(target, "#Source# толкает #Target# вперёд.")
file/game/modules/tome.team/mod/class/Object.lua.txt
print("[UNIQUE MODDABLE] auto moddable set for ", self.name, file)
print("[UNIQUE MODDABLE] auto moddable set for ", self.name, file)
print("[UNIQUE MODDABLE] auto moddable failed for ", self.name)
print("[UNIQUE MODDABLE] auto moddable set for ", self.name, file)
print("[UNIQUE MODDABLE] auto moddable failed for ", self.name, self.moddable_tile, filecheck)
return false, "Этот объект не имеет используемых способностей."
end
return false, "Вы не можете использовать этот предмет сейчас!"
end
return false, "Вы не можете видеть!"
end
return false, "Вы не можете говорить!"
end
return false, "Чтобы использовать этот предмет вы должны надеть его!"
end
return false, "Вы не можете использовать этот предмет в состоянии боевого безумия!"
end
return false, "Ты не можешь использовать объекты во сне!"
end
return true, "Предмет не может быть использован."
end
game.logPlayer(who, "%s заряжается.", self:getName{no_count=true})
game.logPlayer(who, "%s не может быть более использован.", self:getName{no_count=true})
game.logPlayer(who, "%s заряжается.", self:getName{no_count=true})
game.logPlayer(who, "%s не может быть более использован.", self:getName{no_count=true})
str:add(true, "UID: "..self.uid, true, self.image)
str:add(true, "---", true, "Вы видите ещё один объект.")
str:add(true, "---", true, "Ты видишь "..(nb-1).." много объектов.")
return ("%s%0.2f/turn"):format(i > 0 and "+" or "-", math.abs(i))
elseif attr == "COMBAT" then
local c = self.combat
return power(c)..", "..(c.apr or 0).." apr"
elseif attr == "COMBAT_AMMO" then
local c = self.combat
return c.shots_left.."/"..math.floor(c.capacity)..", "..power(c)..", "..(c.apr or 0).." apr"
elseif attr == "COMBAT_DAMTYPE" then
local c = self.combat
return power(c)..", "..("%d"):format((c.apr or 0)).." apr, "..DamageType:get(c.damtype).name.." damage"
elseif attr == "COMBAT_ELEMENT" then
local c = self.combat
return power(c)..", "..("%d"):format((c.apr or 0)).." apr, "..DamageType:get(c.element or DamageType.PHYSICAL).name.." element"
elseif attr == "SHIELD" then
local c = self.special_combat
if c and (game.player:knowTalentType("technique/shield-offense") or game.player:knowTalentType("technique/shield-defense") or game.player:attr("show_shield_combat")) then
return power(c)..", "..c.block.." block"
else
return c.block.." block"
end
return ("стоимость %0.2f"):format(self.money_value / 10)
elseif attr == "USE_TALENT" then
return self:getTalentFromId(self.use_talent.id).name:lower()
elseif attr == "DIGSPEED" then
return ("скорость копания: %d ходов"):format(self.digspeed)
elseif attr == "CHARM" then
return (" [мощь %d]"):format(self:getCharmPower(game.player))
elseif attr == "CHARGES" then
local reduce = 100 - util.bound(game.player:attr("use_object_cooldown_reduce") or 0, 0, 100)
if self.talent_cooldown and (self.use_power or self.use_talent) then
local cd = game.player.talents_cd[self.talent_cooldown]
if cd and cd > 0 then
return " ("..cd.."/"..(math.ceil((self.use_power or self.use_talent).power * reduce / 100)).." cooldown)"
else
return " ("..(math.ceil((self.use_power or self.use_talent).power * reduce / 100)).." cooldown)"
end
return (" (%d/%d)"):format(math.floor(self.power / (math.ceil((self.use_power or self.use_talent).power * reduce / 100))), math.floor(self.max_power / (math.ceil((self.use_power or self.use_talent).power * reduce / 100))))
else
return ""
end
return ("%s"):format(desc)
end
desc:add("Бонус точности: ", {"color","LIGHT_GREEN"}, showpct(0.4, m), {"color","LAST"}, " crit.pwr / acc", true)
desc:add("Бонус точности: ", {"color","LIGHT_GREEN"}, showpct(0.2, m), {"color","LAST"}, " crit / acc", true)
desc:add("Бонус точности: ", {"color","LIGHT_GREEN"}, showpct(0.1, m), {"color","LAST"}, " dam / acc", true)
desc:add("Бонус точности: ", {"color","LIGHT_GREEN"}, showpct(2.5, m), {"color","LAST"}, " procs dam / acc", true)
desc:add("Бонус точности: ", {"color","LIGHT_GREEN"}, showpct(0.5, m), {"color","LAST"}, " APR / acc", true)
desc:add({"color", "VIOLET"},"[Сюжетный предмет]", {"color", "LAST"}, true)
desc:add({"color", "C578C6"},"[Меняет внешний вид]", {"color", "LAST"}, true)
desc:add({"color", "FF4000"},"[Легендарный]", {"color", "LAST"}, true)
desc:add({"color", "AAD500"},"[Убийца богов]", {"color", "LAST"}, true)
desc:add({"color", "FF7700"},"[Случайный артефакт]", {"color", "LAST"}, true)
desc:add({"color", "FFD700"},"[Уникальный]", {"color", "LAST"}, true)
desc:add(("Тип: %s / %s"):format(tostring(rawget(self, 'type') or "unknown"), tostring(rawget(self, 'subtype') or "unknown")))
desc:add(" ; ранг ", tostring(self.material_level))
desc:add("Нужно держать обеими руками.", true)
desc:add("Может быть использовано как основное или дополнительное оружие.", true)
desc:add("Мастерство: ", {"color","GOLD"}, t.name, {"color","LAST"}, true)
desc:add("Точность данного оружия зависит от силы воли.", true)
desc:add("Урон оружия: ", dt.text_color or "#WHITE#", dt.name:upper(),{"color","LAST"})
desc:add(", ", dt.text_color or "#WHITE#", dt.name, {"color", "LAST"})
desc:add("#YELLOW#Может наложить специальные эффекты на врага при попадании.#LAST#", true)
desc:add("#ORCHID#Может наложить специальные эффекты при блокировании ближней атаки.#LAST#", true)
desc:add(("%s окружающий свет (%+d радиус)."):format(self.wielder.lite >= 0 and "provides" or "dims", self.wielder.lite), true)
desc:add("#ORANGE#Имеет активируемое свойство.#LAST#", true)
desc:add({"color","GREEN"}, "Часть комплекта.", {"color","LAST"}, true)
desc:add({"color","GREEN"}, text, {"color","LAST"}, true)
desc:add({"color","LIGHT_GREEN"}, "Комплект собран.", {"color","LAST"}, true)
ret:add(((item1[field] or 0) + (add_table[field] or 0)) > 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, outformatres, {"color", "LAST"})
ret:add(((item1[field] or 0) + (add_table[field] or 0)) < 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, outformatres, {"color", "LAST"})
ret:add(items[i][infield][field] < (item1[field] or 0) and {"color","RED"} or {"color","LIGHT_GREEN"}, outformatres, {"color", "LAST"})
ret:add(items[i][infield][field] > (item1[field] or 0) and {"color","RED"} or {"color","LIGHT_GREEN"}, outformatres, {"color", "LAST"})
ret:add(("%s"):format((count1 > 0) and " / " or ""), (v[1] or 0) > 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0)), {"color","LAST"})
ret:add(("%s"):format((count1 > 0) and " / " or ""), (v[1] or 0) < 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0)), {"color","LAST"})
ret:add((v[1] or 0) > vv and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0) - vv), {"color","LAST"})
ret:add((v[1] or 0) < vv and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0) - vv), {"color","LAST"})
local s = ("Мощь: %3d%% (%s) Дальность: %.1fx (%s)")
desc:add(("Мощь: %3d%% Дальность: %.1fx"):format(base_power * 100, base_range))
desc:add(("Базовый урон: %.1f - %.1f"):format((combat.dam or 0) + (add_table.dam or 0), ((combat.damrange or (1.1 - (add_table.damrange or 0))) + (add_table.damrange or 0)) * ((combat.dam or 0) + (add_table.dam or 0))))
desc:add(("Использует характеристику %s: %s"):format(#dm > 1 and "s" or "",table.concat(dm, ', ')), true)
desc:add("Тип урона: ", col[2],DamageType:get(combat.damtype or DamageType.PHYSICAL).name:capitalize(),{"color","LAST"}, true)
desc:add("Мастерство: ", {"color","GOLD"}, t.name, {"color","LAST"}, true)
desc:add("Точность данного оружия зависит от силы воли.", true)
compare_fields(combat, compare_with, field, "atk", "%+d", "Точность: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "apr", "%+d", "Игнорирование брони: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "physcrit", "%+.1f%%", "Шанс крит. атаки: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "crit_power", "%+.1f%%", "Сила крита: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "physspeed", physspeed_compare, "Скорость атаки: ", 1, false, true, add_table)
compare_fields(combat, compare_with, field, "block", "%+d", "Блокируемый урон: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "dam_mult", "%d%%", "множ. урона: ", 100, false, false, add_table)
compare_fields(combat, compare_with, field, "range", "%+d", "Радиус стрельбы: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "capacity", "%d", "Кол-во снарядов: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "shots_reloaded_per_turn", "%+d", "Скорость перезарядки: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "ammo_every", "%d", "Ходов между перезарядкой: ", 1, false, false, add_table)
desc:add({"color","RED"}, ("Эффект при попадании: %s (%d%% %d уровня)."):format(self:getTalentFromId(tid).name, data.chance, data.level), {"color","LAST"}, true)
desc:add(talents[tid][3] and {"color","WHITE"} or {"color","GREEN"}, ("Эффект при попадании: %s (%d%% %d уровня)."):format(self:getTalentFromId(tid).name, talents[tid][1], talents[tid][2]), {"color","LAST"}, true)
desc:add({"color","RED"}, ("Эффект при крит. попадании: %s (%d%% %d уровня)."):format(self:getTalentFromId(tid).name, data.chance, data.level), {"color","LAST"}, true)
desc:add(talents[tid][3] and {"color","WHITE"} or {"color","GREEN"}, ("Эффект при крит. попадании: %s (%d%% %d уровня)."):format(self:getTalentFromId(tid).name, talents[tid][1], talents[tid][2]), {"color","LAST"}, true)
desc:add({'color',color}, prefix, message, {'color','LAST'}, true)
desc:add({'color','WHITE'}, '* ', message, {'color','LAST'}, true)
desc:add(found and {"color","WHITE"} or {"color","GREEN"},"Не выводит из скрытности при обычной атаке.", {"color","LAST"}, true)
desc:add({"color","RED"}, "Не выводит из скрытности при обычной атаке.", {"color","LAST"}, true)
desc:add({"color", "YELLOW"}, "Сокрушительные удары: ", {"color", "LAST"}, "Наносимый этим оружием урон увеличивается на 50% от вашей прибавки к критическому урону.", true)
compare_fields(combat, compare_with, field, "travel_speed", "%+d%%", "Скорость снаряда: ", 100, false, false, add_table)
compare_fields(combat, compare_with, field, "phasing", "%+d%%", "Игнорирование Магического Щита (только для этого оружия): ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "lifesteal", "%+d%%", "Похищение здоровья (только для этого оружия): ", 1, false, false, add_table)
return ("%+d%%"):format(-(orig - (100 - 100 / compare_with)))
else return ("%d%%"):format(-orig) end
compare_fields(combat, compare_with, field, "attack_recurse", "%+d", "Множественные атаки: ", 1, false, false, add_table)
compare_fields(combat, compare_with, field, "attack_recurse_procs_reduce", attack_recurse_procs_reduce_compare, "Уменьшение мощности множественной атаки: ", 1, true, false, add_table)
desc:add({"color","YELLOW"}, ("Выпускает луч сквозь все цели на пути."), {"color","LAST"}, true)
compare_table_fields(
combat, compare_with, field, "melee_project", "%+d", "Урон (Ближний): ",
function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end,
nil, nil,
function(k, v) return not DamageType.dam_def[k].tdesc end)
compare_table_fields(
combat, compare_with, field, "ranged_project", "%+d", "Урон (Дальний): ",
function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end,
nil, nil,
function(k, v) return not DamageType.dam_def[k].tdesc end)
compare_table_fields(combat, compare_with, field, "burst_on_hit", "%+d", "Взрыв (радиус 1) при попадании: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end)
compare_table_fields(combat, compare_with, field, "burst_on_crit", "%+d", "Взрыв (радиус 2) при крит. попадании: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end)
compare_table_fields(combat, compare_with, field, "convert_damage", "%d%%", "Урон переводится в: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end)
compare_table_fields(combat, compare_with, field, "inc_damage_type", "%+d%% ", "Урон против: ", function(item)
local _, _, t, st = item:find("^([^/]+)/?(.*)$")
if st and st ~= "" then
return st:capitalize()
else
return t:capitalize()
end
end)
compare_table_fields(
combat, compare_with, field, "use_resources", "%0.1f", "#ORANGE#Атаки используют: #LAST#",
function(item)
local res_def = ActorResource.resources_def[item]
local col = (res_def and res_def.color or "#SALMON#"):toTString()
return col[2], (" %s"):format(res_def and res_def.name or item:capitalize()),{"color","LAST"}
end,
nil,
true)
compare_fields(w, compare_with, field, "combat_apr", "%+d", "Игнорирование брони: ")
compare_fields(w, compare_with, field, "combat_physcrit", "%+.1f%%", "Физический крит. шанс: ")
compare_fields(w, compare_with, field, "combat_armor", "%+d", "Броня: ")
compare_fields(w, compare_with, field, "combat_armor_hardiness", "%+d%%", "Эффективность брони: ")
compare_fields(w, compare_with, field, "fatigue", "%+d%%", "Усталость: ", 1, true, true)
compare_fields(w, compare_with, field, "ammo_reload_speed", "%+d", "Снарядов перезаряжается каждый ход: ")
desc:add({"color","ORANGE"}, "Эффект при попадании в ближнем бою: ", {"color","LAST"}, true)
compare_table_fields(combat2, compare_with, field, "melee_project", "%d", "Урон (Ближний): ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2],(" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end)
desc:add({"color","ORANGE"}, "Эффект при попадании в дальнем бою: ", {"color","LAST"}, true)
compare_table_fields(ranged_combat, compare_with, field, "ranged_project", "%d", "Урон (Дальний): ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2],(" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end)
desc:add({"color","ORANGE"}, "Эффект при получении урона в ближнем бою: ", {"color","LAST"}, true)
compare_table_fields(onhit_combat, compare_with, field, "on_melee_hit", "%d", "Ответный урон (Ближний): ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2],(" %s"):format(DamageType.dam_def[item].name),{"color","LAST"}
end)
desc:add({"color","ORANGE"}, "Основные эффекты: ", {"color","LAST"}, true)
compare_table_fields(w, compare_with, field, "inc_stats", "%+d", "Характеристики: ", function(item)
return (" %s"):format(Stats.stats_def[item].short_name:capitalize())
end)
compare_table_fields(w, compare_with, field, "resists", "%+d%%", "Сопротивления: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(item == "all" and "all" or (DamageType.dam_def[item] and DamageType.dam_def[item].name or "??")), {"color","LAST"}
end)
compare_table_fields(w, compare_with, field, "resists_cap", "%+d%%", "Предел сопротивлений: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(item == "all" and "all" or (DamageType.dam_def[item] and DamageType.dam_def[item].name or "??")), {"color","LAST"}
end)
compare_table_fields(w, compare_with, field, "flat_damage_armor", "%+d", "Уменьшает урон на фиксированную величину: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(item == "all" and "all" or (DamageType.dam_def[item] and DamageType.dam_def[item].name or "??")), {"color","LAST"}
end)
compare_table_fields(w, compare_with, field, "щиты", "%+d", "Максимум щитов: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(item == "all" and "all" or (DamageType.dam_def[item] and DamageType.dam_def[item].name or "??")), {"color","LAST"}
end)
compare_table_fields(w, compare_with, field, "resists_pen", "%+d%%", "Игнорирование сопротивлений: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(item == "all" and "all" or (DamageType.dam_def[item] and DamageType.dam_def[item].name or "??")), {"color","LAST"}
end)
compare_table_fields(w, compare_with, field, "inc_damage", "%+d%%", "Урон: ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(item == "all" and "all" or (DamageType.dam_def[item] and DamageType.dam_def[item].name or "??")), {"color","LAST"}
end)
compare_table_fields(w, compare_with, field, "inc_damage_actor_type", "%+d%% ", "Урон против: ", function(item)
local _, _, t, st = item:find("^([^/]+)/?(.*)$")
if st and st ~= "" then
return st:capitalize()
else
return t:capitalize()
end
end)
compare_table_fields(w, compare_with, field, "resists_actor_type", "%+d%% ", "Уменьшает урон от: ", function(item)
local _, _, t, st = item:find("^([^/]+)/?(.*)$")
if st and st ~= "" then
return st:capitalize()
else
return t:capitalize()
end
end)
compare_table_fields(w, compare_with, field, "damage_affinity", "%+d%%", "Близость с элементом(лечение): ", function(item)
local col = (DamageType.dam_def[item] and DamageType.dam_def[item].text_color or "#WHITE#"):toTString()
return col[2], (" %s"):format(item == "all" and "all" or (DamageType.dam_def[item] and DamageType.dam_def[item].name or "??")), {"color","LAST"}
end)
compare_fields(w, compare_with, field, "esp_range", "%+d", "Радиус телепатии : ")
desc:add("Телепатия с: ")
desc:add(isin[1] and {"color","WHITE"} or {"color","GREEN"}, ("%s "):format(esp), {"color","LAST"})
desc:add({"color","RED"}, ("%s "):format(esp), {"color","LAST"})
desc:add(("Владение талант%s: "):format(any_mastery > 1 and "ами" or "ом"))
desc:add(("%+.2f"):format(ttid[2] or 0), diff < 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, ("(%+.2f) "):format(diff), {"color","LAST"}, ("%s "):format(name))
desc:add({"color","LIGHT_GREEN"}, ("%+.2f"):format(ttid[2] or 0), {"color","LAST"}, (" %s "):format(name))
desc:add({"color","WHITE"}, ("%+.2f(-) %s "):format(ttid[2] or ttid[1], name), {"color","LAST"})
desc:add(("Перезарядка талант%s :"):format(any_cd_reduction > 1 and "ов" or "а"))
desc:add((" %s ("):format(Talents.talents_def[tid].name), ("(%+d"):format(-(cds[2] or 0)), diff < 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, ("(%+d) "):format(-diff), {"color","LAST"}, ("ход%s)"):format(((cds[2] or 0) > 1) and "ов" or ""))
desc:add((" %s ("):format(Talents.talents_def[tid].name), {"color","LIGHT_GREEN"}, ("%+d"):format(-(cds[2] or 0)), {"color","LAST"}, (" ход%s)"):format((cds[2] > 1) and "ов" or ""))
desc:add({"color","WHITE"}, (" %s (%+d(-) ход%s)"):format(Talents.talents_def[tid].name, -(cds[2] or cds[1]), ((cds[2] or 0) > 1) and "ов" or ""), {"color","LAST"})
desc:add(("Талантов%s получено: "):format(any_learn_talent > 1 and "" or ""))
desc:add(("+%d"):format(tl[2] or 0), diff < 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, ("(+%d) "):format(diff), {"color","LAST"}, ("%s "):format(name))
desc:add({"color","LIGHT_GREEN"}, ("+%d"):format(tl[2] or 0), {"color","LAST"}, (" %s "):format(name))
desc:add({"color","WHITE"}, ("%+.2f(-) %s "):format(tl[2] or tl[1], name), {"color","LAST"})
desc:add("Позволяет дышать под: ")
desc:add(isin[1] and {"color","WHITE"} or {"color","GREEN"}, ("%s "):format(what), {"color","LAST"})
desc:add({"color","RED"}, ("%s "):format(what), {"color","LAST"})
compare_fields(w, compare_with, field, "combat_critical_power", "%+.2f%%", "Крит. множитель: ")
compare_fields(w, compare_with, field, "ignore_direct_crits", "%-.2f%%", "Уменьшение получаемого крит. урона: ")
compare_fields(w, compare_with, field, "combat_crit_reduction", "%-d%%", "Уменьшает вражеский крит. шанс: ")
compare_fields(w, compare_with, field, "disarm_bonus", "%+d", "Бонус к обезвреживанию ловушек: ")
compare_fields(w, compare_with, field, "inc_stealth", "%+d", "Бонус к скрытности: ")
compare_fields(w, compare_with, field, "max_encumber", "%+d", "Максимальная нагрузка: ")
compare_fields(w, compare_with, field, "blind_immune", "%+d%%", "Сопротивление ослеплению: ", 100)
compare_fields(w, compare_with, field, "poison_immune", "%+d%%", "Сопротивление яду: ", 100)
compare_fields(w, compare_with, field, "disease_immune", "%+d%%", "Сопротивление болезням: ", 100)
compare_fields(w, compare_with, field, "cut_immune", "%+d%%", "Сопротивление порезам: ", 100)
compare_fields(w, compare_with, field, "silence_immune", "%+d%%", "Сопротивление безмолвию: ", 100)
compare_fields(w, compare_with, field, "disarm_immune", "%+d%%", "Сопротивление обезоруживанию: ", 100)
compare_fields(w, compare_with, field, "confusion_immune", "%+d%%", "Сопротивление путанице: ", 100)
compare_fields(w, compare_with, field, "sleep_immune", "%+d%%", "Сопротивление сну: ", 100)
compare_fields(w, compare_with, field, "pin_immune", "%+d%%", "Сопротивление обездвиживанию: ", 100)
compare_fields(w, compare_with, field, "stun_immune", "%+d%%", "Сопротивление оглушению/заморозке: ", 100)
compare_fields(w, compare_with, field, "fear_immune", "%+d%%", "Сопротивление страху: ", 100)
compare_fields(w, compare_with, field, "knockback_immune", "%+d%%", "Сопротивление отталкиванию: ", 100)
compare_fields(w, compare_with, field, "instakill_immune", "%+d%%", "Сопротивление мгновенной смерти: ", 100)
compare_fields(w, compare_with, field, "teleport_immune", "%+d%%", "Сопротивление телепорту: ", 100)
compare_fields(w, compare_with, field, "life_regen", "%+.2f", "Регенерация здоровья: ")
compare_fields(w, compare_with, field, "stamina_regen", "%+.2f", "Выносливость каждый ход: ")
compare_fields(w, compare_with, field, "mana_regen", "%+.2f", "Мана каждый ход: ")
compare_fields(w, compare_with, field, "hate_regen", "%+.2f", "Ненависть каждый ход: ")
compare_fields(w, compare_with, field, "psi_regen", "%+.2f", "Пси каждый ход: ")
compare_fields(w, compare_with, field, "equilibrium_regen", "%+.2f", "Равновесие каждый ход: ", nil, true, true)
compare_fields(w, compare_with, field, "vim_regen", "%+.2f", "Вим каждый ход: ")
compare_fields(w, compare_with, field, "positive_regen_ref_mod", "%+.2f", "Поз. Энергия каждый ход: ")
compare_fields(w, compare_with, field, "negative_regen_ref_mod", "%+.2f", "Нег. Энергия каждый ход: ")
compare_fields(w, compare_with, field, "stamina_regen_when_hit", "%+.2f", "Выносливость при попадании: ")
compare_fields(w, compare_with, field, "mana_regen_when_hit", "%+.2f", "Мана при попадании: ")
compare_fields(w, compare_with, field, "equilibrium_regen_when_hit", "%+.2f", "Равновесие при попадании: ")
compare_fields(w, compare_with, field, "psi_regen_when_hit", "%+.2f", "Пси при попадании: ")
compare_fields(w, compare_with, field, "hate_regen_when_hit", "%+.2f", "Ненависть при попадании: ")
compare_fields(w, compare_with, field, "vim_regen_when_hit", "%+.2f", "Вим при попадании: ")
compare_fields(w, compare_with, field, "vim_on_melee", "%+.2f", "Вим при попадании в ближнем бою: ")
compare_fields(w, compare_with, field, "mana_on_crit", "%+.2f", "Мана при критическом срабатывании заклинания: ")
compare_fields(w, compare_with, field, "vim_on_crit", "%+.2f", "Вим при критическом срабатывании заклинания: ")
compare_fields(w, compare_with, field, "spellsurge_on_crit", "%+d", "Сила заклинаний при критическом срабатывании заклинания (суммируется до 3 раз): ")
compare_fields(w, compare_with, field, "hate_on_crit", "%+.2f", "Ненависть при критическом срабатывании ментальной способности: ")
compare_fields(w, compare_with, field, "psi_on_crit", "%+.2f", "Пси при критическом срабатывании ментальной способности: ")
compare_fields(w, compare_with, field, "equilibrium_on_crit", "%+.2f", "Равновесие при критическом срабатывании ментальной способности: ")
compare_fields(w, compare_with, field, "hate_per_kill", "+%0.2f", "Ненависть за убийство: ")
compare_fields(w, compare_with, field, "psi_per_kill", "+%0.2f", "Пси за убийство: ")
compare_fields(w, compare_with, field, "vim_on_death", "%+.2f", "Вим за убийство: ")
compare_fields(w, compare_with, field, "die_at", "%+.2f life", "Смерть только при достижении: ", 1, true, true)
compare_fields(w, compare_with, field, "max_life", "%+.2f", "Максимум здоровья: ")
compare_fields(w, compare_with, field, "max_mana", "%+.2f", "Максимум маны: ")
compare_fields(w, compare_with, field, "max_soul", "%+.2f", "Максимум душ: ")
compare_fields(w, compare_with, field, "max_stamina", "%+.2f", "Максимум выносливости: ")
compare_fields(w, compare_with, field, "max_hate", "%+.2f", "Максимум ненависти: ")
compare_fields(w, compare_with, field, "max_psi", "%+.2f", "Максимум пси: ")
compare_fields(w, compare_with, field, "max_vim", "%+.2f", "Максимум вима: ")
compare_fields(w, compare_with, field, "max_positive", "%+.2f", "Максимум поз. энергии: ")
compare_fields(w, compare_with, field, "max_negative", "%+.2f", "Максимум нег. энергии: ")
compare_fields(w, compare_with, field, "max_air", "%+.2f", "Максимум запаса воздуха: ")
compare_fields(w, compare_with, field, "combat_spellcrit", "%+d%%", "Магический шанс крита: ")
compare_fields(w, compare_with, field, "spell_cooldown_reduction", "%d%%", "Уменьшает перезарядку заклинаний на: ", 100)
compare_fields(w, compare_with, field, "combat_mindcrit", "%+d%%", "Ментальный шанс крита: ")
compare_fields(w, compare_with, field, "lite", "%+d", "Радиус освещения: ")
compare_fields(w, compare_with, field, "Инфразрение", "%+d", "Дальность инфразрения: ")
compare_fields(w, compare_with, field, "heightened_senses", "%+d", "Радиус обострённых чувств: ")
compare_fields(w, compare_with, field, "sight", "%+d", "Радиус зрения: ")
compare_fields(w, compare_with, field, "see_stealth", "%+d", "Обнаружение скрытых: ")
compare_fields(w, compare_with, field, "see_invisible", "%+d", "Обнаружение невидимых: ")
compare_fields(w, compare_with, field, "invisible", "%+d", "Невидимость: ")
compare_fields(w, compare_with, field, "global_speed_add", "%+d%%", "Global speed: ", 100)
compare_fields(w, compare_with, field, "movement_speed", "%+d%%", "Скорость движения: ", 100)
compare_fields(w, compare_with, field, "combat_physspeed", "%+d%%", "Скорость атаки: ", 100)
compare_fields(w, compare_with, field, "combat_spellspeed", "%+d%%", "Скорость заклинаний: ", 100)
compare_fields(w, compare_with, field, "combat_mindspeed", "%+d%%", "Скорость мысли: ", 100)
compare_fields(w, compare_with, field, "healing_factor", "%+d%%", "Получаемое лечение: ", 100)
compare_fields(w, compare_with, field, "heal_on_nature_summon", "%+d", "Лечит дружественные цели поблизости, при использовании природного призыва: ")
compare_fields(w, compare_with, field, "life_leech_chance", "%+d%%", "Шанс похитить здоровье: ")
compare_fields(w, compare_with, field, "life_leech_value", "%+d%%", "Похищаемое здоровье: ")
compare_fields(w, compare_with, field, "resource_leech_chance", "%+d%%", "Шанс похитить ресурс: ")
compare_fields(w, compare_with, field, "resource_leech_value", "%+d", "Похищаемый ресурс: ")
compare_fields(w, compare_with, field, "damage_shield_penetrate", "%+d%%", "Игнорирование магического щита: ")
compare_fields(w, compare_with, field, "projectile_evasion", "%+d%%", "Отклонение снарядов: ")
compare_fields(w, compare_with, field, "evasion", "%+d%%", "Шанс избежать атак: ")
compare_fields(w, compare_with, field, "cancel_damage_chance", "%+d%%", "Шанс избежать любого урона: ")
compare_fields(w, compare_with, field, "defense_on_teleport", "%+d", "Защита после телепортации: ")
compare_fields(w, compare_with, field, "resist_all_on_teleport", "%+d%%", "Сопротивление всему после телепорта: ")
compare_fields(w, compare_with, field, "effect_reduction_on_teleport", "%+d%%", "Время действия новых эффектов после телепорта: ")
compare_fields(w, compare_with, field, "damage_resonance", "%+d%%", "Резонанс с уроном (при получении урона): ")
compare_fields(w, compare_with, field, "size_category", "%+d", "Размер: ")
compare_fields(w, compare_with, field, "nature_summon_max", "%+d", "Максимум призванных диких существ: ")
compare_fields(w, compare_with, field, "nature_summon_regen", "%+.2f", "Бонус к регенерации здоровья (призванным диким существам): ")
compare_fields(w, compare_with, field, "shield_dur", "%+d", "Время действия Магического Щита: ")
compare_fields(w, compare_with, field, "shield_factor", "%+d%%", "Мощь Магического Щита: ")
compare_fields(w, compare_with, field, "iceblock_pierce", "%+d%%", "Пробивание ледяного блока: ")
compare_fields(w, compare_with, field, "slow_projectiles", "%+d%%", "Замедление Снарядов: ")
compare_fields(w, compare_with, field, "paradox_reduce_anomalies", "%+d", "Дополнительно уменьшает парадокс: ")
compare_fields(w, compare_with, field, "damage_backfire", "%+d%%", "Ответный урон: ", nil, true)
compare_fields(w, compare_with, field, "resist_unseen", "%-d%%", "Уменьшает получаемый от невидимок урон: ")
desc:add("Вы превращаетесь в нежить.", true)
desc:add("Вы превращаетесь в демона.", true)
desc:add("Вы ослеплены.", true)
desc:add("Вы засыпаете.", true)
desc:add({"color", "YELLOW"}, "Бой вслепую: ", {"color", "LAST"}, "Одевший данную вещь может сражаться с невидимыми целями без штрафа к точности.", true)
desc:add({"color", "YELLOW"}, "Ясное Сновидение: ", {"color", "LAST"}, "Одевший данную вещь может двигаться во сне.", true)
desc:add("Одевшему не требуется дышать.", true)
desc:add({"color", "YELLOW"}, "Быстрая смена оружия:", {"color", "LAST"}, "Позволяет менять основное и дополнительное оружие без потери хода.", true)
desc:add({"color", "YELLOW"}, "Избегание нажимных ловушек: ", {"color", "LAST"}, "Одевший никогда не активирует нажимные ловушки.", true)
desc:add("Позволяет читать и разговаривать на древнем Шер'Тульском языке.", true)
desc:add({"color","YELLOW"}, "Когда используется для безоружных атак:", {"color", "LAST"}, true)
desc:add({"color","YELLOW"}, "Когда используется для атаки (в т.ч. с талантов):", {"color", "LAST"}, true)
desc:add(found and {"color","WHITE"} or {"color","GREEN"}, "Иммунитет к телепорту. Если вы телепортируетесь, то оно упадёт на землю.", {"color", "LAST"}, true)
desc:add({"color","RED"}, "Иммунитет к телепорту. Если вы телепортируетесь, то оно упадёт на землю.", {"color", "LAST"}, true)
desc:add({"color","YELLOW"}, "Когда одето/используется:", {"color", "LAST"}, true)
compare_fields(self, compare_with, "wielder", "skullcracker_mult", "%+d", "Модификатор череполома: ")
desc:add({"color","YELLOW"}, "При ношении с собой:", {"color", "LAST"}, true)
desc:add("Вставить в '", {"color","ORANGE"}, self.on_type, " / ", self.on_subtype, {"color", "LAST"}, "'", true)
desc:add("Вставить в '", {"color","ORANGE"}, self.on_type, {"color", "LAST"}, "'", true)
desc:add("Вставить в предмет, одетый на '", {"color","ORANGE"}, self.on_slot:lower():gsub('_', ' '), {"color", "LAST"}, "'", true)
desc:add({"color","YELLOW"}, "Когда вставлен в предмет:", {"color", "LAST"}, true)
desc:add({"color", "ROYAL_BLUE"})
desc:add({"color", "LAST"}, true)
desc:add({"color", "ORCHID"})
desc:add("Специальный эффект при блоке: " .. d)
desc:add({"color", "LAST"}, true)
desc:add({"color","YELLOW"}, "Когда используется для насыщения предмета:", {"color", "LAST"}, true)
desc:add({"color","YELLOW"}, "Когда используется в качестве алхимической бомбы:", {"color", "LAST"}, true)
desc:add(("Урон бомб +%d%%"):format(a.power), true)
desc:add(("Радиус броска бомбы +%d"):format(a.range), true)
desc:add(("Восполнение маны %d"):format(a.mana), true)
desc:add(("%d%% шанс ошеломить на %d ходов"):format(a.daze.chance, a.daze.dur), true)
desc:add(("%d%% шанс оглушить на %d ходов"):format(a.stun.chance, a.stun.dur), true)
desc:add(("Дополнительные %d %s урона"):format(a.splash.dam, DamageType:get(DamageType[a.splash.type]).name), true)
desc:add(("Восстановление здоровья, в размере %d%% от максимального здоровья"):format(a.leech), true)
desc:add({"color","YELLOW",}, "Скрытый тип урона: ", {"color","LAST",},
latent.text_color or "#WHITE#", latent.name:capitalize(), {"color", "LAST",}, true)
desc:add({"color","YELLOW"}, "Когда начерчена на ваше тело:", {"color", "LAST"}, true)
desc:add({"color","RED"}, ("Автоиспользование таланта при попадании(заклинанием): %s (%d%% шанс, %d уровня)."):format(self:getTalentFromId(tid).name, data.chance, data.level), {"color","LAST"}, true)
desc:add(talents[tid][3] and {"color","GREEN"} or {"color","WHITE"}, ("Автоиспользование таланта при попадании(заклинанием): %s (%d%% шанс, %d уровня)."):format(self:getTalentFromId(tid).name, talents[tid][1], talents[tid][2]), {"color","LAST"}, true)
desc:add({"color","RED"}, ("Автоиспользование таланта при попадании(природной способностью): %s (%d%% шанс, %d уровня)."):format(self:getTalentFromId(tid).name, data.chance, data.level), {"color","LAST"}, true)
desc:add(talents[tid][3] and {"color","GREEN"} or {"color","WHITE"}, ("Автоиспользование таланта при попадании(природной способностью): %s (%d%% шанс, %d уровня)."):format(self:getTalentFromId(tid).name, talents[tid][1], talents[tid][2]), {"color","LAST"}, true)
desc:add({"color","RED"}, ("Автоиспользование таланта при попадании(природной способностью): %s (%d%% шанс, %d уровня)."):format(self:getTalentFromId(tid).name, data.chance, data.level), {"color","LAST"}, true)
desc:add(talents[tid][3] and {"color","GREEN"} or {"color","WHITE"}, ("Автоиспользование таланта при попадании(ментальной способностью): %s (%d%% шанс, %d уровня)."):format(self:getTalentFromId(tid).name, talents[tid][1], talents[tid][2]), {"color","LAST"}, true)
desc:add("Использование данного предмета мгновенно.", true)
desc:add("Использование данного предмета мгновенно.", true)
desc:add({"color",0xf5,0x3c,0xbe}, use_actor.tempeffect_def[self.curse].desc, {"color","LAST"}, true)
ret = tstring{{"color","YELLOW"}, ("Может быть использован для %s, с %d зарядов из %d."):format(desc, math.floor(self.power / usepower(self.use_power.power)), math.floor(self.max_power / usepower(self.use_power.power))), {"color","LAST"}}
ret = tstring{{"color","YELLOW"}, ("Может быть использован для %s, переводя %s на перезарядку, в течении %d ходов."):format(desc:format(self:getCharmPower(use_actor)), t_name, usepower(self.use_power.power)), {"color","LAST"}}
ret = tstring{{"color","YELLOW"}, ("Может быть использован для %s, стоимость использования %d энергии из %d/%d."):format(desc, usepower(self.use_power.power), self.power, self.max_power), {"color","LAST"}}
ret = tstring{{"color","YELLOW"}, ("Может быть использован для %s."):format(util.getval(self.use_simple.name, self, use_actor)), {"color","LAST"}}
ret = tstring{{"color","YELLOW"}, "Может быть использован для активации таланта ", t.name,", переводя все амулеты на ", tostring(math.floor(usepower(self.use_talent.power))) ," перезарядку :", {"color","LAST"}, true}
ret = tstring{{"color","YELLOW"}, "Может быть использовано для применения таланта ", t.name," (costing ", tostring(math.floor(usepower(self.use_talent.power))), " power out of ", tostring(math.floor(self.power)), "/", tostring(math.floor(self.max_power)), ") :", {"color","LAST"}, true}
ret:add(true, "Когда используется:", true)
ret:add(tostring(d[1]), "% шанс ", d[2](self, use_actor), ".", true)
desc:add({"font","bold"},{"color","LIGHT_BLUE"},"Недавно подобран",{"font","normal"},{"color","LAST"},true)
desc:add({"font","bold"},{"color","YELLOW"},"Эта вещь будет автоматически трансмогрифицирована, когда вы покинете локацию.",{"font","normal"},{"color","LAST"},true)
desc:add({"color", "WHITE"}, true)
desc:add("Напитано ", {"color", "VIOLET"}, "тайными силами", {"color", "LAST"}, true)
desc:add("Наполнено ", {"color", "OLIVE_DRAB"}, " силой природы", {"color", "LAST"}, true)
desc:add("Наполнено ", {"color", "ORCHID"}, "антимагическими силами", {"color", "LAST"}, true)
desc:add("Создано ", {"color", "LIGHT_UMBER"}, "мастером", {"color", "LAST"}, true)
desc:add("Наполнено ", {"color", "YELLOW"}, "психической энергией", {"color", "LAST"}, true)
desc:add("Подпитывается ", {"color", "CRIMSON"}, "неизвестными силами", {"color", "LAST"}, true)
desc:add({"color",0x67,0xAD,0x00}, ("%0.2f Нагрузка."):format(self.encumber), {"color", "LAST"})
desc:add(true, {"color",0x67,0xAD,0x00}, ("%0.2f Множитель Эго."):format(1 + self.ego_bonus_mult), {"color", "LAST"})
desc:add(true, true, {"color", "ANTIQUE_WHITE"})
desc:add({"color", "WHITE"})
desc:add(true, {"color", "OLIVE_DRAB"}, "Внешний вид объекта изменён на ")
desc:add(".", {"color","LAST"}, true)
desc:add(true, {"font","italic"}, {"color","GOLD"}, "Нажмите <control> для сравнения", {"color","LAST"}, {"font","normal"})
return "Пропуск"
end
file/game/modules/tome.team/mod/class/Party.lua.txt
print("[PARTY] error trying to add existing actor: ", actor.uid, actor.name)
print("[PARTY] New member, add after", self.name, game.party.m_list[1].name)
print("[PARTY] error trying to remove non-existing actor: ", actor.uid, actor.name)
print("[PARTY] error trying to set player, same")
print("[PARTY] error trying to set player but current player is modal")
print("[PARTY] error trying to set player, not a member of party: ", actor.uid, actor.name)
print("[PARTY] error trying to set player, not controlable: ", actor.uid, actor.name)
game.logPlayer(game.player, "Невозможно переключить управление на это существо.")
print("[PARTY] error trying to set player, no entity or dead")
print("[PARTY] error trying to set player, forbade")
game.player:runStop("Смена контроля")
game.player:restStop("Смена контроля")
game.logPlayer(actor, "#MOCCASIN#Контроль над персонажем изменён на %s.", actor.name)
print("[PARTY] error trying to order, not a member of party: ", actor.uid, actor.name)
print("[PARTY] error trying to order, not controlable: ", actor.uid, actor.name)
game.logPlayer(game.player, "Это существо не слушает ваших приказов.")
print("[PARTY] error trying to order, can order forbade")
print("[PARTY] error trying to order, unknown order: ", actor.uid, actor.name)
GetQuantity.new("Выбрать радиус активности: "..actor.name, "Выбрать максимальную дистанцию, на которую существо может отдалиться от вас:", actor.ai_state.tactic_leash, actor.ai_state.tactic_leash_max or 100, function(qty)
actor.ai_state.tactic_leash = util.bound(qty, 1, actor.ai_state.tactic_leash_max or 100)
game.logPlayer(game.player, "%s максимальный радиус активности изменён на %d.", actor.name:capitalize(), actor.ai_state.tactic_leash)
end)
game.logPlayer(game.player, "%s будет находиться рядом с %s.", actor.name:capitalize(), anchor.name)
logCombat(act, "%s целится в #Target#.", actor.name:capitalize())
doEmote("Нет, мы должны спешить!", 40)
doEmote("Хорошо, но не надолго.", 40)
dist = "очень близко"
dist = "близко"
dist = "ещё далеко"
doEmote(("Портал %s, к %s."):format(dist, dir or "???"), 45)
print("[PARTY] control fail, same", actor, game.player)
file/game/modules/tome.team/mod/class/PartyMember.lua.txt
str:add(
true,
{"color", "TEAL"},
("Поведение: %s"):format(self.ai_tactic.type or "default"), true,
("Радиус активности: %d"):format(self.ai_state.tactic_leash),
{"color", "WHITE"}
)
file/game/modules/tome.team/mod/class/Player.lua.txt
print("Random escort on", z[1], z[2])
print("Entering tier1 zone for escort", escort_zone_name, escort_zone_offset, level.level - escort_zone_offset)
print("[onEnterLevel] Cancelling player created effect ", tostring(eff.name))
print("[onEnterLevel] Terminating player created entity ", uid, ent.name, ent:getEntityKind())
game.logSeen(self, "Предмет на: %s", obj:getName{do_color=true})
game.logPlayer(self, "#YELLOW_GREEN#Тут "..g.name:a_an().." (нажмите '<', '>' или правый клик для перехода).")
game.flyers:add(sx, sy, 60, 0, -1.5, ("Переход на (%s)!"):format(g.name), colors.simple(colors.YELLOW_GREEN), true)
print("Vault id", vault_id, "opens:", v.x, v.y, v.w, v.h)
game.logPlayer(self, "#FF0000#Вы несёте слишком много. Вы перегружены!")
game.logPlayer(self, "#FF0000#Выбросите что-то из своих вещей.")
game.logPlayer(self, "#PINK#Ваш призванный %s исчезает.", self.name)
str:add(true, "UID: "..self.uid, true, self.image)
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, 2, "НИЗКОЕ ЗДОРОВЬЕ!", {255,0,0}, true)
game.flyers:add(x, y, 30, -0.3, -3.5, ("%s доступен"):format(t.name:capitalize()), {0,255,00})
game.log("#00ff00#%sТалант %s готов к использованию.", (t.display_entity and t.display_entity:getDisplayString() or ""), t.name)
game.logPlayer(self, "Автоматическое использование таланта %s #DARK_RED#пропущено#LAST#: слишком низкое время перезарядки (%d).", self:getTalentDisplayName(t), cd)
return false, "окно чата отображается" end
return false, ("враждебная цель появляется на %s (%s%s)"):format(dir or "???", spotted[1].name, game.level.map:isOnScreen(spotted[1].x, spotted[1].y) and "" or " - вне экрана")
end
return false, "невозможно дышать!" end
return false, "потеря здоровья!" end
return false, "все ресурсы и здоровье восполнены"
end
return false, "окно чата отображается" end
return false, ("враждебная цель появляется на %s (%s%s)"):format(dir or "???", spotted[1].name, game.level.map:isOnScreen(spotted[1].x, spotted[1].y) and "" or " - вне экрана")
end
return false, "использование таланта прервано" end
return false, "невозможно дышать!" end
noticed = "объект увиден"
noticed = "что-то интересное"
noticed = "что-то интересное"
noticed = "в "
noticed = "интересное место"
noticed = "Лавка открыта"
noticed = "интересный персонаж"
noticed = "Лавка открыта"
simplePopup("Вещь не найдена", "У вас отсутствует "..name..".")
getEncumberTitleUpdator("Поднять")
game:delayedLogMessage(self, nil, "поднятие во сне", "Вы не можете поднимать вещи с земли во время сна!")
getEncumberTitleUpdator("Выкинуть предмет")
getEncumberTitleUpdator("Одеть/взять в руки предмет")
getEncumberTitleUpdator("Снять предмет")
game.logPlayer(self, "Вы не можете использовать предметы на карте мира.")
game.logPlayer(self, "Ваша антимагия прервала %s.", o:getName{no_count=true, do_color=true})
game.log("У вас больше нет %s.", o:getName{no_count=true, do_color=true})
game.log("Вы имеете %s.", o:getName{do_color=true})
getEncumberTitleUpdator("Использовать")
logCombat(spotted[1].actor, "Вы не можете использовать сферу, пока на вас смотрят (#Target# на %s%s)",dir, game.level.map:isOnScreen(spotted[1].x, spotted[1].y) and "" or " - вне экрана")
game.logPlayer(self, "Похоже, что ничего не происходит.")
game.logPlayer(self, "Вы используете %s на пьедестале. Издали донёсся глухой звук.", o:getName{do_colour=true})
game.logPlayer(self, "#LIGHT_RED#%s на мгновение заметил вас!", act.name:capitalize())
game.logPlayer(self, "#LIGHT_RED#Что-то на мгновение заметило вас!")
game.logPlayer(game.player, "#LIGHT_GREEN#Принято задание '%s'! #WHITE#(Нажмите 'о' для просмотра журнала заданий)", quest.name)
game.bignews:saySimple(60, "#LIGHT_GREEN#Принято задание '%s'!", quest.name)
game.logPlayer(game.player, "#LIGHT_GREEN#статус задания '%s' обновлён! #WHITE#(Нажмите 'о' для просмотра журнала заданий)", quest.name)
game.bignews:saySimple(60, "#LIGHT_GREEN#Квест '%s' обновлен!", quest.name)
game.logPlayer(game.player, "#LIGHT_GREEN#Задание '%s' выполнено! #WHITE#(Нажмите 'о' для просмотра журнала заданий)", quest.name)
game.bignews:saySimple(60, "#LIGHT_GREEN#Квест '%s' завершён!", quest.name)
game.logPlayer(game.player, "#LIGHT_GREEN#Задание '%s' выполнено! #WHITE#(Нажмите 'о' для просмотра журнала заданий)", quest.name)
game.bignews:saySimple(60, "#LIGHT_GREEN#Задание '%s' выполнено!", quest.name)
game.logPlayer(game.player, "#LIGHT_RED#Задание '%s' провалено! #WHITE#(Нажмите 'о' для просмотра журнала заданий)", quest.name)
game.bignews:saySimple(60, "#LIGHT_RED#Квест '%s' провален!", quest.name)
file/game/modules/tome.team/mod/class/Projectile.lua.txt
tstr:add(true, "Источник: ", color, self.src.name, {"color", "LAST"})
tstr:add(true, ("Скорость: %d%% %s"):format(self.energy.mod*100, game.level.map:compassDirection(self.project.def.x - self.x, self.project.def.y - self.y) or ""))
tstr:add(true, "Начальный шанс воздействия: ", tostring(x), "%")
tstr:add(true, "Шанс воздействия на дружественные цели: ", tostring(x), "%")
tstr:add(true, "Идентификатор: ", tostring(self.uid), true, "Координаты: ", tostring(x), "x", tostring(y))
tstr:add((" наведение: %s(%s, %s)"):format(self.homing.target.name, self.homing.target.x,self.homing.target.y))
tstr:add(" расстояние: ", tostring(self.project.def.typ.range or "nil"), " ==> (", tostring(self.project.def.x), ",", tostring(self.project.def.y), ")")
file/game/modules/tome.team/mod/class/Store.lua.txt
print("[STORE] not restocking yet [stores_restock]", game.state.stores_restock, s.restock_every, self.last_filled)
game.log("#CRIMSON#Ваше путешествие во времени не влияет на заранее определённые события.")
simplePopup("Нужно больше золота!", ("Не хватает %0.2f золота!"):format(price))
yesnoPopup("Купить", ("Купить %d %s за %0.2f золота%s?"):format(nb, o:getName{do_color=true, no_count=true}, price, avg), function(ok) if ok then
self:onBuy(who, o, item, nb, true)
-- Learn lore ?
if who.player and o.lore then
self:removeObject(self:getInven("INVEN"), item)
game.party:learnLore(o.lore)
else
self:transfer(self, who, item, nb)
o, item = who:findInInventory(who:getInven("INVEN"), o:getName()) or o
end
if o then
if who.money >= price then
who:incMoney(- price)
game.log("Куплено: %s %s за %0.2f золота.", nb>1 and nb or "", o:getName{do_color=true, no_count = true}, price)
end
self:onBuy(who, o, item, nb, false)
end
if store_dialog then store_dialog:updateStore() end
end end, "Купить", "Отмена")
yesnoPopup("Продать", ("Продать %d %s за %0.2f золота%s?"):format(nb, o:getName{do_color=true, no_count=true}, price, avg), function(ok) if ok then
self:onSell(who, o, item, nb, true)
self:transfer(who, self, item, nb)
local o, item = self:findInInventory(self:getInven("INVEN"), o:getName()) or o
if o then
self:onSell(who, o, item, nb, false)
who:incMoney(price)
game.log("Вы продали: %s %s за %0.2f золота.", nb>1 and nb or "", o:getName{do_color=true, no_count = true}, price)
end
if store_dialog then store_dialog:updateStore() end
end end, "Продать", "Отмена")
file/game/modules/tome.team/mod/class/Trap.lua.txt
res:add(("#LIGHT_GREEN#%d ходов #WHITE#"):format(self.temporary))
res:add(true, {"font","italic"}, "<Лавка>", {"font","normal"})
res:add(true, "Фракция: ")
res:add(("%s (%s, %d)"):format(Faction.factions[self.store_faction].name, factstate, factlevel), {"color", "WHITE"}, true)
res:add({"color", "LIGHT_GREEN"}, "(положительный)", {"color", "WHITE"})
res:add({"color", "ORANGE"}, "(положительный для врагов)", {"color", "WHITE"})
res:add({"color", "LIGHT_GREEN"}, "(безопасно)", {"color", "WHITE"})
res:add(true, {"color", "GREEN"}, "pressure_trigger", {"color", "WHITE"})
res:add(true, ("#YELLOW#Обнаружение: %d#WHITE#"):format(self.detect_power))
res:add(("#YELLOW# Обезвреживание: %d#WHITE#"):format(self.disarm_power))
res:add(true, "Идентификатор: "..self.uid, true)
return false, "нельзя отдыхать" end
msg = "Вы попали в ловушку!"
msg = "Вы успешно обезвредили ловушку."
msg = "Ваше действие прервано."
msg = "Ваше знание ловушек недостаточное, для понимания этой ловушки."
game.logPlayer(who, "#LIGHT_BLUE#%s: %s#LAST#", success and "удалось" or "провалено", msg)
game.log("#CADET_BLUE#Обезвреживание ловушки %s, (%s).", avoid, self:getName())
game.logSeen(who, "#CADET_BLUE#%s %ss %s.", who.name:capitalize(), avoid, known_player and ("ловушка (%s)"):format(self:getName()) or "что-то непонятное на полу")
file/game/modules/tome.team/mod/class/uiset/Classic.lua.txt
game:tooltipDisplayAtMap(game.w, game.h, "Отображение талантов (#{bold}##GOLD#"..key.."#LAST##{normal}#)\nПереключите для отображения существ")
game:tooltipDisplayAtMap(game.w, game.h, "Отображение существ (#{bold}##GOLD#"..key.."#LAST##{normal}#)\nПереключите для отображения талантов#")
game:tooltipDisplayAtMap(game.w, game.h, "#{bold}##GOLD#И#LAST##{normal}#нвентарь")
game:tooltipDisplayAtMap(game.w, game.h, "Инвентарь (#{bold}##GOLD#"..key.."#LAST##{normal}#)")
game:tooltipDisplayAtMap(game.w, game.h, "#{bold}##GOLD#И#LAST##{normal}#нформация о персонаже")
game:tooltipDisplayAtMap(game.w, game.h, "Информация о персонаже(#{bold}##GOLD#"..key.."#LAST##{normal}#)")
game:tooltipDisplayAtMap(game.w, game.h, "Главное меню (#{bold}##GOLD#"..key.."#LAST##{normal}#)")
game:tooltipDisplayAtMap(game.w, game.h, "Показать чат/лог (#{bold}##GOLD#"..key.."#LAST##{normal}#)")
game:tooltipDisplayAtMap(game.w, game.h, "Движение: #LIGHT_GREEN#По умолчанию#LAST# (#{bold}##GOLD#"..key.."#LAST##{normal}#)\nПереключите для перехода в пассивный режим.")
game:tooltipDisplayAtMap(game.w, game.h, "Движение: #LIGHT_RED#Пассивно#LAST# (#{bold}##GOLD#"..key.."#LAST##{normal}#)\nПереключите, для перехода в режим по умолчанию.")
text:add(true, "---", true, {"font","italic"}, {"color","GOLD"}, "Нажмите левой кнопкой мыши чтоб использовать", true, "Правой кнопкой для настройки", true, "Нажмите 'ь' для подтверждения изменений ", {"color","LAST"}, {"font","normal"})
yesnoPopup("Убрать "..hk[2], "Убрать объект с назначенных горячих клавиш?", function(ret) if ret then
for i = 1, 12 * game.player.nb_hotkey_pages do
if game.player.hotkey[i] and game.player.hotkey[i][1] == "inventory" and game.player.hotkey[i][2] == hk[2] then game.player.hotkey[i] = nil end
end
end end)
str:add({"color",unpack(colors.simple(color))}, text, {"color", "LAST"}, true)
str:add({"color","ANTIQUE_WHITE"}, "Проведено в игре: ", {"color", "LAST"}, user.current_char, true)
str:add({"color","ANTIQUE_WHITE"}, "Игра: ", {"color", "LAST"}, user.module, "(", user.valid, ")",true)
file/game/modules/tome.team/mod/class/uiset/ClassicPlayerDisplay.lua.txt
self:mouseTooltip("#GOLD##{bold}#"..a.name.."\n#WHITE##{normal}#Здоровье: "..math.floor(100 * a.life / a.max_life).."%\nУровень: "..a.level.."\n"..def.title, 40, 40, x, y, function()
if def.control == "full" then
game.party:select(a)
end
end)
desc = ("#{bold}##GOLD#%s\n(%s: %s)#WHITE##{normal}#\n")
desc = ("#{bold}##GOLD#%s\n(%s: %s)#WHITE##{normal}#\n")
self:makeTexture("УРОВЕНЬ ПОВЫШЕН!", self.w - fw, h, colors.VIOLET.r, colors.VIOLET.g, colors.VIOLET.b, fw)
self:mouseTooltip(("#GOLD##{bold}#%s\n#WHITE##{normal}#Не использованные очки характеристик: %d\nНе использованные очки классовых талантов: %d\nНе использованные очки общих талантов: %d\nНе использованные очки категорий: %d"):format(player.name, player.unused_stats, player.unused_talents, player.unused_generics, player.unused_talents_types), self.w, self.font_h, 0, h, function()
player:playerLevelup()
end)
self:makeTexture(("%s#{normal}#"):format(player.name), 0, h, colors.GOLD.r, colors.GOLD.g, colors.GOLD.b, self.w)
self:mouseTooltip(self.TOOLTIP_LEVEL, self:makeTexture(("Уровень / Опыт: #00ff00#%s / %2d%%"):format(player.level, 100 * cur_exp / max_exp), x, h, 255, 255, 255))
self:mouseTooltip(self.TOOLTIP_GOLD, self:makeTexture(("Золото: #00ff00#%0.2f"):format(player.money or 0), x, h, 255, 255, 255))
text = ("%s")
self:mouseTooltip(self[attack_stats[i][2]], self:makeTexture((attack_stat_color.."%s"):format(attack_stats[i][3]), x, h, 255, 255, 255))
self:mouseTooltip(self[attack_stats[i][2]], self:makeTexture(("%s"):format(text), x+75, h, 255, 255, 255))
text = ("%s")
self:mouseTooltip(self[attack_stats[i+4][2]], self:makeTexture((defense_stat_color.."%s"):format(attack_stats[i+4][3]), x+110, h, 255, 255, 255))
self:mouseTooltip(self[attack_stats[i+4][2]], self:makeTexture(("%s"):format(text), x+180, h, 255, 255, 255))
self:makeTexture(("Ходов осталось: %d"):format(game.level.turn_counter / 10), x, h, 255, 0, 0)
self:mouseTooltip(self.TOOLTIP_AIR, self:makeTexture(("количество воздуха: %d/%d"):format(player:getAir(), player:getMaxAir()), x, h, 255, 0, 0))
self:mouseTooltip(self.TOOLTIP_ENCUMBERED, self:makeTexture(("Перегружен! (%d/%d)"):format(player:getEncumbrance(), player:getMaxEncumbrance()), x, h, 255, 0, 0))
self:mouseTooltip(self.TOOLTIP_STRDEXCON, self:makeTexture(("Сила/Лов/Тел: #00ff00#%3d/%3d/%3d"):format(player:getStr(), player:getDex(), player:getCon()), x, h, 255, 255, 255))
self:mouseTooltip(self.TOOLTIP_MAGWILCUN, self:makeTexture(("Маг/Воля/Хит: #00ff00#%3d/%3d/%3d"):format(player:getMag(), player:getWil(), player:getCun()), x, h, 255, 255, 255))
self:mouseTooltip(self.TOOLTIP_LIFE, self:makeTextureBar("#c00000#Здоровье :", nil, player.life, player.max_life, player.life_regen * util.bound((player.healing_factor or 1), 0, 2.5), x, h, 255, 255, 255, colors.DARK_RED, colors.VERY_DARK_RED))
self:mouseTooltip(self.TOOLTIP_DAMAGE_SHIELD, self:makeTextureBar("#WHITE#Маг. щит:", nil, shield, max_shield, nil, x, h, 255, 255, 255, {r=colors.GREY.r / 3, g=colors.GREY.g / 3, b=colors.GREY.b / 3}, {r=colors.GREY.r / 6, g=colors.GREY.g / 6, b=colors.GREY.b / 6}))
description")
end
-- get resource color
local res_color = res_def.color or "
self:mouseTooltip(tooltip, self:makeTextureBar((res_def.color or "#WHITE#")..("%-8.8s:"):format(res_def.name), status_text, player[res_def.getFunction](player), player[res_def.getMaxFunction](player) or 100, not status_text and player[res_def.regen_prop] or 0, x, h,
255, 255, 255,
{r=r/2, g=g/2, b=b/2},
{r=r/5, g=g/5, b=b/5}
))
self:mouseTooltip(self.TOOLTIP_FEEDBACK, self:makeTextureBar("#7fffd4#Резонанс:", nil, player:getFeedback(), player:getMaxFeedback(), player:getFeedbackDecay(), x, h, 255, 255, 255,
{r=colors.YELLOW.r / 2, g=colors.YELLOW.g / 2, b=colors.YELLOW.b / 2},
{r=colors.YELLOW.r / 5, g=colors.YELLOW.g / 5, b=colors.YELLOW.b / 5}
))
self:mouseTooltip(self.TOOLTIP_UNNATURAL_BODY, self:makeTextureBar("#c00000#Пр.тело :", ("%0.1f (%0.1f/ход)"):format(player.unnatural_body_heal, math.min(regen, player.unnatural_body_heal)), regen, player.unnatural_body_heal, nil, x, h, 255, 255, 255, colors.DARK_RED, colors.VERY_DARK_RED))
self:mouseTooltip(self.TOOLTIP_FORTRESS_ENERGY, self:makeTextureBar("#LIGHT_GREEN#Крепость:", "%d", q.shertul_energy, 1000, 0, x, h, 255, 255, 255,
{r=colors.LIGHT_GREEN.r / 2, g=colors.LIGHT_GREEN.g / 2, b=colors.LIGHT_GREEN.b / 2},
{r=colors.LIGHT_GREEN.r / 5, g=colors.LIGHT_GREEN.g / 5, b=colors.LIGHT_GREEN.b / 5}
))
self:mouseTooltip(self.TOOLTIP_COMBAT_AMMO, self:makeTexture(("#ANTIQUE_WHITE#Боеприпасы : #ffffff#%d"):format(ammo:getNumber()), 0, h, 255, 255, 255))
self:mouseTooltip(self.TOOLTIP_COMBAT_AMMO, self:makeTexture(("#ANTIQUE_WHITE#Боеприпасы : #ffffff#%d/%d"):format(ammo.combat.shots_left, ammo.combat.capacity), 0, h, 255, 255, 255))
desc = "#GOLD##{bold}#"
self:makeTexture(("Счёт(ЛУЧШИЙ): %d"):format(arena.score), x, h, 255, 255, 100)
self:makeTexture(("Очки: %d"):format(arena.score), x, h, 255, 255, 255)
self:makeTexture(("Волна(лучший результат) %d"):format(arena.currentWave), x, h, 255, 255, 100)
self:makeTexture(("Волна %d"):format(arena.currentWave), x, h, 100, 100, 255)
self:makeTexture(("Волна %d"):format(arena.currentWave), x, h, 255, 255, 255)
self:makeTexture((" [Мини босс]"), x + (self.font_w * 13), h, 255, 255, 100)
self:makeTexture((" [Босс]"), x + (self.font_w * 13), h, 255, 0, 255)
self:makeTexture((" [Финал]"), x + (self.font_w * 13), h, 255, 10, 15)
self:makeTexture(("Бонус: %d (x%.1f)"):format(arena.bonus, arena.bonusMultiplier), x, h, 255, 50, 50)
self:makeTexture(("Бонус: %d (x%.1f)"):format(arena.bonus, arena.bonusMultiplier), x, h, 255, 255, 255)
self:makeTexture(" Против", x, h, 255, 0, 255)
self:makeTexture("Ранг: "..arena.printRank(arena.rank, arena.ranks), x, h, 255, 255, 255)
file/game/modules/tome.team/mod/class/uiset/Minimalist.lua.txt
print("[Minimalist] resource ui:", rname, "gfx file", sfile, "found")
print("[Minimalist] resource base:", rname, "gfx file", bfile, "found")
print("[Minimalist] Warning: resource", rname, "gfx file", file, "**NOT FOUND** in directories", sbase, "or", bbase, "(using default image)")
description")
end
self.res_gfx = res_gfx
end
function _M:init()
UISet.init(self)
self.mhandle = {}
self.res = {}
self.party = {}
self.tbuff = {}
self.pbuff = {}
self.locked = true
self.mhandle_pos = {
player = {x=296, y=73, name="
self.mhandle_pos = {
player = {x=296, y=73, name="Информация о игроке"},
resources = {x=fshat[6] / 2 - move_handle[6], y=0, name="Ресурсы"},
minimap = {x=208, y=176, name="Миникарта"},
buffs = {x=40 - move_handle[6], y=0, name="Текущие эффекты"},
party = {x=portrait[6] - move_handle[6], y=0, name="Члены группы"},
gamelog = {x=function(self) return self.logdisplay.w - move_handle[6] end, y=function(self) return self.logdisplay.h - move_handle[6] end, name="Игровой лог"},
chatlog = {x=function(self) return profile.chat.w - move_handle[6] end, y=function(self) return profile.chat.h - move_handle[6] end, name="Онлайн чат"},
hotkeys = {x=function(self) return self.places.hotkeys.w - move_handle[6] end, y=function(self) return self.places.hotkeys.h - move_handle[6] end, name="Горячие клавиши"},
mainicons = {x=0, y=0, name="Игровая активность"},
}
game.bignews:say(60, "#CRIMSON#Интерфейс заблокирован, можно перемещаться по карте мышкой")
game.bignews:say(60, "#CRIMSON#Интерфейс разблокирован, перемещение с помощью мыши невозможно")
yesnoPopup("Reset UI", "Сбросить настройки интерфейса?", function(ret) if ret then
self:resetPlaces() self:saveSettings()
end end)
print("Toggling UI", self.no_ui)
print("minimalist:handleResolutionChange: adjusting UI")
print("minimalist:handleResolutionChange: toggling UI to refresh")
print("minimalist:handleResolutionChange: saved settings")
game:tooltipDisplayAtMap(game.w, game.h, self.mhandle_pos[what].name.."\n---\nЛевой кнопкой мыши вы можете перемещать элементы интерфейса\nПравой кнопкой можно менять их размер\nНажатие на колёсико мышки вернёт всё к изначальному размеру"..(add_text or ""))
list[#list+1] = {name="Резонанс", id="feedback"}
list[#list+1] = {name="Энергия Крепости", id="fortress"}
listPopup("Отобразить/скрыть ресурсы", "Переключить:", list, 300, util.bound((8+#list)*(self.init_font_h+1), 14*(self.init_font_h+1), game.h*.75), function(sel)
if not sel or not sel.id then return end
game.player["_hide_resource_"..sel.id] = not game.player["_hide_resource_"..sel.id]
end)
core.display.drawStringBlendedNewSurface(font_sha, ("%d/%d"):format(player.air, player.max_air), 255, 255, 255)
core.display.drawStringBlendedNewSurface(font_sha, ("%d/%d"):format(shield, max_shield), 255, 215, 0)
core.display.drawStringBlendedNewSurface(font_sha, ("%d/%d"):format(player:getFeedback(), player:getMaxFeedback()), 255, 255, 255)
core.display.drawStringBlendedNewSurface(font_sha, ("%d"):format(q.shertul_energy), 255, 255, 255)
core.display.drawStringBlendedNewSurface(font_sha, max > 0 and ("%d/%d"):format(amt, max) or ("%d"):format(amt), 255, 255, 255)
core.display.drawStringBlendedNewSurface(font_sha, ("%d"):format(c/10), 255, 255, 255)
core.display.drawStringBlendedNewSurface(font_sha, ("Сохранение... %d%%"):format(p * 100), 255, 255, 255)
desc = ("#{bold}##GOLD#%s\n(%s: %s)#WHITE##{normal}#\n")
desc = ("#{bold}##GOLD#%s\n(%s: %s)#WHITE##{normal}#\n")
desc.."\n---\nПравый клик для отмены."
yesnoPopup(name, "Вы уверены, что хотите отменить "..name.."?", function(ret)
if ret then
player:removeEffect(eff_id)
end
end)
desc = "#GOLD##{bold}#"
text = "#GOLD##{bold}#"
core.display.drawStringBlendedNewSurface(sfont_sha, ("%d%%"):format(p * 100), 255, 255, 255)
core.display.drawStringBlendedNewSurface(font_sha, ("%d"):format(player.money), 255, 215, 0)
core.display.drawStringBlendedNewSurface(font_sha, "Уровень"..player.level, 255, 255, 255)
game:tooltipDisplayAtMap(game.w, game.h, "Переключите для перехода в режим перемещения.\nПо умолчанию: атака враждебной цели, при попытке движения на неё.\nПассивный: При попытке движения на врага, персонаж не атакует (используйте ctrl и выберите направление или совершите правый клик, для атаки вручную)")
game:tooltipDisplayAtMap(game.w, game.h, "Показать информацию о персонаже")
game:tooltipDisplayAtMap(game.w, game.h, "Нажмите, для распределения характеристик и талантов!")
game:tooltipDisplayAtMap(game.w, game.h, "Левый клик мыши для движения\nПравый для осмотра\nСредняя кнопка мыши для отображения полной карты")
text:add(true, "---", true, {"font","italic"}, {"color","GOLD"}, "Левой кнопкой мыши применить", true, "Правой кнопкой мыши перейти в настройки", true, "Нажмите 'ь' для подтверждения изменений", {"color","LAST"}, {"font","normal"})
yesnoPopup("Убрать "..hk[2], "Убрать объект с панели умений?", function(ret) if ret then
for i = 1, 12 * game.player.nb_hotkey_pages do
if game.player.hotkey[i] and game.player.hotkey[i][1] == "инвентарь" and game.player.hotkey[i][2] == hk[2] then game.player.hotkey[i] = nil end
end
end end)
game:tooltipDisplayAtMap(game.w, game.h, "Левый клик для открытия инвентаря")
game:tooltipDisplayAtMap(game.w, game.h, "Левый клик для просмотра дерева талантов")
game:tooltipDisplayAtMap(game.w, game.h, "Левый клик для открытия чата/лога.")
game:tooltipDisplayAtMap(game.w, game.h, "Левый клик для открытия журнала заданий.\nПравый клик для отображения известных записей.")
).new("Записи о историях Мадж'Эяла"
game:tooltipDisplayAtMap(game.w, game.h, "Левый клик для отображения главного меню")
game:tooltipDisplayAtMap(game.w, game.h, self.locked and "Разблокировать все элементы интерфейса, чтоб перемещать и менять их размер." or "Заблокировать все элементы интерфейса, чтоб их нельзя было перемещать и менять их размер.")
str:add({"color",unpack(colors.simple(color))}, text, {"color", "LAST"}, true)
str:add({"color","ANTIQUE_WHITE"}, "Играет: ", {"color", "LAST"}, user.current_char, true)
str:add({"color","ANTIQUE_WHITE"}, "Игра: ", {"color", "LAST"}, user.module, "(", user.valid, ")",true)
str:add(true, "---", true, "Кликните для открытия ", {"color", "LIGHT_BLUE"}, {"font", "italic"}, item.url, {"color", "WHITE"}, {"font", "normal"}, " в своём браузере")
yesnoPopup("Игнорировать пользователя", "Скрывает все сообщения от пользователя: "..user.login, function(ret) if ret then profile.chat:ignoreUser(user.login) end end)
).new("Причина жалобы: "
game.log("#VIOLET#", "Жалоба передана.")
yesnoPopup("Удалить из друзей", "Действительно удалить "..user.login.." из списка ваших друзей?", function(ret) if ret then profile.chat:removeFriend(user.login, user.id) end end)
yesnoPopup("Добавить друга", "Действительно добавить "..user.login.." в список ваших друзей?", function(ret) if ret then profile.chat:addFriend(user.login, user.id) end end)
file/game/modules/tome.team/mod/class/UserChatExtension.lua.txt
game.log("ДРОЖИТ")
file/game/modules/tome.team/mod/class/World.lua.txt
game.log("#LIGHT_BLUE#Новая цветовая опция разблокирована: #{italic}#%s#{normal}#", shimmer_name)
file/game/modules/tome.team/mod/class/WorldNPC.lua.txt
self.logCombat(src, self, "#Source# убивает #Target#.")
logCombat(target, "#Target# убивает #Source#.")
logCombat(target, "#Source# убивает #Target#.")
file/game/modules/tome.team/mod/dialogs/ArenaFinish.lua.txt
Dialog.init(self, "Режим арены", 500, 300)
return "#LIGHT_GREEN#Нет результатов. Ещё ничего не произошло."
else
local text = ""
local tmp = ""
local line = function (txt, col) return " "..col..txt.."\n" end
local stri = "%s (%s %s %s)\n Счет %d[%s]) - Волна: %d"
game.logPlayer(self.actor, "#LIGHT_BLUE#Ты воскрешён! МОШЕННИК !")
).new("Журнал сообщений"
list[#list+1] = {name="Воскреснуть смошенничав", action="cheat"}
list[#list+1] = {name=(not profile.auth and "Лог" or "Чат"), action="log"}
list[#list+1] = {name="Сбросить персонажа", action="dump"}
list[#list+1] = {name="Начать заново с этим же персонажем", action="exit", subaction="restart"}
list[#list+1] = {name="Начать заново с новым персонажем", action="exit", subaction="restart-new"}
list[#list+1] = {name="Выйти в главное меню", action="exit", subaction="none"}
file/game/modules/tome.team/mod/dialogs/Birther.lua.txt
Dialog.init(self, title and title or "Создание персонажа", w or 600, h or 400)
text=" Играть! "
text="Случайно!"
text="Импорт"
text="Выбрать внешность"
text="Отмена"
text="Обучения"
text="Кастомизация"
text="Дополнительные Опции"
title="Имя: "
text=(not config.settings.cheat and game.player_name == "игрок")
title="Женский"
title="Мужской"
text="Кампания: "
text="Сложность: "
text="Режим: "
yesnoPopup("Перезаписать персонажа?", "Уже есть персонаж с таким именем, выхотите перезаписать его?", function(ret)
if not ret then fct() end
end, "Нет", "Да")
yesnoPopup("Антимагия и магия", "Выбранное сочетание расы и класса имеют как магические, так и антимагические силы, из-за чего магия не будет работать. Желаете продолжить?", function(ret) if not ret then\d\a checkfct()\d\a end end, "Нет", "Да, я уверен")
print("[BIRTHER] Ignoring auto-assign for " .. t_id .. " (from " .. d.type .. " descriptor \"" .. d.name .. "\")")
Dialog.new("Обучение", 280, 100)
text="Базовый игровой процесс (рекомендуется)"
text="Характеристики и эффекты (продвинутым игрокам)"
text="Отмена"
phonemesVocals = "а, е, и, о, ы, у"
phonemesConsonants = "б, ц, ч, ск, цз, д, дх, ф, г, гх, х, ж, к, кх, л, м, н, п, пх, ку, р, рх, с, ш, т, тх, тс, тз, вэ, в, их, з, зх"
syllablesStart = "Аэр, Аль, Ам, Ан, Ар, Арм, Aрз, Б, Бал, Бар, Бе, Бел, Бер, Бок, Бор, Бран, Брег, Брен, Брод, Кам, Чал, Чам, Ч, Куз, Даг, Даим, Дэир, Дел, Др, Дюр, Дув, Эар, Елен, Эр, Эрен, Ерем, Фал, Фюл, Гал, Г, Гет, Гил, Гор, Грин, Гюн, Х, Хал, Хан, Хар, Хаз, Хетт, Хюр, Исс, Кхел, К, Кор, Лел, Лор, М, Мал, Мэн, Мард, Н, Ол, Радх, Раг, Релг, Рх, Ран, Сэм, Тарр, Т, Тор, Тюл, Тюр, Юл, Ульф, Юнр, Юр, Урз, Яр, З, Зан, Зер"
syllablesMiddle = "дэ, до, дра, ду, дуна, га, го, хара, калто, ла, лата, лэ, ма, нари, ра, ре, рего, ро, родда, роми, руи, са, то, я, зила"
syllablesEnd = "бар, берс, блек, чак, чик, дан, дар, дас, диг, дил, дин, дир, дор, дюр, фанг, фаст, гар, гас, ген, горн, грим, гунд, хад, хек, хелл, хир, хор, кан, каз, кхад, кор, лач, лар, лдил, лдир, лег, лен, лин, мас, мнир, ндил, ндюр, нег, ник, нтир, раб, рач, рєин, рак, ран, ранд, раз, рек, риг, рим, рин, рион, син, ста, стир, сус, тар, тад, зел, тир, вон, вор, йон, зор"
phonemesVocals = "а, е, и, о, ы, у"
syllablesStart = "Ад, Аэр, Ар, Бел, Бет, Без, Цен, Сир, Эилин, Эль, Ем, Емел, Г, Гл, Глор, Ис, Иси, Ив, Лей, Лис, Мей, Нер, Пол, Пор, Сал, Сил, Вел, Вор, Кс, Ксан, Ксер, Юв, Зюб"
syllablesMiddle = "бре, да, дхе, га, лда, ле, лра, ми, ра, ри, риа, ре, се, я"
syllablesEnd = "ба, без, да, кира, лайт, лле, ма, мина, мира, на, нн, нне, нор, ра, рин, ссра, та, з, за, зра, тира, тта, веа, вена, ве, вен, вин"
self.c_desc:switchItem(self.c_name, "Имя вашего перонажа.\nИспользуйте правую кнопку мыши, для генерации случайного имени, зависящего от выбранной расы и пола.")
print("[BIRTHER] set descriptor", key, val)
print("Missing ", o)
print("[BIRTHER] checking allowance for ", d.name, d.type, "::", table.serialize(ignore_type, nil, true))
print("[BIRTHER] test against ", od.name, "=>", what, allowed)
return "hide" end
locktext = "\n\n#GOLD#Закрытая опция. Совершите определённые действия или выполните задания, чтоб навсегда разблокировать другие кампании, расы и классы."
list[#list+1] = { name = tstring{{"font", "italic"}, {"color", "GREY"}, "-- заблокировано --", {"font", "normal"}}:toString(), id=d.name, locked=true, desc=util.getval(d.locked_desc, self)..locktext }
locktext = "\n\n#GOLD#Закрытая опция. Совершите определённые действия или выполните задания, чтоб навсегда разблокировать другие кампании, расы и классы."
list[#list+1] = { name = tstring{{"font", "italic"}, {"color", "GREY"}, "-- заблокировано --", {"font", "normal"}}:toString(), id=d.name, locked=true, desc=util.getval(d.locked_desc, self)..locktext }
locktext = "\n\n#GOLD#Закрытая опция. Совершите определённые действия или выполните задания, чтоб навсегда разблокировать другие кампании, расы и классы."
list[#list+1] = { name = tstring{{"font", "italic"}, {"color", "GREY"}, "-- заблокировано --", {"font", "normal"}}:toString(), id=d.name, locked=true, desc=util.getval(d.locked_desc, self)..locktext, locked_select=d.locked_select }
locktext = "\n\n#GOLD#Закрытая опция. Совершите определённые действия или выполните задания, чтоб навсегда разблокировать другие кампании, расы и классы."
nodes[#nodes+1] = { name = tstring{{"font", "italic"}, {"color", "GREY"}, "-- заблокировано --", {"font", "normal"}}, id=sd.name, pid=d.name, locked=true, desc=util.getval(sd.locked_desc, self)..locktext }
tree[#tree+1] = { name = tstring{{"font", "italic"}, {"color", "GREY"}, "-- заблокировано --", {"font", "normal"}}, id=d.name, shown = oldtree[d.name], nodes = nodes, locked=true, desc=util.getval(d.locked_desc, self)..locktext }
tree[#tree+1] = { name = tstring{{"font", "italic"}, {"color", "LIGHT_SLATE"}, d.display_name, {"font", "normal"}}, id=d.name, shown = oldtree[d.name], nodes = nodes, desc=desc }
locktext = "\n\n#GOLD#Закрытая опция. Совершите определённые действия или выполните задания, чтоб навсегда разблокировать другие кампании, расы и классы."
nodes[#nodes+1] = { name = tstring{{"font", "italic"}, {"color", "GREY"}, "-- заблокировано --", {"font", "normal"}}, id=sd.name, pid=d.name, locked=true, desc=util.getval(sd.locked_desc, self)..locktext }
desc = "#CRIMSON#Игра за выбранное сочетание расы/класса не имеет особого смысла. Вы можете продолжить с текущим вариантом, но тогда будут пропущены некоторые задания/...#WHITE#\n"
tree[#tree+1] = { name = tstring{{"font", "italic"}, {"color", "GREY"}, "-- заблокировано --", {"font", "normal"}}, id=d.name, shown=oldtree[d.name], nodes = nodes, locked=true, desc=util.getval(d.locked_desc, self)..locktext }
tree[#tree+1] = { name = tstring{{"font", "italic"}, {"color", "LIGHT_SLATE"}, d.display_name, {"font", "normal"}}, id=d.name, shown=oldtree[d.name], nodes = nodes, desc=desc }
Dialog.new("Хранилище персонажей", 600, 550)
text=" Загрузить "
text="Удалить"
yesnoPopup(sel.name, "Действительно удалить созданного ранее: "..sel.name, function(ret) if ret then
local vault = CharacterVaultSave.new(sel.short_name)
vault:delete()
vault:close()
lss = Module:listVaultSavesForCurrent()
list.list = lss
list:generate()
sel = nil
end end)
).new("режим-исследователя"
).new("custom-tiles"
Dialog.new("Выбрать внешность", 600, 550)
list[#list+1] = "Другая внешность/"
text="Сброс внешности"
text="Свой вариант"
simpleLongPopup("Как пользоваться собственной графикой", ([[Вы можете использовать свою собственную графику во время игрового процесса, но только если вы внесли пожертвование или купили игру.
Помимо этого, ваша графика должна соответствовать некоторым требованиям:
- она должна быть размера 64x64 или 64x128 клеток
- она должна быть в формате PNG
- она должна находиться в папке #LIGHT_BLUE#%s#WHITE#
Если все условия выполнены, перезапустите игру и выберите графику из списка.]]):format(fs.getRealPath("/data/gfx/custom-tiles/")), 500)
Dialog.new("Опции кастомизации", 600, 550)
file/game/modules/tome.team/mod/dialogs/CharacterSheet.lua.txt
Dialog.init(self, "Информация о персонаже: "..self.actor.name, util.bound(self.font_w*400, game.w*0.5, game.w*0.95), util.bound(self.font_h*36, game.h*.35, game.h*.85))
title="[О]бщее"
title="[А]така"
title="[З]ащита"
title="[Т]аланты"
title="[Э]кипировка: "
game.logPlayer(self.actor, "#RED#Отображение %s изменено для %s (смена экипировки не изменяет внешний вид данной её части)", self.equip_set, self.actor.name:capitalize())
text="Сортировать: "
text="[И]нвентарь"
text="[П]овышение уровня"
text=[[
Значения #00FF00#в скобках ( )#LAST# показывают изменения, произошедшие с
момента предыдущего просмотра описания персонажа.
Клавиатура: #00FF00#'г'#LAST# сохраняет информацию о персонаже. #00FF00#TAB#LAST# позволяет перемещаться между вкладками.
Мышь: наведите на интересующую вас характеристику
]]
local playtimetext = ([[#GOLD#Дней в путешествии / текущий месяц:#LAST# %d / %s
#GOLD#Прожито:#LAST# %s
#GOLD#Созданий убито: #ANTIQUE_WHITE#%d
#GOLD#Элиты/Редких/Боссов убито: #YELLOW#%d/#SALMON#%d/#ORANGE#%d
]])
TOOLTIP_INSTAKILL_IMMUNE", negative_status_effect_immune = "
TOOLTIP_NEGATIVE_STATUS_IMMUNE", stun_immune="
TOOLTIP_STUN_IMMUNE"}
function _M:innerDisplay(x, y, nb_keyframes)
self.actor:toScreen(nil, x + self.iw - 128, y + 6, 128, 128)
end
function _M:switchTo(kind)
self.b_talents_sorting.hide = true
self.b_show_equipment.hide = not self.actor.player
self:hideEquipmentFrame() -- turn off special frames for equipment
self:drawDialog(kind, _M.cs_player_dup)
if kind == "
getEncumberTitleUpdator("Инвентарь")
self:mouseLink(path, "Вы можете найти окно вашего персонажа играя онлайн", s:drawColorStringBlended(self.font, LinkTxt, w, h, 255, 255, 255, true))
ret:add(value2 < value and {"color","RED"} or {"color","LIGHT_GREEN"}, diffoutformat:format(((value or 0) - value2) * mod), {"color", "LAST"})
ret:add(value2 > value and {"color","RED"} or {"color","LIGHT_GREEN"}, diffoutformat:format(((value or 0) - value2) * mod), {"color", "LAST"})
ret:add(("%s"):format((count1 > 0) and " / " or ""), (v[1] or 0) > 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0)), {"color","LAST"})
ret:add(("%s"):format((count1 > 0) and " / " or ""), (v[1] or 0) < 0 and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0)), {"color","LAST"})
ret:add((v[1] or 0) > vv and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0) - vv), {"color","LAST"})
ret:add((v[1] or 0) < vv and {"color","RED"} or {"color","LIGHT_GREEN"}, outformat:format((v[1] or 0) - vv), {"color","LAST"})
drawStringBlended(self.font, "Sex : "..((player.descriptor and player.descriptor.sex) or (player.female and "Женщина" or "Мужчина")), w, h, 0, 200, 255, true)
drawStringBlended(self.font, (player.descriptor and "Раса : " or "Тип : ")..((player.descriptor and player.descriptor.subrace) or player.type:capitalize()), w, h, 0, 200, 255, true)
drawStringBlended(self.font, (player.descriptor and "Класс: " or "Под.тип: ")..((player.descriptor and player.descriptor.subclass) or player.subtype:capitalize()), w, h, 0, 200, 255, true)
self:mouseTooltip(self.TOOLTIP_ANTIMAGIC_USER, s:drawColorStringBlended(self.font, "#ORCHID#"..follow, w+200, h, 255, 255, 255, true))
drawStringBlended(self.font, "Размер : "..(player:TextSizeCategory():capitalize()), w, h, 0, 200, 255, true)
self:mouseTooltip(self.TOOLTIP_LEVEL, s:drawColorStringBlended(self.font, "Уровень: #00ff00#"..player.level, w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_LEVEL, s:drawColorStringBlended(self.font, ("Опыт : #00ff00#%2d%%"):format(100 * cur_exp / max_exp), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_GOLD, s:drawColorStringBlended(self.font, ("Золото : #00ff00#%0.2f"):format(player.money), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, "max_life", "%d", "%+.0f max")
compare_fields(player, actor_to_compare, "die_at", "die:%+d","%+.0f", 1, true)
self:mouseTooltip(self.TOOLTIP_LIFE, s:drawColorStringBlended(self.font, ("#c00000#Здоровье : #00ff00#%d/%s"):format(player.life, text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(act) return act[show_min and res_def.getMinFunction or res_def.getMaxFunction](act) or 0 end, "%d", "%+.0f "..(show_min and "min" or "max"), nil, show_min)
self:mouseTooltip(tt, s:drawColorStringBlended(self.font, ("%s%-8.8s: #00ff00#%s "):format(res_def.color or "#WHITE#", res_def.name, val_text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, "psionic_feedback_max", "%d", "%+.0f")
self.TOOLTIP_FEEDBACK..("В данный момент вы получаете %0.1f%% резонанса от полученного урона.")
self:mouseTooltip(tt, s:drawColorStringBlended(self.font, ("#7fffd4#Резонанс: #00ff00#%d/%s"):format(player:getFeedback(), text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_SPEED_GLOBAL, s:drawColorStringBlended(self.font, ("Общая скорость : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor) return (1/actor:getSpeed("movement")) end, color.."%.1f%%", "%+.1f%%", 100)
self:mouseTooltip(self.TOOLTIP_SPEED_MOVEMENT, s:drawColorStringBlended(self.font, ("Скорость передвижения: #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return 1/actor:getSpeed("spell") end, color.."%.1f%%", "%+.1f%%", 100)
self:mouseTooltip(self.TOOLTIP_SPEED_SPELL, s:drawColorStringBlended(self.font, ("Скорость заклинаний : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return 1/actor:getSpeed("weapon") end, color.."%.1f%%", "%+.1f%%", 100)
self:mouseTooltip(self.TOOLTIP_SPEED_ATTACK, s:drawColorStringBlended(self.font, ("Скорость атаки : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return 1/actor:getSpeed("mind") end, color.."%.1f%%", "%+.1f%%", 100)
self:mouseTooltip(self.TOOLTIP_SPEED_MENTAL, s:drawColorStringBlended(self.font, ("Скорость мысли : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor) return #actor.died_times end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_LIVES, s:drawColorStringBlended(self.font, ("Кол-во смертей : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_BLOOD_LIFE, s:drawColorStringBlended(self.font, "#DARK_RED#Кровь жизни", w+200, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, "easy_mode_lifes", "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_LIVES, s:drawColorStringBlended(self.font, ("Жизней осталось : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_HEALING_MOD, s:drawColorStringBlended(self.font, ("Мод. лечения. : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_LIFE_REGEN, s:drawColorStringBlended(self.font, ("Регенерация здоровья : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_LIFE_REGEN, s:drawColorStringBlended(self.font, ("(с мод. лечения): #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, "lite", "%d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_VISION_LITE, s:drawColorStringBlended(self.font, ("Радиус освещения : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, "sight", "%d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_VISION_SIGHT, s:drawColorStringBlended(self.font, ("Радиус зрения : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor) return (actor:attr("infravision") or actor:attr("heightened_senses")) and math.max((actor.heightened_senses or 0), (actor.infravision or 0)) end, "%d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_VISION_INFRA, s:drawColorStringBlended(self.font, ("Обострённые чувства: #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_SEE_TRAPS, s:drawColorStringBlended(self.font, ("Обнаружение ловушек : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(who) return who:attr("stealth") and who.stealth + (who:attr("inc_stealth") or 0) end, "%.1f", "%+.1f")
self:mouseTooltip(self.TOOLTIP_VISION_STEALTH, s:drawColorStringBlended(self.font, ("Скрытность : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_VISION_SEE_STEALTH, s:drawColorStringBlended(self.font, ("Обнаружение скрытого : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, "invisible", "%.1f", "%+.1f")
self:mouseTooltip(self.TOOLTIP_VISION_INVISIBLE, s:drawColorStringBlended(self.font, ("Невидимость : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_VISION_SEE_INVISIBLE, s:drawColorStringBlended(self.font, ("Обнаружение невидимок : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, "esp_range", "%d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_ESP_RANGE, s:drawColorStringBlended(self.font, ("Дистанция телепатии: #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_STATS, s:drawColorStringBlended(self.font, "#LIGHT_BLUE#Характеристики: Базовые/Текущие", w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_INSCRIPTIONS, s:drawColorStringBlended(self.font, ("#AQUAMARINE#Усиления (%d/%d)"):format(nb_inscriptions, player.max_inscriptions), w, h, 255, 255, 255, true))
self:mouseTooltip("#GOLD##{bold}#"..t.name.."#{normal}##WHITE#\n"..tostring(desc), s:drawColorStringBlended(self.font, ("#LIGHT_GREEN#%s"):format(t.name), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_ESP, s:drawColorStringBlended(self.font, ("Телепатия с: "), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_ESP, s:drawColorStringBlended(self.font, ("%s%s "):format(v[2] and (v[1] and "#GOLD#" or "#00ff00#") or "#ff0000#", type:capitalize()), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_ESP_ALL, s:drawColorStringBlended(self.font, ("%sВсе "):format(esps_compare["All"][2] and (esps_compare["All"][1] and "#GOLD#" or "#00ff00#") or "#ff0000#"), w, h, 255, 255, 255, true))
drawColorStringBlended(self.font, "#LIGHT_BLUE#Текущие эффекты:", w, h, 255, 255, 255, true)
desc = "#GOLD##{bold}#"
local text2 = (combat.obj and combat.obj.slot_forbid == "ПУСТАЯ РУКА" and "двуручное, " or "")
drawColorStringBlended(self.font, (text or "Оружие")..(weap_type and " ("..text2..")" or "")..":", w, h, 255, 255, 255, true)
compare_fields(player, actor_to_compare,
function(actor, ...)
return actor == actor_to_compare and combatc.atk or combat.atk
end,
"%3d", "%+.0f", 1, false, false, mean, dam)
self:mouseTooltip(self.TOOLTIP_COMBAT_ATTACK, s:drawColorStringBlended(self.font, ("Точность : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare,
function(actor, ...)
return actor == actor_to_compare and combatc.dmg or combat.dmg
end,
"%3d", "%+.0f", 1, false, false, dam)
self:mouseTooltip(self.TOOLTIP_COMBAT_DAMAGE, s:drawColorStringBlended(self.font, ("Урон : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == actor_to_compare and combatc.block or combat.block end, "%3d", "%+.0f", 1, false, false, dam)
self:mouseTooltip(self.TOOLTIP_COMBAT_BLOCK, s:drawColorStringBlended(self.font, ("Блок : #00ff00#%s"):format(text), self.w*.14, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == actor_to_compare and combatc.apr or combat.apr end, "%3d", "%+.0f", 1, false, false, dam)
self:mouseTooltip(self.TOOLTIP_COMBAT_APR, s:drawColorStringBlended(self.font, ("ИБ : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == actor_to_compare and combatc.crit or combat.crit end, "%3d%%", "%+.0f%%", 1, false, false, dam)
self:mouseTooltip(self.TOOLTIP_COMBAT_CRIT, s:drawColorStringBlended(self.font, ("Крит. шанс : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return 150 + (actor.combat_critical_power or 0) + (actor == actor_to_compare and combatc.crit_power or combat.crit_power) end, "%3d%%", "%+.0f%%", 1, false, false, dam)
self:mouseTooltip(self.TOOLTIP_INC_CRIT_POWER, s:drawColorStringBlended(self.font, ("Крит. урон : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_COMBAT_SPEED, s:drawColorStringBlended(self.font, ("Скорость атаки : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == actor_to_compare and combatc.range or combat.range end, "range %2d", "%+d", 1, false, false, mean)
compare_fields(player, actor_to_compare, function(actor, ...) return actor == actor_to_compare and combatc.mspeed or combat.mspeed end, "speed %3d%%", "%+.0f%%", 100, false, false, dam)
self:mouseTooltip(self.TOOLTIP_ARCHERY_RANGE_SPEED, s:drawColorStringBlended(self.font, ("Стрелковая : #00ff00#%s, %s"):format(text, text2), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatPhysicalpower() end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_PHYSICAL_POWER, s:drawColorStringBlended(self.font, ("Физ. сила: #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatCrit() end, "%d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_PHYSICAL_CRIT, s:drawColorStringBlended(self.font, ("Крит. шанс : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatSpellpower() end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_SPELL_POWER, s:drawColorStringBlended(self.font, ("Сила заклинаний : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatSpellCrit() end, "%d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_SPELL_CRIT, s:drawColorStringBlended(self.font, ("Крит. шанс : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_SPELL_SPEED, s:drawColorStringBlended(self.font, ("Скорость заклинаний : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return (1 - (actor.spell_cooldown_reduction or 0)) * 100 end, "%3d%%", "%+.0f%%", nil, true)
self:mouseTooltip(self.TOOLTIP_SPELL_COOLDOWN , s:drawColorStringBlended(self.font, ("Перезарядка заклинаний: #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatMindpower() end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_MINDPOWER, s:drawColorStringBlended(self.font, ("Сила разума: #00ff00#%s"):format(text, dur_text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatMindCrit() end, "%d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_MIND_CRIT, s:drawColorStringBlended(self.font, ("Крит. шанс : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_MIND_SPEED, s:drawColorStringBlended(self.font, ("Скорость мысли : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
drawColorStringBlended(self.font, "#LIGHT_BLUE#Модификаторы урона:", w, h, 255, 255, 255, true)
compare_fields(player, actor_to_compare, function(actor, ...) return 150 + (actor.combat_critical_power or 0) end, "%3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_INC_CRIT_POWER , s:drawColorStringBlended(self.font, ("Крит. модификатор.: #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor.inc_damage and actor.inc_damage.all or 0 end, "%3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_INC_DAMAGE_ALL, s:drawColorStringBlended(self.font, ("Весь урон : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatGetDamageIncrease(DamageType[t.type]) end, "%+3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_INC_DAMAGE, s:drawColorStringBlended(self.font, ("%s%-20s: #00ff00#%s"):format((t.text_color or "#WHITE#"), t.name:capitalize().."#LAST#", text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == player and valn or actor == actor_to_compare and valo or 0 end, "%+3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_INC_DAMAGE_ACTOR, s:drawColorStringBlended(self.font, ("%s%-20s: #00ff00#%s"):format("#ORANGE#", "vs "..t:capitalize().."#LAST#", text), w, h, 255, 255, 255, true))
text=[[#GOLD#Игнорирование сопротивлений#LAST#
Возможность уменьшить вражеское сопротивление к вашему урону]]
self:mouseTooltip(text, s:drawColorStringBlended(self.font, "#LIGHT_BLUE#Игнорирование сопротивлений:", w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor.resists_pen and actor.resists_pen.all or 0 end, "%3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_RESISTS_PEN_ALL, s:drawColorStringBlended(self.font, ("Весь урон : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatGetResistPen(DamageType[t.type]) end, "%3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_RESISTS_PEN, s:drawColorStringBlended(self.font, ("%s%-20s: #00ff00#%s"):format((t.text_color or "#WHITE#"), t.name:capitalize().."#LAST#", text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_MELEE_PROJECT_INNATE, s:drawColorStringBlended(self.font, "#LIGHT_BLUE#Дополнительный ближний урон:", w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == player and valn or actor == actor_to_compare and valo or 0 end, "%3d", "%+d")
self:mouseTooltip(self.TOOLTIP_MELEE_PROJECT_INNATE, s:drawColorStringBlended(self.font, ("%s%-20s: #00ff00#%s"):format((t.text_color or "#WHITE#"), t.name:capitalize().."#LAST#", text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_RANGED_PROJECT_INNATE, s:drawColorStringBlended(self.font, "#LIGHT_BLUE#Дополнительный дальний урон:", w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == player and valn or actor == actor_to_compare and valo or 0 end, "%3d", "%+d")
self:mouseTooltip(self.TOOLTIP_RANGED_PROJECT_INNATE, s:drawColorStringBlended(self.font, ("%s%-20s: #00ff00#%s"):format((t.text_color or "#WHITE#"), t.name:capitalize().."#LAST#", text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatFatigue() end, "%3d%%", "%+.0f%%", 1, true)
self:mouseTooltip(self.TOOLTIP_FATIGUE, s:drawColorStringBlended(self.font, ("Усталость : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatArmorHardiness() end, "%3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_ARMOR_HARDINESS, s:drawColorStringBlended(self.font, ("Эффективность брони : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatArmor() end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_ARMOR, s:drawColorStringBlended(self.font, ("Броня : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatDefense(true) end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_DEFENSE, s:drawColorStringBlended(self.font, ("Уворот : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatDefenseRanged(true) end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_RDEFENSE,s:drawColorStringBlended(self.font, ("Уворот от снарядов : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatCritReduction() end, "%d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_CRIT_REDUCTION,s:drawColorStringBlended(self.font, ("Уменьшение крит. шанса : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor:attr("ignore_direct_crits") or 0 end, "%d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_CRIT_SHRUG,s:drawColorStringBlended(self.font, ("Шанс игнорирования крит. атаки : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return math.floor(actor:combatPhysicalResist(true)) end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_PHYS_SAVE, s:drawColorStringBlended(self.font, ("Физ.: #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return math.floor(actor:combatSpellResist(true)) end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_SPELL_SAVE, s:drawColorStringBlended(self.font, ("Маг. : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return math.floor(actor:combatMentalResist(true)) end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_MENTAL_SAVE, s:drawColorStringBlended(self.font, ("Мен. : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_RESIST_DAMAGE, s:drawColorStringBlended(self.font, "#LIGHT_BLUE#Сопротивления : текущие / предел:", w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_RESIST_ALL, s:drawColorStringBlended(self.font, ("%-14s: #00ff00#%3d%% / %3.0f%% %s"):format("All", res, cap, change), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_RESIST_ABSOLUTE, s:drawColorStringBlended(self.font, ("#SALMON#%-14s: #00ff00#%3d%% / %3.0f%% %s"):format("Absolute", res, cap, change), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_RESIST_SPEED, s:drawColorStringBlended(self.font, ("#SALMON#%-14s: #00ff00#%3d%% / %3.0f%% %s"):format("Speed Res", res, cap, change), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_RESIST, s:drawColorStringBlended(self.font, ("%s%-14s#LAST#: #00ff00#%3s %s"):format((t.text_color or "#WHITE#"), t.name:capitalize(), vals, change), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_RESIST_DAMAGE_ACTOR, s:drawColorStringBlended(self.font, ("#ORANGE#против %-11s#LAST#: #00ff00#%3s %s"):format(t:capitalize(), vals, change), w, h, 255, 255, 255, true))
drawColorStringBlended(self.font, "#LIGHT_BLUE#Сродство:", w, h, 255, 255, 255, true)
compare_fields(player, actor_to_compare, function(actor, ...) return actor.damage_affinity and actor.damage_affinity.all or 0 end, "%3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_AFFINITY_ALL, s:drawColorStringBlended(self.font, ("Весь урон : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == player and valn+alln or actor == actor_to_compare and valo+allo or 0 end, "%3d%%", "%+.0f%%")
self:mouseTooltip(self.TOOLTIP_AFFINITY, s:drawColorStringBlended(self.font, ("%s%-20s: #00ff00#%s"):format((t.text_color or "#WHITE#"), t.name:capitalize().."#LAST#", text), w, h, 255, 255, 255, true))
drawColorStringBlended(self.font, "#LIGHT_BLUE#Фиксированная защита:", w, h, 255, 255, 255, true)
compare_fields(player, actor_to_compare, function(actor, ...) return actor:combatGetFlatResist("none") end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_FLAT_RESIST, s:drawColorStringBlended(self.font, ("Весь урон : #00ff00#%s"):format(text), w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return actor == player and valn or actor == actor_to_compare and valo or 0 end, "%3d", "%+.0f")
self:mouseTooltip(self.TOOLTIP_FLAT_RESIST, s:drawColorStringBlended(self.font, ("%s%-20s: #00ff00#%s"):format((t.text_color or "#WHITE#"), t.name:capitalize().."#LAST#", text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_STATUS_IMMUNE, s:drawColorStringBlended(self.font, "#LIGHT_BLUE#Effect resistances:", w, h, 255, 255, 255, true))
compare_fields(player, actor_to_compare, function(actor, ...) return util.bound((actor:attr(...) or 0) * 100, 0, 100) end, "%3d%%", "%+.0f%%", 1, false, false, immune_type)
self:mouseTooltip(self[self.immunity_tooltips[immune_type] or "TOOLTIP_SPECIFIC_IMMUNE"], s:drawColorStringBlended(self.font, ("%s: #00ff00#%s"):format(immune_name, text), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_ON_HIT_DAMAGE, s:drawColorStringBlended(self.font, "#LIGHT_BLUE#Damage when hit:", w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_ON_HIT_DAMAGE, s:drawColorStringBlended(self.font, ("%s"):format(dval), w, h, 255, 255, 255, true))
self:mouseTooltip(self.TOOLTIP_ON_HIT_DAMAGE, s:drawColorStringBlended(self.font, ("%s%-10s#LAST#: #00ff00#%.1f"):format((t.text_color or "#WHITE#"), t.name:capitalize(), dval), w, h, 255, 255, 255, true))
return "Inscriptions"
elseif tt.type:match("uber/.*") then
return "Prodigies"
elseif tt.type:match(".*/objects") then
return "Item_Talents"
end
return "Таланты"
end
return "#GOLD#"
elseif t.mode == "activated" then
local no_energy = util.getval(t.no_energy, player, t)
if no_energy == true then
return "#00c91b##{italic}#"--return "#E56F48#"
else
return "#00c91b#"
end
return "#LIGHT_STEEL_BLUE#"--return "#486FE5#"
else --Sustains
return "#C49600#"--return "#E5D848#"
end
self:mouseTooltip(talent_type_name, s:drawColorStringBlended(self.font, ("#{bold}##KHAKI#%s#{normal}#"):format(tt_name), w, h, 255, 255, 255, true))
self:mouseTooltip(t.desc, s:drawColorStringBlended(self.font, (get_talent_color(t.talent).."%s".."#{normal}#"):format(t.name), w, h, 255, 255, 255, true))
return ("%s: %s"):format(s, r) end
nl(" [ToME4 @ www.te4.org Character Dump]"
nl(("СИЛ: %d")
nl(("ЛОВ: %d")
nl(("МАГ: %d")
nl(("ВОЛ: %d")
nl(("ХИТ: %d")
nl(("ТЕЛ: %d")
nl(("Кол-во смертей : %d")
nl(("Жизней осталось : %d")
nl((makelabel("Эквелибриум", (" %d"):format(player:getEquilibrium())))
nl((makelabel("Парадокс", (" %d"):format(player:getParadox())))
nl(("Точность(доп. оружие): %3d")
nl(("Урон (доп. оружие): %3d")
nl(("ИБ (доп. оружие): %3d")
nl(("Крит (доп. оружие): %3d%%")
nl(("Скорость (доп. оружие): %0.2f")
nl(("Все сопротивления: %3d%%")
nl(("%s Сопротивление(предел): %3d%%(%3d%%)")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("%s: %3d%%")
nl(("Количество убитых: %s")
nl(("Больше всего убийств: %s (%d)")
nl(" [Победитель!]"
nl(("%s")
nl(" [Дерево талантов]"
nl((" - %-35s(мастерство %.02f)")
nl(("%-37s %d/%d")
nl((" [Усиления (%d/%d)]")
nl(("%s")
nl(" [Текущие эффекты]"
nl(" [Выполненные задания]"
nl(" [Активные задания]"
nl(" [Экипировка персонажа]"
nl((" %s")
nl(("%s) %s")
nl((" %s")
nl((" Выпало из %s")
nl(" [Достижения]"
nl(("'%s' получил %s на %s")
nl(" [Инвентарь]"
nl(("%s) %s")
nl((" %s")
nl((" Выпало из %s")
nl(" [Последние сообщения]"
simplePopup("Информация о персонаже сохранена", "Файл: "..fs.getRealPath(file))
file/game/modules/tome.team/mod/dialogs/CursedAuraSelect.lua.txt
Dialog.init(self, "Выбор проклятой ауры", 1, 1)
text="Аура зла формируется вокруг вас. Выберите своё проклятие:"
print("* CAS", #list, list[1].name, list[5].name)
file/game/modules/tome.team/mod/dialogs/DeathDialog.lua.txt
Dialog.init(self, "Вы #LIGHT_RED#умерли#LAST#!", 500, 600)
text = [[Смерть в #{bold}#Сказаниях Мадж'Эяла#{normal}# поджидает вас на каждом углу, но если у вас имеется средство для воскрешения, то оно будет предложено в меню ниже.
Вы можете сохранить информацию о вашем персонаже в отдельный файл, чтоб оставить его в своей памяти на века, или вы можете выйти и попытаться выжить вновь!
]]
text="#LIGHT_GREEN#В течении игры, вы:#WHITE#:\n* "
game.log("#LIGHT_RED#У вас осталось %s.", (self.actor:attr("easy_mode_lifes") and self.actor:attr("easy_mode_lifes").." жизнь(ей)") or "0 жизней")
game.log("#LIGHT_RED#За момент до гибели кто-то перенёс вас в иной мир.")
).new("Журнал сообщений"
game.logPlayer(self.actor, "#LIGHT_BLUE#Вы были воскрешены! ЧИТЕР!")
game.logPlayer(self.actor, "#LIGHT_RED#Кровь Жизни распространяется по вашему тела. Вы возвращаетесь к жизни!")
game.logPlayer(self.actor, "#YELLOW#Магия восстанавливает ваши кости и создаёт из них новое тело. Вы можете продолжить причинять боль своим врагам!")
game.logPlayer(self.actor, "#YELLOW#Ваша %s поглощается и исчезает! Вы вернулись к жизни!", o:getName{do_colour=true})
game.logPlayer(self, "Вы решили умереть в измерении Эидолона! УМРИТЕ!")
list[#list+1] = {name="Воскреснуть смошенничав", action="cheat"}
list[#list+1] = {name="Воскреснуть с помощью Крови жизни", action="blood_life"}
list[#list+1] = {name="Лежащие поблизости кости собираются вместе и образуют новое тело, вы воскрешены! (Способность скелета)", action="skeleton"}
list[#list+1] = {name="Воскреснуть поглотив "..o:getName{do_colour=true}, action="consume"..consumenb, inven=inven, item=item, object=o, is_consume=true}
list[#list+1] = {name=(not profile.auth and "Лог" or "Чат+Лог"), action="log"}
list[#list+1] = {name="Сохранение информации о персонаже", action="dump"}
list[#list+1] = {name="Начать заново с этим же персонажем", action="exit", subaction="restart"}
list[#list+1] = {name="Начать заново с новым персонажем", action="exit", subaction="restart-new"}
list[#list+1] = {name="Выйти в главное меню", action="exit", subaction="none"}
file/game/modules/tome.team/mod/dialogs/debug/AlterFaction.lua.txt
Dialog.init(self, "Сменить фракцию", 1, 1)
listPopup("Alter: "..item.def.name, "Изменить отношение:", {{name="дружественное"}, {name="нейтральное"}, {name="враждебное"}}, 300, 150, function(sel)
if not sel then return end
if sel.name == "дружественное" then Faction:setFactionReaction(game.player.faction, item.def.short_name, 100, true)
elseif sel.name == "нейтральное" then Faction:setFactionReaction(game.player.faction, item.def.short_name, 0, true)
elseif sel.name == "враждебное" then Faction:setFactionReaction(game.player.faction, item.def.short_name, -100, true)
end
end)
file/game/modules/tome.team/mod/dialogs/debug/ChangeZone.lua.txt
engine.ui.Dialog.init(self, "Отладка/Жульничать ПЛОХО!", 1, 1)
GetQuantity.new("Зона: "..item.name, "Этаж "..item.min.."-"..item.max, 1, item.max, function(qty)
game:changeLevel(qty, item.zone)
end)
file/game/modules/tome.team/mod/dialogs/debug/CreateItem.lua.txt
Dialog.init(self, "Создать объект", 1, 1)
yesnoPopup("Эго", "Создать вещь с эго(если возможно)?", function(ret)
if not ret then
for i = 1, qty do
local n = game.zone:finishEntity(game.level, "object", item.e, {ego_chance=-1000})
n:identify(true)
game.zone:addEntity(game.level, n, "object", game.player.x, game.player.y)
end
else
Dialog:yesnoPopup("Великое эго", "Создать предмет с данным эго?", function(ret)
local f
if not ret then
f = {ego_chance=1000}
else
f = {ego_chance=1000, properties={"greater_ego"}}
end
for i = 1, qty do
local n = game.zone:finishEntity(game.level, "object", item.e, f)
n:identify(true)
game.zone:addEntity(game.level, n, "object", game.player.x, game.player.y)
end
end)
end
end)
file/game/modules/tome.team/mod/dialogs/debug/CreateTrap.lua.txt
Dialog.init(self, "Создать ловушку", 1, 1)
file/game/modules/tome.team/mod/dialogs/debug/DebugMain.lua.txt
engine.ui.Dialog.init(self, "Отладка/Жульничать ПЛОХО!", 1, 1)
GetQuantity.new("Зона: "..game.zone.name, "Этаж 1-"..game.zone.max_level, game.level.level, game.zone.max_level, function(qty)
game:changeLevel(qty)
end)
desc = "Тренировочный манекен."
list[#list+1] = {name="Сменить зону", dialog="ChangeZone"}
list[#list+1] = {name="Сменить уровень", action="change_level"}
list[#list+1] = {name="Раскрыть карту", action="magic_map"}
list[#list+1] = {name="Режим Бога", action="godmode"}
list[#list+1] = {name="Создать все артефакты", action="all_arts"}
list[#list+1] = {name="Grant/Alter Quests", dialog="GrantQuest"}
list[#list+1] = {name="Призвать Существо", dialog="SummonCreature"}
list[#list+1] = {name="Создать предмет", dialog="CreateItem"}
list[#list+1] = {name="Alter Faction", dialog="AlterFaction"}
list[#list+1] = {name="Добавить энергию в Шер'Тул", action="shertul-energy"}
list[#list+1] = {name="Создать ловушку", dialog="CreateTrap"}
list[#list+1] = {name="Удалить всех существ", action="remove-all"}
list[#list+1] = {name="Режим полубога", action="semigodmode"}
list[#list+1] = {name="Получить все ингредиенты", action="all-ingredients"}
list[#list+1] = {name="Слабый урон", action="weakdamage"}
list[#list+1] = {name="Тренировочный манекен", action="test-dummy"}
file/game/modules/tome.team/mod/dialogs/debug/GrantQuest.lua.txt
engine.ui.Dialog.init(self, "Отладка/Жульничать ПЛОХО!", 1, 1)
GetQuantity.new("Задание: "..item.name, "Уровень "..item.min.."-"..item.max, 1, item.max, function(qty)
-- game:changeLevel(qty, item.zone)
-- end)
file/game/modules/tome.team/mod/dialogs/debug/SummonCreature.lua.txt
engine.ui.Dialog.init(self, "Призвать Существо", 1, 1)
file/game/modules/tome.team/mod/dialogs/Donation.lua.txt
Dialog.init(self, "Пожертвования", 500, 300)
text=[[Приветствую, Я Николас (DarkGod), создатель данной игры.
Я очень надеюсь, что моя игра вам понравится и сможет занять ваше время на долгие годы!
Сказания Мадж'Эяла - бесплатная игра с открытым кодом, такой она была и будет всегда, но это не значит, что я могу прожить без денег, поэтому я и решил побеспокоить вас и воззвать к вашей доброте.
Если вам было весело проводить в игре своё время, то пожалуйста, задумайтесь о пожертвовании на развитие проекта.
Для спонсоров открываются следующие возможности: ]]
text=[[Спасибо за поддержку проекта, я очень ценю ваше пожертвование.
Если вы хотите и дальше поддерживать проект, то я буду только рад новым пожертвованиям или если вы сделаете пожертвование повторяющимся, обеспечив тем самым будущее игры.
Спасибо вам за доброту!]]
title="Пожертвовать: "
text=[[евро]]
title="Сделать это ежемесячным пожертвованием"
text="Принять"
text="Отмена"
simplePopup("Спасибо", "Спасибо, paypal будет открыт в вашем браузере .")
file/game/modules/tome.team/mod/dialogs/DownloadCharball.lua.txt
Dialog.init(self, "Скачать код персонажа", game.w * 0.8, game.h * 0.8)
ListColumns.new{width=math.floor(self.iw - 10), height=self.ih - 10, scrollbar=true, sortable=true, columns={
{name="Игрок", width=30, display_prop="player", sort="player"},
{name="Персонаж", width=70, display_prop="character", sort="character"},
}, list=self.list, fct=function(item) self:importCharball(item) end, select=function(item, sel) self:select(item) end}
file/game/modules/tome.team/mod/dialogs/GameOptions.lua.txt
Dialog.init(self, "Настройки Игры", game.w * 0.8, game.h * 0.8)
title="Интерфейс"
title="Игровой процесс"
title="Онлайн"
title="Разное"
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Выберите графический режим для отображения мира.\nПо умолчанию 'Modern'.\nПосле смены режима рекомендуется сделать нового персонажа."}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Графический режим#WHITE##{normal}#", status=function(item)
local ts = GraphicMode.tiles_packs[config.settings.tome.gfx.tiles]
local size = config.settings.tome.gfx.size or "???x???"
return (ts and ts.name or "???").." <"..size..">"
end, fct=function(item)
game:registerDialog(GraphicMode.new())
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Делает передвижение персонажа и других существ плавными. Если выбрать 0, то передвижение будет мгновенным.\nЧем выше это значение, тем медленнее будет происходить перемещение.\n\nПримечание: это не влияет на пошаговость игры. Вы можете продолжать движение до конца анимации предыдущего, новая анимация будет правильно отображена."}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Плавное перемещение существ#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.smooth_move)
end, fct=function(item)
game:registerDialog(GetQuantity.new("Выбрать скорость передвижения(меньше - быстрее)", "От 0 до 60", config.settings.tome.smooth_move, 60, function(qty)
game:saveSettings("tome.smooth_move", ("tome.smooth_move = %d\n"):format(qty))
config.settings.tome.smooth_move = qty
if self:isTome() then engine.Map.smooth_scroll = qty end
self.c_list:drawItem(item)
end))
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включить или выключить дёрганное передвижение.\nКогда включено, существа немного подёргиваются во время передвижения и атак.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Дёрганное передвижение и атаки существ#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.twitch_move and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.twitch_move = not config.settings.tome.twitch_move
game:saveSettings("tome.twitch_move", ("tome.twitch_move = %s\n"):format(tostring(config.settings.tome.twitch_move)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включает гладкий туман войны.\nОтключение данной опции сделает туман войны 'блочным', но может немного повысить производительность.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Гладкий туман войны#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.smooth_fov and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.smooth_fov = not config.settings.tome.smooth_fov
game:saveSettings("tome.smooth_fov", ("tome.smooth_fov = %s\n"):format(tostring(config.settings.tome.smooth_fov)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Віберите вид интерфейса. Метал стоит по умолчанию. Простой использует меньше места на экране.\nТребуется перезапустить игру, чтоб изменения вступили в силу."}
local uis = {{name="Тьма", ui="dark"}, {name="Метал", ui="metal"}, {name="Камень", ui="stone"}, {name="Простой", ui="simple"}}
listPopup("Оформление", "Выбрать оформление", uis, 300, 200, function(sel)
if not sel or not sel.ui then return end
game:saveSettings("tome.ui_theme3", ("tome.ui_theme3 = %q\n"):format(sel.ui))
config.settings.tome.ui_theme3 = sel.ui
self.c_list:drawItem(item)
end)
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Выбор отображения HUD. 'Минималист' установлен по умолчания.\n#LIGHT_RED#Эффект вступит в силу после перезапуска игры."}
listPopup("Вид интерфейса", "Выбрать вид", huds, 300, 200, function(sel)
if not sel or not sel.ui then return end
game:saveSettings("tome.uiset_mode", ("tome.uiset_mode = %q\n"):format(sel.ui))
config.settings.tome.uiset_mode = sel.ui
self.c_list:drawItem(item)
end)
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Количество строк, отображаемых в логе боя (для классического HUD)."}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Строки в логе#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.log_lines)
end, fct=function(item)
game:registerDialog(GetQuantity.new("Строки в логе", "От 5 до 50", config.settings.tome.log_lines, 50, function(qty)
qty = util.bound(qty, 5, 50)
game:saveSettings("tome.log_lines", ("tome.log_lines = %d\n"):format(qty))
config.settings.tome.log_lines = qty
if self:isTome() then
game.uiset.logdisplay.resizeToLines()
end
self.c_list:drawItem(item)
end, 0))
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Отображает небольшие линии между клетками, что упрощает визуальное позиционирование.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Отобразить линии между клетками#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.show_grid_lines and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.show_grid_lines = not config.settings.tome.show_grid_lines
game:saveSettings("tome.show_grid_lines", ("tome.show_grid_lines = %s\n"):format(tostring(config.settings.tome.show_grid_lines)))
self.c_list:drawItem(item)
if self:isTome() then game:createMapGridLines() end
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Выбор шрифта. Фэнтези установлен по умолчанию. Базовый выглядит проще и меньше.\nДля вступления изменений в силу, требуется перезапустить игру."}
listPopup("Стиль шрифта", "Выбрать шрифт", list, 300, 200, function(sel)
if not sel or not sel.id then return end
game:saveSettings("tome.fonts", ("tome.fonts = { type = %q, size = %q }\n"):format(sel.id, config.settings.tome.fonts.size))
config.settings.tome.fonts.type = sel.id
self.c_list:drawItem(item)
end)
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Выбор размера шрифта.\nДля вступления изменений в силу, требуется перезапустить игру.."}
listPopup("Размер шрифта", "Выбрать размер", {{name="Средний", size="normal"},{name="Малый", size="small"},{name="Большой", size="big"},}, 300, 200, function(sel)
if not sel or not sel.size then return end
game:saveSettings("tome.fonts", ("tome.fonts = { type = %q, size = %q }\n"):format(config.settings.tome.fonts.type, sel.size))
config.settings.tome.fonts.size = sel.size
self.c_list:drawItem(item)
end)
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Количество секунд, прежде чем строки чата и лога начнут исчезать.\nЕсли выбрать 0, то они никогда не исчезнут."}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Время исчезновения лога#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.log_fade)
end, fct=function(item)
game:registerDialog(GetQuantity.new("Назначить время (в секундах)", "От 0 до 20", config.settings.tome.log_fade, 20, function(qty)
qty = util.bound(qty, 0, 20)
game:saveSettings("tome.log_fade", ("tome.log_fade = %d\n"):format(qty))
config.settings.tome.log_fade = qty
if self:isTome() then
game.uiset.logdisplay:enableFading(config.settings.tome.log_fade)
profile.chat:enableFading(config.settings.tome.log_fade)
end
self.c_list:drawItem(item)
end, 0))
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Количество времени, которое будут отображаться сообщения на экране.\nМожно выбрать от 1 (очень быстро) до 100 (в 10 раз дольше чем нормальная длительность), так же зависит от конкретного сообщения."}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Длительность сообщений на экране#WHITE##{normal}#", status=function(item)
return tostring((config.settings.tome.flyers_fade_time or 10) )
end, fct=function(item)
game:registerDialog(GetQuantity.new("Относительная продолжительность", "От 1 до 100", (config.settings.tome.flyers_fade_time or 10), 100, function(qty)
qty = util.bound(qty, 1, 100)
config.settings.tome.flyers_fade_time = qty
game:saveSettings("tome.flyers_fade_time", ("tome.flyers_fade_time = %d\n"):format(qty))
self.c_list:drawItem(item)
end, 1))
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Использовать иконки статусов вместо текста.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Иконки статусов#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.effects_icons and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.effects_icons = not config.settings.tome.effects_icons
game:saveSettings("tome.effects_icons", ("tome.effects_icons = %s\n"):format(tostring(config.settings.tome.effects_icons)))
if self:isTome() then game.player.changed = true end
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Использовать иконки на панели навыков вместо текста.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Иконки на панели навыков#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.hotkey_icons and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.hotkey_icons = not config.settings.tome.hotkey_icons
game:saveSettings("tome.hotkey_icons", ("tome.hotkey_icons = %s\n"):format(tostring(config.settings.tome.hotkey_icons)))
if self:isTome() then game.player.changed = true game:resizeIconsHotkeysToolbar() end
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Количество строк, отображаемых на панели навыков.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Строки на панели навыков#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.hotkey_icons_rows)
end, fct=function(item)
game:registerDialog(GetQuantity.new("Количество строк", "От 1 до 4", config.settings.tome.hotkey_icons_rows, 4, function(qty)
qty = util.bound(qty, 1, 4)
game:saveSettings("tome.hotkey_icons_rows", ("tome.hotkey_icons_rows = %d\n"):format(qty))
config.settings.tome.hotkey_icons_rows = qty
if self:isTome() then game:resizeIconsHotkeysToolbar() end
self.c_list:drawItem(item)
end, 1))
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"При использовании чего либо с панели навыков клавиатурой или мышкой, будет отображаться визуальное оповещение.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Визуальное отображение#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.visual_hotkeys and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.visual_hotkeys = not config.settings.tome.visual_hotkeys
game:saveSettings("tome.visual_hotkeys", ("tome.visual_hotkeys = %s\n"):format(tostring(config.settings.tome.visual_hotkeys)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Если кто либо использует талант, то у него над головой на миг отобразится иконка и название таланта.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Отображение использованного таланта#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.talents_flyers and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.talents_flyers = not config.settings.tome.talents_flyers
game:saveSettings("tome.talents_flyers", ("tome.talents_flyers = %s\n"):format(tostring(config.settings.tome.talents_flyers)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Размер иконок на панели навыков.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Размер иконок на панели навыков#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.hotkey_icons_size)
end, fct=function(item)
game:registerDialog(GetQuantity.new("Размер иконок", "От 32 до 64", config.settings.tome.hotkey_icons_size, 64, function(qty)
qty = util.bound(qty, 32, 64)
game:saveSettings("tome.hotkey_icons_size", ("tome.hotkey_icons_size = %d\n"):format(qty))
config.settings.tome.hotkey_icons_size = qty
if self:isTome() then game:resizeIconsHotkeysToolbar() end
self.c_list:drawItem(item)
end, 32))
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Если выключено, то информацию в записях вы увидите только 1 раз при получении записи.\nПри включении, информация будет отображаться каждому новому персонажу.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Всегда показывать информацию в записях#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.lore_popup and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.lore_popup = not config.settings.tome.lore_popup
game:saveSettings("tome.lore_popup", ("tome.lore_popup = %s\n"):format(tostring(config.settings.tome.lore_popup)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Если выключено, то предметы с активируемым свойством не будут автоматически добавляться на панель навыков, вам придётся вручную перетаскивать их на панель.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Всегда добавлять вещи на панель навыков#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.auto_hotkey_object and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.auto_hotkey_object = not config.settings.tome.auto_hotkey_object
game:saveSettings("tome.auto_hotkey_object", ("tome.auto_hotkey_object = %s\n"):format(tostring(config.settings.tome.auto_hotkey_object)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString[[Переключение между отображением различных тактических данных:
- Отображения полоски здоровья и небольших тактических рамок
- Отображение полоски здоровья и больших тактических рамок
- Только полоска здоровья
- Не оторажать тактическую информацию
#{italic}#Вы можете переключать режимы прямо в игре нажатием shift+н.#{normal}##WHITE#]]}
listPopup("Тактическое отображение", "Выбрать режим отображения", {
{name="Здоровье и небольшая рамка", mode=true},
{name="Здоровье и большая рамка", mode="old"},
{name="Только здоровье", mode="health"},
{name="Ничего", mode=nil},
}, 300, 200, function(sel)
if not sel then return end
game:setTacticalMode(sel.mode)
self.c_list:drawItem(item)
end)
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Переключение между обычными и помеченными полосками ресурсов.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Помеченные полоски ресурсов#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.flagpost_tactical and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.flagpost_tactical = not config.settings.tome.flagpost_tactical
game:saveSettings("tome.flagpost_tactical", ("tome.flagpost_tactical = %s\n"):format(tostring(config.settings.tome.flagpost_tactical)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Переключение между отображением здоровья сбоку и снизу.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Отображение полоски здоровья#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.small_frame_side and "Сбоку" or "Снизу")
end, fct=function(item)
config.settings.tome.small_frame_side = not config.settings.tome.small_frame_side
game:saveSettings("tome.small_frame_side", ("tome.small_frame_side = %s\n"):format(tostring(config.settings.tome.small_frame_side)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Если выключено, вы не будете получать визуальное оповещение на весь экран об эффектах оглушения/ошеломления. Берегитесь.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Оповещение об оглушении/ошеломлении#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.fullscreen_stun and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.fullscreen_stun = not config.settings.tome.fullscreen_stun
game:saveSettings("tome.fullscreen_stun", ("tome.fullscreen_stun = %s\n"):format(tostring(config.settings.tome.fullscreen_stun)))
self.c_list:drawItem(item)
if self:isTome() then if game.player.updateMainShader then game.player:updateMainShader() end end
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Если выключено, вы не будете получать визуальное оповещение на весь экран об эффекте путаницы. Берегитесь.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Оповещение о путанице#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.fullscreen_confusion and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.fullscreen_confusion = not config.settings.tome.fullscreen_confusion
game:saveSettings("tome.fullscreen_confusion", ("tome.fullscreen_confusion = %s\n"):format(tostring(config.settings.tome.fullscreen_confusion)))
self.c_list:drawItem(item)
if self:isTome() then if game.player.updateMainShader then game.player:updateMainShader() end end
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Переключение между обычным и развёрнутым описанием оружия.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Развёрнутое описание оружия#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.advanced_weapon_stats and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.advanced_weapon_stats = not config.settings.tome.advanced_weapon_stats
game:saveSettings("tome.advanced_weapon_stats", ("tome.advanced_weapon_stats = %s\n"):format(tostring(config.settings.tome.advanced_weapon_stats)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Когда вы делаете жест мышкой (правый клик + движение в сторону) остаётся цветная линия на экране.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Отображение цветных линий при жестах мышью#WHITE##{normal}#", status=function(item)
return tostring(config.settings.hide_gestures and "Выключено" or "Включено")
end, fct=function(item)
config.settings.hide_gestures = not config.settings.hide_gestures
game:saveSettings("hide_gestures", ("hide_gestures = %s\n"):format(tostring(config.settings.hide_gestures)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Если включено, оповещение о новых и обновившихся заданиях будет отображаться в большом окне по центру экрана. Если выключено то будет лишь небольшая надпись на экране.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Большое оповещение о заданиях#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.quest_popup and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.quest_popup = not config.settings.tome.quest_popup
game:saveSettings("tome.quest_popup", ("tome.quest_popup = %s\n"):format(tostring(config.settings.tome.quest_popup)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Определяет, при какой дистанции от вашего персонажа до края экрана начинается перемещение камеры. При выборе высоких значений, камера будет двигаться с каждым движение персонажа.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Дистанция прокрутки#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.scroll_dist)
end, fct=function(item)
game:registerDialog(GetQuantity.new("Дистанция прокрутки", "От 1 до 50", config.settings.tome.scroll_dist, 50, function(qty)
qty = util.bound(qty, 1, 50)
game:saveSettings("tome.scroll_dist", ("tome.scroll_dist = %d\n"):format(qty))
config.settings.tome.scroll_dist = qty
self.c_list:drawItem(item)
end, 1))
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включить или отключить эффекты смены погоды на некоторых локациях.\nОтключение данной опции может повысить производительность. Изменения не работают в ранее разведанных локациях.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Эффекты погоды#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.weather_effects and "Включены" or "Выключены")
end, fct=function(item)
config.settings.tome.weather_effects = not config.settings.tome.weather_effects
game:saveSettings("tome.weather_effects", ("tome.weather_effects = %s\n"):format(tostring(config.settings.tome.weather_effects)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включить или отключить эффекты смены времени суток..#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Смена дня и ночи#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.daynight and "Включена" or "Выключена")
end, fct=function(item)
config.settings.tome.daynight = not config.settings.tome.daynight
game:saveSettings("tome.daynight", ("tome.daynight = %s\n"):format(tostring(config.settings.tome.daynight)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включено передвижение при клике левой кнопкой мыши по карте.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Использовать мышь для передвижения#WHITE##{normal}#", status=function(item)
return tostring(config.settings.mouse_move and "Включено" or "Выключено")
end, fct=function(item)
config.settings.mouse_move = not config.settings.mouse_move
game:saveSettings("mouse_move", ("mouse_move = %s\n"):format(tostring(config.settings.mouse_move)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включён быстрый выбор цели в ближнем бою.\nТаланты ближнего боя будут сразу использоваться при выборе направления атаки.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Быстрый выбор цели в ближнем бою#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.immediate_melee_keys and "Включён" or "Выключен")
end, fct=function(item)
config.settings.tome.immediate_melee_keys = not config.settings.tome.immediate_melee_keys
game:saveSettings("tome.immediate_melee_keys", ("tome.immediate_melee_keys = %s\n"):format(tostring(config.settings.tome.immediate_melee_keys)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включён быстрый выбор цели и атака по ней.\nТаланты ближнего боя будут сами находить цель и проводить атаку по ней, но только если всего одна враждебная цель находится возле вас.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Быстрый выбор цели в ближнем бою и атака по ней#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.immediate_melee_keys_auto and "Включён" or "Выключен")
end, fct=function(item)
config.settings.tome.immediate_melee_keys_auto = not config.settings.tome.immediate_melee_keys_auto
game:saveSettings("tome.immediate_melee_keys_auto", ("tome.immediate_melee_keys_auto = %s\n"):format(tostring(config.settings.tome.immediate_melee_keys_auto)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Включено прицеливание мышью. Если выключено, то движения мыши не будут менять цель ваших заклинаний и талантов.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Прицеливание мышью#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.disable_mouse_targeting and "Выключено" or "Включено")
end, fct=function(item)
config.settings.tome.disable_mouse_targeting = not config.settings.tome.disable_mouse_targeting
game:saveSettings("tome.disable_mouse_targeting", ("tome.disable_mouse_targeting = %s\n"):format(tostring(config.settings.tome.disable_mouse_targeting)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Автоматическое подтверждение цели. Если вы проводите дальнюю атаку стрелой/талантом/... она будет сразу произведена на выбранную цель\n#LIGHT_RED#ОСТОРОЖНО! Не трогайте данную опцию, если не знаете что делаете.#WHITE#\n\nЦель для атаки выбирается так:\n - Последнее существо, на которое быба наведена мышь\n - Последнее атакованное существо\n - Ближайшее существо"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Автоматическое подтверждение цели#WHITE##{normal}#", status=function(item)
return tostring(config.settings.auto_accept_target and "Включено" or "Выключено")
end, fct=function(item)
config.settings.auto_accept_target = not config.settings.auto_accept_target
game:saveSettings("auto_accept_target", ("auto_accept_target = %s\n"):format(tostring(config.settings.auto_accept_target)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Новая игра начнётся с несколькими распределёнными очками талантов.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Автоматическое распределение талантов в новой игре#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.autoassign_talents_on_birth and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.autoassign_talents_on_birth = not config.settings.tome.autoassign_talents_on_birth
game:saveSettings("tome.autoassign_talents_on_birth", ("tome.autoassign_talents_on_birth = %s\n"):format(tostring(config.settings.tome.autoassign_talents_on_birth)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Всегда отдыхать до полного восстановления перед автоматическим исследованием.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Отдых перед автоматическим исследованием#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.rest_before_explore and "Включён" or "Выключен")
end, fct=function(item)
config.settings.tome.rest_before_explore = not config.settings.tome.rest_before_explore
game:saveSettings("tome.rest_before_explore", ("tome.rest_before_explore = %s\n"):format(tostring(config.settings.tome.rest_before_explore)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Когда меняется вещь с улучшением, то улучшение будет автоматически перемещено на новую вещь.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Менять улучшения#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.tinker_auto_switch and "enabled" or "disabled")
end, fct=function(item)
config.settings.tome.tinker_auto_switch = not config.settings.tome.tinker_auto_switch
game:saveSettings("tome.tinker_auto_switch", ("tome.tinker_auto_switch = %s\n"):format(tostring(config.settings.tome.tinker_auto_switch)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Настроить фильтр чата.#WHITE#"}
return "select to configure"
end
).new({
{name="Смерти", kind="death"},
{name="Ссылки на предметы и созданий", kind="link"},
}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Настроить чёрный список.#WHITE#"}
return "select to configure"
end
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Настройка каналов чата.#WHITE#"}
return "select to configure"
end
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Открытие ссылок во внешнем браузере вместо встроенного.\nЭто не относится к браузеру, скачивающему и устанавливающему аддоны, он всегда включается внутри игры."}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Открывать ссылки внешним браузером#WHITE##{normal}#", status=function(item)
return tostring(config.settings.open_links_external and "Включено" or "Выключено")
end, fct=function(item)
config.settings.open_links_external = not config.settings.open_links_external
game:saveSettings("open_links_external", ("open_links_external = %s\n"):format(tostring(config.settings.open_links_external)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Разрешить интеграцию с дискордом, для отображения вашего текущего профиля в статусе дискорда (требуется перезапуск игры).\n#ANTIQUE_WHITE#Если вы не используете дискорд, то данная опция не будет ничего делать."}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Интеграция с дискордом#WHITE##{normal}#", status=function(item)\d\a return tostring(not config.settings.disable_discord and "enabled" or "disabled")\d\a end, fct=function(item)\d\a config.settings.disable_discord = not config.settings.disable_discord\d\a game:saveSettings("disable_discord", ("disable_discord = %s\n"):format(tostring(config.settings.disable_discord)))\d\a self.c_list:drawItem(item)\d\a end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Позволить сохранить информацию о вашем персонаже (не сохранение с ним) в онлайн хранилище на te4.org.\nДля каждого персонажа будет создана специальная ссылка, по которой можно будет увидеть его героические свершения или же прискорбную смерть.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Загружать информацию о персонажах в онлайн хранилище#WHITE##{normal}#", status=function(item)\d\a return tostring(config.settings.upload_charsheet and "enabled" or "disabled")\d\a end, fct=function(item)\d\a config.settings.upload_charsheet = not config.settings.upload_charsheet\d\a game:saveSettings("tome.upload_charsheet", ("tome.upload_charsheet = %s\n"):format(tostring(config.settings.upload_charsheet)))\d\a self.c_list:drawItem(item)\d\a\d\a end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Позволяет участвовать в различных онлайн событиях\n#{bold}#Все#{normal}#: Разрешить все события\n#{bold}#Только тех. поддержка#{normal}#: Позволяет администратору помочь вам при возникновении различных проблем.\n#{bold}#Запретить#{normal}#: Запрещает любое вмешательство в игровой процесс.\n#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Разрешить онлайн события#WHITE##{normal}#", status=function(item)\d\a return tostring(config.settings.allow_online_events == true and "all" or (config.settings.allow_online_events == "limited" and "technical help only" or "disabled"))\d\a end, fct=function(item)\d\a if config.settings.allow_online_events == true then config.settings.allow_online_events = "limited"\d\a elseif config.settings.allow_online_events == "limited" then config.settings.allow_online_events = false\d\a else config.settings.allow_online_events = true end\d\a game:saveSettings("allow_online_events", ("allow_online_events = %s\n"):format(config.settings.allow_online_events == "limited" and "'limited'" or tostring(config.settings.allow_online_events)))\d\a self.c_list:drawItem(item)\d\a end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, scrollbar=true, text=string.toTString[[Отключиться от сервера.\d\aВлияет на:\d\a- Профиль: блокируется возможность входа и регистрации\d\a- Хранилище персонажей: Ваши персонажи не сохраняются в хранилище.\d\a- Хранилище предметов: блокируется возможность класть или забирать предметы из хранилища.\d\a- Игровой чат: для работы чата необходимо подключение к серверу, из-за его отсутствия чат не будет работать.\d\a- Привилегии купившим игру: Игра является бесплатной, а бонусы купивших её отображаются в профиле, из-за отсутствия связи с сервером они будут отключены.\d\a- Быстрая загрузка и установка аддонов: для аддонов необходима будет ручная установка.\d\a- Обновления: аддоны не смогут проверять наличие новых версий и проводить самообновление.\d\a- Дискорд: интеграция с дискордом будет недоступна при отсутствии связи с сервером.\d\a- Внутриигровые новости: новости не будут отображаться в игровом меню.\d\a\d\aЭта опция работает только внутри игры и не оказывает никакого влияния на лаунчер.\d\aЕсли вы не хотите и этого, тогда запустите игру напрямую.\d\a\d\a#{bold}##CRIMSON#Это очень ограничивающая опция, которую стоит применять только в крайних случаях, так как вы потеряете очень многое.\d\aДля применения настройки требуется перезайти в игру.#{normal}#]]}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Disable all connectivity#WHITE##{normal}#", status=function(item)\d\a return tostring(config.settings.disable_all_connectivity and "yes" or "no")\d\a end, fct=function(item)\d\a config.settings.disable_all_connectivity = not config.settings.disable_all_connectivity\d\a game:saveSettings("disable_all_connectivity", ("disable_all_connectivity = %s\n"):format(tostring(config.settings.disable_all_connectivity)))\d\a self.c_list:drawItem(item)\d\a end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Автоматическое сохранение, позволяет продолжать играть не отвлекаясь на сохранения.\n#LIGHT_RED#Отключение данной опции не рекомендуется.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Автоматическое сохранение#WHITE##{normal}#", status=function(item)
return tostring(config.settings.background_saves and "Включено" or "Выключено")
end, fct=function(item)
config.settings.background_saves = not config.settings.background_saves
game:saveSettings("background_saves", ("background_saves = %s\n"):format(tostring(config.settings.background_saves)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Игра будет сохранять каждый этаж, вместо сохранения в начале локации.\nСохранения будут происходить значительно чаще, но игра будет использовать значительно меньше памяти в глубине подземелья.\n\n#LIGHT_RED#Изменение данной опции не работает на уже посещённые локации.\n*ВНИМАНИЕ! ЭТА ОПЦИЯ НЕ ПРОИЗВОДИТ ПОЛНОЕ СОХРАНЕНИЕ КАЖДЫЙ ЭТАЖ*.\n#LIGHT_RED#Отключение данной опции не рекомендуется#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Сохранение на каждом этаже#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.save_zone_levels and "Включено" or "Выключено")
end, fct=function(item)
config.settings.tome.save_zone_levels = not config.settings.tome.save_zone_levels
game:saveSettings("tome.save_zone_levels", ("tome.save_zone_levels = %s\n"):format(tostring(config.settings.tome.save_zone_levels)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Отключить загрузку изображений, которые могут быть оскорбительными.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Цензура#WHITE##{normal}#", status=function(item)
return tostring(config.settings.censor_boot and "Включено" or "Выключено")
end, fct=function(item)
config.settings.censor_boot = not config.settings.censor_boot
game:saveSettings("censor_boot", ("censor_boot = %s\n"):format(tostring(config.settings.censor_boot)))
self.c_list:drawItem(item)
end,}
Textzone.new{width=self.c_desc.w, height=self.c_desc.h, text=string.toTString"Отображение шлема вместо капюшона плаща, если он одет.#WHITE#"}
list[#list+1] = { zone=zone, name=string.toTString"#GOLD##{bold}#Отобразить накидку#WHITE##{normal}#", status=function(item)
return tostring(config.settings.tome.show_cloak_hoods and "enabled" or "disabled")
end, fct=function(item)
config.settings.tome.show_cloak_hoods = not config.settings.tome.show_cloak_hoods
game:saveSettings("tome.show_cloak_hoods", ("tome.show_cloak_hoods = %s\n"):format(tostring(config.settings.tome.show_cloak_hoods)))
self.c_list:drawItem(item)
if self:isTome() and game.level then
for uid, e in pairs(game.level.entities) do
if e.updateModdableTile then e:updateModdableTile() end
end
end
end,}
file/game/modules/tome.team/mod/dialogs/GraphicMode.lua.txt
tiles_packs = {
shockbolt = {name= "Современная", order=1},
ascii = {name= "Текстовая", order=5},
ascii_full = {name= "Текстовая с задним фоном", order=6},
customtiles = {name= "Custom Tileset", order=7},
}
Dialog.init(self, "Сменить графический режим", 300, 20)
Dialog.new("Пользовательская графика", 100, 100)
text=[[Вы можете использовать собственную графику в игре.
Для этого поместите её в папку modules, находящуюся в папке с игрой по адресу data/gfx/.
Каждая картинка должна быть корректно названа, в соответствии с уже существующими.]]
title="Папка: "
title="Используется изменённая графика (экипировка будет отображаться на персонаже)"
title="Используется улучшенная графика (границы, увеличенные клетки, ...)"
text="Использовать пользовательскую графику"
text="Отмена"
GetQuantity.new("Размер клетки", "От 10 до 128", Map.tile_w or 64, 128, function(qty)
qty = math.floor(util.bound(qty, 10, 128))
self:use{name=qty.."x"..qty, sub=item.sub, val=qty.."x"..qty}
end, 10)
list = {
{name="Выбрать стиль [текущий: "..(cur and cur.name or "???").."]", change_sel="tiles"},
{name="Выбрать размер клетки [текущий: "..config.settings.tome.gfx.size.."]", change_sel="size"},
}
list[#list+1] = {name=n.name, order=n.order, sub="tiles", val=s}
list = {
{name="64x64", sub="size", val="64x64"},
{name="48x48", sub="size", val="48x48"},
{name="32x32", sub="size", val="32x32"},
{name="16x16", sub="size", val="16x16"},
{name="Другое", sub="size", val="customsize"},
}
file/game/modules/tome.team/mod/dialogs/LevelupDialog.lua.txt
Dialog.init(self, "Уровень повышен: "..actor.name, game.w * 0.9, game.h * 0.9, game.w * 0.05, game.h * 0.05)
simpleLongPopup("Невозможно", "Вы не можете изучить этот талант: "..dep_miss, game.w * 0.4)
print("Talent deps: ", t.id, "depends on", tid[1])
print("Talent deps: ", t.id, "depends on", tid)
print("Talent deps: ", t.id, "same category as", id)
simpleLongPopup("Невозможно", "Вы не можете забыть этот талант, так как, талант(ы): "..dep_miss, game.w * 0.4)
simplePopup("Слишком низкий уровень", ("Данное дерево талантов требует %d уровень персонажа. Открытие этой ветки сейчас не имеет смысла."):format(self.actor.talents_types_def[tt].min_lev))
simpleLongPopup("Невозможно", "Вы не можете забыть данную категорию, так как: "..dep_miss, game.w * 0.4)
local desc_stats = ([[Очки характеристик используются для повышения ваших основных характеристик.
С каждым уровнем вы получаете 3 новых очка характеристик.
С помощью очков вы можете повышать основные характеристики до 60 или ниже (зависит от текущего уровня).]])
local desc_class = ([[Очки классовых талантов позволяют изучить новые таланты или улучшить имеющиеся.
Классовые таланты принадлежащие вашему классу не могут быть изучены путём тренировок.
Каждый уровень даёт 1 очко классовых талантов.
Каждые 5 уровней вы получаете на одно очко больше.
]])
local desc_generic = ([[Общие очки талантов позволяют изучать и улучшать таланты из общей ветки.
Общие таланты зависят от вашей расы, класса и различных тренировок, которые вы можете пройти во время странствий.
Каждый уровень вы получаете 1 очко общих талантов.
Каждые 5 уровней вы не получаете общих очков талантов.
]])
local desc_types = ([[Очко категорий может быть потрачено на:
- Изучение новой ветки классовых или общих талантов.
- Повышение эффективности уже изученной ветки на 0.2
- Повышение максимального количества усилений (максимум 5 штук)
Вы получаете по очку категорий на 10, 20 и 36.
Некоторые расы и предметы так же могут увеличить их количество.]])
local desc_prodigies = ([[Дары - это особые таланты, которые могут изучить только действительно сильные персонажи.
Для каждого из них требуется не менее 50 очков в одной из характеристик, а также выполнение определённых условий. Вы можете изучить новые дары на 30 и 42 уровне.]])
local desc_inscriptions = ([[Вы можете использовать очко категорий для увеличения максимально количества усилений (до 5 штук).]])
text="Дары"
text="Усиления"
simplePopup("Усиления", "У вас максимальное количество усилений.")
self.b_types.text = "Очки категорий: "
simplePopup("Усиления", ("Вы можете увеличить максимальное количество усилений ещё на %d, но для этого требуется очко категорий."):format(2 - self.actor.inscriptions_slots_added))
text="Хар-ки: "
text="Классовые очки: "
text="Общие очки: "
text="Очки категорий: "
title="Спрятать не изученные категории"
text:add("Текущие значение: ", {"color", "LIGHT_GREEN"}, ("%d"):format(self.actor:getStat(stat_id)), dc, true)
text:add("Базовое значение: ", {"color", "LIGHT_GREEN"}, ("%d"):format(self.actor:getStat(stat_id, nil, nil, true)), dc, true, true)
text:add({"color", "LIGHT_BLUE"}, "Характеристика повышает:", dc, true)
text:add("Максимум здоровья: ", color, ("%0.2f"):format(diff * multi_life), dc, true)
text:add("Физическое сопротивление: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Модификатор лечения: ", color, ("%0.1f%%"):format((self.actor:combatStatLimit("con", 1.5, 0, 0.5) - self.actor_dup:combatStatLimit("con", 1.5, 0, 0.5))*100), dc, true)
text:add("Максимум маны: ", color, ("%0.2f"):format(diff * multi_mana), dc, true)
text:add("Максимум выносливости: ", color, ("%0.2f"):format(diff * multi_stamina), dc, true)
text:add("Максимум пси: ", color, ("%0.2f"):format(diff * multi_psi), dc, true)
text:add("Сила разума: ", color, ("%0.2f"):format(diff * 0.7), dc, true)
text:add("Ментальное сопротивление: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Сопротивление заклинаниям: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Точность: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Физическая сила: ", color, ("%0.2f"):format(diff), dc, true)
text:add("Максимальная переносимость: ", color, ("%0.2f"):format(diff * 1.8), dc, true)
text:add("Физическое сопротивление: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Шанс на крит.: ", color, ("%0.2f"):format(diff * 0.3), dc, true)
text:add("Ментальное сопротивление: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Сила разума: ", color, ("%0.2f"):format(diff * 0.4), dc, true)
text:add("Точность: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Сопротивление заклинаниям: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Сила заклинаний: ", color, ("%0.2f"):format(diff * 1), dc, true)
text:add("Защита: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Уворот от дальних атак: ", color, ("%0.2f"):format(diff * 0.35), dc, true)
text:add("Точность: ", color, ("%0.2f"):format(diff), dc, true)
text:add("Шанс избежать крит. атаки: ", color, ("%0.2f%%"):format(diff * 0.3), dc, true)
text:add({"color", "LIGHT_BLUE"}, "Классовая особенность:", dc, true)
text:add({"color", "GOLD"}, {"font", "bold"}, util.getval(item.rawname, item), {"color", "LAST"}, {"font", "normal"})
text:add({"color",0x00,0xFF,0xFF}, "Талант категорий", true)
text:add({"color",0x00,0xFF,0xFF}, "Очки категорий могут быть использованы для изучения новых веток талантов или улучшения изученных. Вы получаете новые очки талантов на 10, 20 и 36 уровне. Где-то в мире можно найти учителей и артефакты, которые позволят вам изучить больше.", true, true, {"color", "WHITE"})
text:add({"color",0x00,0xFF,0xFF}, "Дерево общих талантов", true)
text:add({"color",0x00,0xFF,0xFF}, "Общие таланты позволяют выполнять различные полезные действия и усиливать вашего персонажа. Многие из них могут быть изучены в разных уголках мира (если найдёте тренера или артефакт для этого). Вы получаете по 1 очку общих талантов каждый уровень (кроме каждого 5го).", true, true, {"color", "WHITE"})
text:add({"color",0x00,0xFF,0xFF}, "Ветка классовых талантов", true)
text:add({"color",0x00,0xFF,0xFF}, "Классовые таланты позволяют выполнять новые боевые приёмы, создавать заклинания и усиливать вашего персонажа. Они представляют из себя \"ядро\" вашего класса. Вы получаете по 1 очку каждый уровень и по 2 каждые 5 уровней.", true, true, {"color", "WHITE"})
text:add({"color","LIGHT_BLUE"}, "Данный талант уже изучен, но вы всё ещё можете забыть его.", true, "Последний ", max, t.generic and " общий" or " классовый", " изученный талант нельзя забыть.", {"color","LAST"}, true, true)
text:add({"color","YELLOW"}, "Данный талант изменит ваш мир навсегда, после чего он не может быть забыт.", {"color","LAST"}, true, true)
text:add({"color","LIGHT_BLUE"}, "Данный талант уже изучен, но вы всё ещё можете забыть его, для этого требуется безопасном месте, например в #{bold}#городе#{normal}#.", true, "Последний ", max, t.generic and " общий" or " классовый", " изученный талант нельзя забыть.", {"color","LAST"}, true, true)
res:add({"color", "LIGHT_GREEN"}, i1, {"color", "LAST"}, " [->", {"color", "YELLOW_GREEN"}, i2, {"color", "LAST"}, "]")
text:add{"color","WHITE"}
text:add({"font", "bold"}, "Первый уровень таланта: ", tostring(traw+1), {"font", "normal"})
text:add{"color","WHITE"}
text:add({"font", "bold"}, traw == 0 and "Следующий уровень таланта" or "Текущий уровень таланта: ", tostring(traw), " [-> ", tostring(traw + 1), "]", {"font", "normal"})
text:add({"font", "bold"}, "Текущий уровень таланта: "..traw, {"font", "normal"})
self.b_stat.text = "Хар-ки: "
self.b_class.text = "Очки класса: "
self.b_generic.text = "Общие очки: "
self.b_types.text = "Очки категорий: "
file/game/modules/tome.team/mod/dialogs/LorePopup.lua.txt
Dialog.init(self, "Найдено знание: #0080FF#"..l.name, 1, 1)
file/game/modules/tome.team/mod/dialogs/MapMenu.lua.txt
list[#list+1] = {name="Сменить уровень", action="change_level", color=colors.simple(colors.VIOLET)}
list[#list+1] = {name="Поднять предмет", action="pickup", color=colors.simple(colors.ANTIQUE_WHITE)}
list[#list+1] = {name="Идти к", action="move_to", color=colors.simple(colors.ANTIQUE_WHITE)}
list[#list+1] = {name="Контроль", action="control", color=colors.simple(colors.TEAL), actor=a}
list[#list+1] = {name="Отдать приказ", action="order", color=colors.simple(colors.TEAL), actor=a}
list[#list+1] = {name="Цель: игрок", action="target-player", color=colors.simple(colors.RED), actor=a}
list[#list+1] = {name="Lua inspect [Actor]", action="debug-inspect", color=colors.simple(colors.LIGHT_BLUE), actor=a}
list[#list+1] = {name="Lua inspect [Terrain]", action="debug-inspect", color=colors.simple(colors.LIGHT_BLUE), actor=g}
list[#list+1] = {name="Lua inspect [Trap]", action="debug-inspect", color=colors.simple(colors.LIGHT_BLUE), actor=t}
list[#list+1] = {name="Lua inspect [Projectile]", action="debug-inspect", color=colors.simple(colors.LIGHT_BLUE), actor=p}
list[#list+1] = {name="Показать инвентарь", action="debug-inventory", color=colors.simple(colors.YELLOW), actor=a}
list[#list+1] = {name="Отдохнуть", action="rest", color=colors.simple(colors.ANTIQUE_WHITE)}
list[#list+1] = {name="Авто-исследования", action="autoexplore", color=colors.simple(colors.ANTIQUE_WHITE)}
list[#list+1] = {name="Инвентарь", action="inventory", color=colors.simple(colors.ANTIQUE_WHITE)}
list[#list+1] = {name="Журнал заданий", action="quests", color=colors.simple(colors.ANTIQUE_WHITE)}
list[#list+1] = {name="Осмотреть существо", action="character_sheet", color=colors.simple(colors.ANTIQUE_WHITE), actor=a}
list[#list+1] = {name="Отправить ссылку на существо в чат", action="chat-link"}
list[#list+1] = {name="Поднять уровень!", action="levelup", color=colors.simple(colors.YELLOW)}
file/game/modules/tome.team/mod/dialogs/OptionTree.lua.txt
game:registerDialog(
require('engine.dialogs.GetQuantity').new(
t.display_name or t.name,
('[%d-%d]'):format(t.min, t.max),
config.settings.tome[t.id],
max, assign, min))
file/game/modules/tome.team/mod/dialogs/orders/Behavior.lua.txt
engine.ui.Dialog.init(self, "Выбрать поведение: "..actor.name, 1, 1)
game.logPlayer(game.player, "%s поведение изменено на %s.", self.actor.name:capitalize(), item.set)
list = {
{name="По-умолчанию", set="default"},
{name="Ближний", set="melee"},
{name="Дальний", set="ranged"},
{name="Танк", set="tank"},
{name="Стоять на месте", set="standby"},
}
file/game/modules/tome.team/mod/dialogs/orders/Talents.lua.txt
Dialog.init(self, "Выберите условие использования таланта", math.max(800, game.w * 0.8), math.max(600, game.h * 0.8))
text=([[
%s внимательно слушает и хочет узнать, какие таланты надо использовать.
Вы можете изменять тактическую ценность разных талантов, понижая или повышая её. При изменении ценности таланта до 0, он не будет использоваться. Если изменить ценность всех талантов до 2, то ничего не изменится.
Услышав ваш приказ, %s и все другие призванные существа того же вида запомнят его и будут ему следовать.
]])
ListColumns.new{width=halfwidth, height=self.ih - 10, sortable=true, scrollbar=true, columns={
{name="", width={20,"fixed"}, display_prop="char", sort="id"},
{name="Название таланта", width=72, display_prop="name", sort="name"},
{name="Вес", width=20, display_prop="multiplier", sort="multiplier"},
}, list={}, fct=function(item) self:use(item) end, select=function(item, sel) self:select(item) end}
GetQuantity.new("Введите значимость таланта", "0 отменяет его применение, 1 стандартное значение", item.multiplier, nil, function(qty)
self.actor.ai_talents[item.tid] = qty
self:generateList()
end)
file/game/modules/tome.team/mod/dialogs/PartyOrder.lua.txt
return "Подожди несколько ходов" end
return "Где же портал?" end
return ("Выбрать цель [текущая: %s]"):format(actor.ai_target.actor and actor.ai_target.actor.name or "none") end
return ("Выбрать поведение [текущее: %s]"):format(actor.ai_tactic.type or "default") end
return ("Выберите цель привязки [текущая: %s]"):format(actor.ai_state.tactic_leash_anchor and actor.ai_state.tactic_leash_anchor.name or "none") end
return ("Выбрать дистанцию привязки [текущая: %d]"):format(actor.ai_state.tactic_leash) end
return ("Выберите условие использования таланта") end
engine.ui.Dialog.init(self, "Приказы: "..actor.name, 1, 1)
file/game/modules/tome.team/mod/dialogs/PartySelect.lua.txt
engine.ui.Dialog.init(self, "Какую модель поведения выбрать?", 1, 1)
file/game/modules/tome.team/mod/dialogs/PartySendItem.lua.txt
engine.ui.Dialog.init(self, "Дать предмет сопартийцу", 1, 1)
game.log("%s не может поднимать вещи пока спит!", item.actor.name:capitalize())
game.log("%s не может передавать вещи пока спит!", self.source.name:capitalize())
game.log("Вы передаёте %s %s(у).", self.o:getName{do_color=true}, item.actor.name)
file/game/modules/tome.team/mod/dialogs/QuestPopup.lua.txt
text="#ANTIQUE_WHITE#Задание: #AQUAMARINE#"
Textzone.new{auto_width=true, auto_height=true, text=add..'#ANTIQUE_WHITE#(С подробностями можно ознакомиться в вашем журнале или нажав сюда)', font={f, math.ceil(fs)}}
text="#cc9f33#"
file/game/modules/tome.team/mod/dialogs/SentientWeapon.lua.txt
print("Incoming factory settings:", self.o.factory_settings.dam)
print("Incoming factory setting mins:", self.o.factory_settings.mins.dam)
print("Incoming factory setting maxes:", self.o.factory_settings.maxes.dam)
text=[[
Клавиатура: #00FF00#кнопка вверх/кнопка вниз#FFFFFF# для выбора характеристики; #00FF00#кнопка вправо#FFFFFF# для повышения; #00FF00#кнопка влево#FFFFFF# для понижения.
Мышь: #00FF00#Левая кнопка мыши#FFFFFF# для повышения характеристики; #00FF00#правая кнопка мыши#FFFFFF# для понижения характеристики.
]]
ListColumns.new{width=math.floor(self.iw - 10), height=self.ih - 10, all_clicks=true, columns={
{name="Стат", width=70, display_prop="name"},
{name="Value", width=30, display_prop="val"},
}, list={
{name="Сила заклинаний", val=self.o.wielder.combat_spellpower, stat_id = "combat_spellpower", delta = 3},
{name="Spellcrit", val=self.o.wielder.combat_spellcrit, stat_id = "combat_spellcrit", delta = 1},
--{name="Critical power", val=self.o.combat.critical_power, stat_id = "critical_power", delta = 0.1},
--{name="Maximum hit chance", val=self.o.combat.max_acc, stat_id = "max_acc", delta = 5},
--{name="Сила", val=self.actor:getStr(), stat_id=self.actor.STAT_STR},
--{name="Ловкость", val=self.actor:getDex(), stat_id=self.actor.STAT_DEX},
--{name="Магия", val=self.actor:getMag(), stat_id=self.actor.STAT_MAG},
--{name="Сила воли", val=self.actor:getWil(), stat_id=self.actor.STAT_WIL},
--{name="Хитрость", val=self.actor:getCun(), stat_id=self.actor.STAT_CUN},
--{name="Телосложение", val=self.actor:getCon(), stat_id=self.actor.STAT_CON},
}, fct=function(item, _, v)
self:incStat(v == "left" and 1 or -1, item.stat_id)
--end, select=function(item, sel) self.sel = sel self.c_desc:switchItem(item, self.actor.stats_def[item.stat_id].description) end}
game.logPlayer(game.player, "Только что выбран %s", sel)
game.logPlayer(game.player, "Только что выбран %s", item.stat_id)
game.logPlayer(self.actor, "#LIGHT_BLUE#Внимание: Вы повысили некоторые из своих характеристик. Талант %s сейчас поддерживается; если он зависит от ваших характеристик, то требуется отключить и активировать его снова, чтоб изменения вступили в силу.", t.name)
print("inside incStat. self.sel is", self.sel)
print("inside incStat. id is", self.id)
simplePopup("Недостаточно очков характеристик", "Нет свободных очков характеристик!")
print(self.o.wielder[id] or "false", self.o.factory_settings.maxes[id] or "false")
simplePopup("Характеристика достигла максимума", "Вы не можете поднять её выше!")
print(self.o.wielder[id] or "false", self.o.factory_settings.mins[id] or "false")
simplePopup("Невозможно", "Вы не можете сбросить больше очков!")
simplePopup("Невозможно", "Вы не можете сбросить больше очков!")
drawColorStringBlended(self.font, "Очков характеристик осталось: #00FF00#"..self.actor.unused_stats, 2, 2)
file/game/modules/tome.team/mod/dialogs/Shimmer.lua.txt
Dialog.init(self, "Цветовой предмет: "..oname, 680, 500)
text="Вы можете измениться "
yesnoPopup("Косметическая опция спонсора", "Эта косметическая опция доступна только купившим игру или пожертвовавшим на её развитие.", function(ret) if ret then
game:registerDialog(require("mod.dialogs.Donation").new("shimmer ingame"))
end end, "Пожертвовать", "Отмена")
list[#list+1] = {
moddables = {},
name = "#GREY#[Невидимость]",
sortname = "--",
}
file/game/modules/tome.team/mod/dialogs/ShowAchievements.lua.txt
desc="-- Неизвестно --"
desc="-- Неизвестно --"
file/game/modules/tome.team/mod/dialogs/ShowChatLog.lua.txt
title="Игровой лог"
list = {
{name="Показать информацию", ui="show"},
{name="Шепнуть", ui="whisper"},
{name="Игнорировать", ui="ignore"},
{name="Открыть профиль(в браузере)", ui="profile"},
{name="Сообщить о плохом поведении", ui="report"}
}
yesnoPopup("Игнорировать", "Вы уверены, что хотите игнорировать все сообщения от: "..citem.login, function(ret) if ret then profile.chat:ignoreUser(citem.login) end end)
).new("Reason to report: "
game.log("#VIOLET#", "Report sent.")
file/game/modules/tome.team/mod/dialogs/ShowEquipInven.lua.txt
print("[ShowEquipInven] initiating inventory INVEN_INVEN for", inven_actor.name, inven_actor.uid)
Dialog.init(self, title or "Инвентарь", math.max(800, game.w * 0.8), math.max(600, game.h * 0.8))
title="Основной набор"
title="Дополнительный набор"
Inventory.new{actor=inven_actor, inven=inven_actor:getInven("INVEN") or {}, width=self.iw - vsep.w - self.c_doll.w, height=self.ih - 10, filter=filter,
default_last_tabs = "all",
fct=function(item, sel, button, event) self:use(item, button, event) end,
select=function(item, sel) self:select(item) end,
select_tab=function(item) self:select(item) end,
on_drag=function(item) self:onDrag(item) end,
on_drag_end=function() self:onDragTakeoff() end,
special_bg=function(item) if item.object and item.object.__transmo then return colors.GOLD end end,
}
game.log("Подсказка %s", game.tooltip.locked and "блокировано" or "разблокировано")
game.log("up")
simplePopup("Нет инвентаря", self.inven_actor.name:capitalize().." Не имеет собственного инвентаря")
simplePopup("Кнопка "..id.." назначена", item.object:getName{no_add_name=true, no_count=true}:capitalize().." assigned to hotkey "..id)
file/game/modules/tome.team/mod/dialogs/ShowEquipment.lua.txt
Dialog.init(self, title or "Экипировка", math.max(800, game.w * 0.8), math.max(600, game.h * 0.8))
title="Основной набор"
title="Дополнительный набор"
file/game/modules/tome.team/mod/dialogs/ShowIngredients.lua.txt
Dialog.init(self, "Собранные ингредиенты", game.w * 0.8, game.h * 0.8)
ListColumns.new{width=math.floor(self.iw / 2 - vsep.w / 2), height=self.ih - 10, scrollbar=true, sortable=true, columns={
{name="Ингредиент", width=50, display_prop="name", sort="name"},
{name="Категория", width=30, display_prop="cat", sort="cat"},
{name="Количество", width=20, display_prop="nb", sort="nb"},
}, list=self.list, fct=function(item) end, select=function(item, sel) self:select(item) end}
list[#list+1] = { dname=d.name, name=d.display_entity:getDisplayString(true):add(d.name), desc=util.getval(d.desc), cat=d.type, nb=nb==-1 and "инф." or tostring(nb) }
self.c_desc:switchItem(item, ("#GOLD#Категория:#AQUAMARINE# %s\n#GOLD#Ингредиент:#0080FF# %s\n#GOLD#Количество:#0080FF# %s\n#GOLD#Описание:#ANTIQUE_WHITE# %s"):format(item.cat, item.name:toString(), item.nb, item.desc))
file/game/modules/tome.team/mod/dialogs/ShowInventory.lua.txt
Dialog.init(self, title or "Инвентарь", math.max(800, game.w * 0.8), math.max(600, game.h * 0.8))
file/game/modules/tome.team/mod/dialogs/ShowLore.lua.txt
print("Знания")
Dialog.init(self, (title or "Записи").." ("..nb.."/"..total..")", game.w * 0.8, game.h * 0.8)
ListColumns.new{width=math.floor(self.iw / 2 - vsep.w / 2), height=self.ih - 10, scrollbar=true, sortable=true, columns={
{name="", width={40,"fixed"}, display_prop="order", sort="order"},
{name="Запись", width=60, display_prop="name", sort="name"},
{name="Категория", width=40, display_prop="cat", sort="cat"},
}, list=self.list, fct=function(item) end, select=function(item, sel) self:select(item) end}
self.c_desc:switchItem(item, ("#GOLD#Категория:#AQUAMARINE# %s\n#GOLD#Найден в:#0080FF# %s\n#GOLD#Описание:#ANTIQUE_WHITE# %s"):format(item.cat, item.name, item.desc))
file/game/modules/tome.team/mod/dialogs/ShowMap.lua.txt
Dialog.init(self, "Карта: #0080FF#"..game.old_zone_name, 1, 1)
file/game/modules/tome.team/mod/dialogs/ShowStore.lua.txt
Inventory.new{actor=actor_actor, inven=actor_inven, filter=actor_filter, width=math.floor(self.iw / 2 - vsep.w / 2), height=self.ih - 10,
columns={
{name="", width={30,"fixed"}, display_prop="char", sort="id"},
{name="", width={24,"fixed"}, display_prop="object", direct_draw=function(item, x, y) item.object:toScreen(nil, x+4, y, 16, 16) end},
{name="Инвентарь", width=80, display_prop="name", sort="name"},
{name="Категория", width=20, display_prop="cat", sort="cat"},
{name="Цена", width={70,"fixed"}, display_prop=function(item) return self.descprice("продать", item.object) end, sort=function(a, b) return descprice("продать", a.object) < descprice("sell", b.object) end},
},
fct=function(item, sel, button, event) self:use(item, button, event) end,
select=function(item, sel) self:select(item) end,
select_tab=function(item) self:select(item) end,
on_drag=function(item) self:onDrag(item, "store-sell") end,
on_drag_end=function() self:onDragTakeoff("store-buy") end,
}
Inventory.new{actor=store_actor, inven=store_inven, filter=store_filter, width=math.floor(self.iw / 2 - vsep.w / 2), height=self.ih - 10, tabslist=false,
columns={
{name="", width={30,"fixed"}, display_prop="char", sort="id"},
{name="", width={24,"fixed"}, display_prop="object", direct_draw=direct_draw},
{name="Лавка", width=80, display_prop="name"},
{name="Категория", width=20, display_prop="cat"},
{name="Цена", width={70,"fixed"}, display_prop=function(item) return self.descprice("купить", item.object) end, sort=function(a, b) return descprice("купить", a.object) < descprice("buy", b.object) end},
},
fct=function(item, sel, button, event) self:use(item, button, event) end,
select=function(item, sel) self:select(item) end,
on_drag=function(item) self:onDrag(item, "store-buy") end,
on_drag_end=function() self:onDragTakeoff("store-sell") end,
}
file/game/modules/tome.team/mod/dialogs/talents/ChronomancyContingency.lua.txt
Dialog.init(self, "Непредвиденное обстоятельство", game.w * 0.6, game.h * 0.8)
text=[[
Вы можете выбрать заклинание, которое будет автоматически использовано при непредвиденных обстоятельствах(если здоровье упадёт ниже определённого значения). Может быть выбрано только активное и не требующее цели заклинание.
]]
local cols = {
{name="", width={40,"fixed"}, display_prop="char"},
{name="Talent", width=80, display_prop="name"},
}
desc="Список талантов, которые могут быть использованы непредвиденным обстоятельством."
file/game/modules/tome.team/mod/dialogs/talents/ChronomancyEmpower.lua.txt
Dialog.init(self, "Усиление", game.w * 0.6, game.h * 0.8)
text=[[
Вы можете выбрать заклинание хрономансии для усиления, это увеличит эффективность выбранного заклинания.
]]
local cols = {
{name="", width={40,"fixed"}, display_prop="char"},
{name="Талант", width=80, display_prop="name"},
}
desc="Список талантов, на которые можно воздействовать усилением."
file/game/modules/tome.team/mod/dialogs/talents/ChronomancyExtension.lua.txt
Dialog.init(self, "Продление", game.w * 0.6, game.h * 0.8)
text=[[
Вы можете выбрать заклинание хрономансии для продления, это увеличит время его действия.
]]
local cols = {
{name="", width={40,"fixed"}, display_prop="char"},
{name="Talent", width=80, display_prop="name"},
}
desc="Список талантов, на которые можно воздействовать продлением."
file/game/modules/tome.team/mod/dialogs/talents/ChronomancyMatrix.lua.txt
Dialog.init(self, "Матрица", game.w * 0.6, game.h * 0.8)
text=[[
Вы можете выбрать заклинание хрономансии для таланта "Матрица", это уменьшит длительность перезарядки.
]]
local cols = {
{name="", width={40,"fixed"}, display_prop="char"},
{name="Talent", width=80, display_prop="name"},
}
desc="Список талантов, на которые можно воздействовать матрицой."
file/game/modules/tome.team/mod/dialogs/talents/ChronomancyQuicken.lua.txt
Dialog.init(self, "Ускорение", game.w * 0.6, game.h * 0.8)
text=[[
Вы можете выбрать заклинание хрономансии для ускорения, это ускорит произнесение заклинания.
]]
local cols = {
{name="", width={40,"fixed"}, display_prop="char"},
{name="Talent", width=80, display_prop="name"},
}
desc="Список талантов, которые могут быть ускорены."
file/game/modules/tome.team/mod/dialogs/talents/MagicalCombatArcaneCombat.lua.txt
Dialog.init(self, "Тайное искусство", game.w * 0.6, game.h * 0.8)
text=[[
Тайное искусство позволяет вам выбрать заклинание, которое будет автоматически использовано при атаке в ближнем бою. Также вы можете выбрать "случайное заклинание", в таком случае будет выбираться любое из доступных заклинаний.
]]
local cols = {
{name="", width={40,"fixed"}, display_prop="char"},
{name="Talent", width=80, display_prop="name"},
}
desc = "При каждом срабатывании тайного искусства, случайное заклинание будет использовано."
desc="Все известные заклинания могут быть использованы с помощью тайного искусства."
file/game/modules/tome.team/mod/dialogs/TrapsSelect.lua.txt
Dialog.init(self, title or "Выбрать ловушки", math.max(900, game.w * 0.8), math.max(700, game.h * 0.8))
Textzone.new{width=400, auto_height=true, text=self.text or "Подготовить ловушки:"}
game:tooltipDisplayAtMap(game.w, game.h, "#GOLD#"..item.talent.name.."#LAST#\n"..tostring(actor:getTalentFullDescription(item.talent, 1, {force_level=1})))
game.log("начинает выбирать ловушки")
game.logPlayer(self.actor, "#LIGHT_BLUE#Вы не можете подготовить данную ловушку: %s.", item.unlearnable)
game.logPlayer(self.actor, "#LIGHT_BLUE#Нужно быть опытнее, для обращения с данной ловушкой.")
game.logPlayer(self.actor, "#LIGHT_BLUE#Подготовка ловушки с обычным активатором.")
list = {{label="Принять выбранные варианты", tier=0, color = colors_simple.GOLD,
action=function()
if self.num_sel <= self.max_traps then
self.actor:talentDialogReturn(self.traps_selected, self.starting_traps)
game:unregisterDialog(self)
else
game.logPlayer(self.actor, "#LIGHT_BLUE#Вы не можете подготовить более %d ловушек.", self.max_traps)
end
end}}
file/game/modules/tome.team/mod/dialogs/UberTalent.lua.txt
Dialog.init(self, "Дары: "..actor.name, 800, game.h * 0.9)
text:add({"color", "GOLD"}, {"font", "bold"}, util.getval(item.rawname, item), {"color", "LAST"}, {"font", "normal"})
file/game/modules/tome.team/mod/dialogs/UnlockDialog.lua.txt
game.logPlayer(game.player, "#VIOLET#Настройка разблокирована: "..self.name)
Dialog.init(self, "Настройка разблокирована: "..self.name, 600, 400)
file/game/modules/tome.team/mod/dialogs/UseItemDialog.lua.txt
simplePopup("Невозможно", "Вы должны носить предмет чтобы использовать это!")
GetQuantity.new("Сколько выкинуть?", " от 1 до "..self.object:getNumber(), self.object:getNumber(), self.object:getNumber(), function(qty)
qty = util.bound(qty, 1, self.object:getNumber())
self.actor:doDrop(self.inven, self.item, function() self.onuse(self.inven, self.item, self.object, false) end, qty)
end, 1)
simplePopup("Улучшить предмет", "У вас нет экипированных вещей, которые можно улучшить.")
listPopup("Улучшить предмет", "Выбрать предмет для улучшения:", list, 300, 400, doit)
yesnoPopup(self.actor:transmoGetWord():capitalize(), "Действительно "..self.actor:transmoGetWord().." "..self.object:getName{}, function(ret)
if not ret then return end
self.actor:transmoInven(self.inven, self.item, self.object)
self.onuse(self.inven, self.item, self.object, false)
end)
).new("Пометить предмет (помеченные предметы не могут быть уничтожены или выкинуты)"
list[#list+1] = {name="Идентификация", action="identify"}
list[#list+1] = {name="Переместить в обычный инвентарь", action="toinven"}
list[#list+1] = {name="Использовать", action="use"}
list[#list+1] = {name="Носить/Одевать", action="wear"}
list[#list+1] = {name="Снимать", action="takeoff"}
list[#list+1] = {name="Убрать улучшение", action="tinker-remove"}
list[#list+1] = {name="Улучшить предмет", action="tinker-add"}
list[#list+1] = { name = 'Убрать улучшение', action='tinker-detach' }
list[#list+1] = {name="Выбросить", action="drop"}
list[#list+1] = {name="Передать члену группы", action="transfer"}
list[#list+1] = {name=self.actor:transmoGetWord():capitalize().." сейчас", action="transmo"}
list[#list+1] = {name="Отправить ссылку на предмет в чат", action="chat-link"}
list[#list+1] = {name="Режим отладки", action="debug-inspect", color=colors.simple(colors.LIGHT_BLUE)}
list[#list+1] = {name="Метка", action="tag"}
list[#list+1] = {name="Убрать метку", action="untag"}
file/game/modules/tome.team/mod/dialogs/UseTalents.lua.txt
Dialog.init(self, "Использовать таланты: "..actor.name, game.w * 0.8, game.h * 0.8)
text=[[
Вы можете назначить не пассивный талант на панель умений, для этого выберите кнопку и нажмите на талант или нажмите правой кнопкой мыши по таланту.
Переназначить кнопки на панели умений можно из меню (по умолчанию 1-0 + control, shift, или alt).
При клике правой кнопкой мыши или нажатием на "~" можно настроить автоматическое использование талантов.
]]
return "LeftClick"
elseif item.talent and item.talent == self.actor.auto_shoot_midclick_talent then return "MiddleClick"
else return "" end
simplePopup("Клавиша "..id.." назначена", t.name:capitalize().." назначить на клавишу "..id)
list = {
{name="Снять назначение", what="unbind"},
{name="Назначить на левую кнопку мыши", what="left"},
{name="Назначить на среднюю кнопку мыши (колёсико)", what="middle"},
}
list[#list+1] = {name="Горячая клавиша "..i, what=i}
simplePopup("Горячая клавиша "..b.what.." assigned", self.actor:getTalentFromId(item.talent).name:capitalize().." assigned to hotkey "..b.what)
simplePopup("Средняя кнопка мыши назначена", self.actor:getTalentFromId(item.talent).name:capitalize().." назначено на среднюю кнопку мыши.")
simplePopup("Левая кнопка мыши назначена", self.actor:getTalentFromId(item.talent).name:capitalize().." Назначено на левую кнопку мыши.")
return "H.Key "..i..""
end
desc="Все активные таланты, которые вы можете использовать в данный момент."
desc="Способности предметов, которые могут быть использованы автоматически. Многие предметы со способностями отображаются тут, кроме находящихся на перезарядке или имеющих ограничения."
desc="Все поддерживаемый таланты, которые вы можете использовать в данный момент."
desc="Все поддерживаемые таланты сейчас включены, повторное использование отключит их."
desc="Все ваши таланты находятся на перезарядке."
desc="На все имеющиеся у вас таланты не хватает ресурсов, либо не соблюдены определённые требования."
desc="Все ваши пассивные таланты, они всегда активны."
file/game/modules/tome.team/mod/init.lua.txt
description = [[
Добро пожаловать в Мадж'Эял.
Вы живёте в эпоху Господства. После десяти тысяч лет раздоров, боли и хаоса наступил относительный мир.
Последствия #FF0000#периода пламени#WHITE# были укрощены, земли медленно возвращались к своему изначальному виду, а цивилизации восстанавливались после эпохи Костров.
Прошло двадцать два года с тех пор, как союзные королевства были объединены под властью #14fffc#Токнора#ffffff# и его жены #14fffc#Мирвении#ffffff#.
Вместе они справедливо правили королевствами и принесли процветание как полуросликам, так и людям.
Король умер от старости четырнадцать лет назад, а трон перешёл его сыну #14fffc#Толаку#ffffff#.
В эльфийских королевствах всё спокойно. Шалоренские эльфы проживают в Эльвале и делают всё, чтоб мир забыл об их роли в периоде пламени. Сейчас они счастливо живут под предводительством #14fffc#Араниона Гайаэль#ffffff#.
Талоренские эльфы придерживаются древних традиций и проживают в лесах. Мудро правит ими #14fffc#Несилла Тантаэлен#ffffff#.
Гномы из Железного Трона поддерживали осторожные торговые отношения с Объединёнными Королевствами почти сотню лет, но о них почти ничего не известно, даже имя их правителя.
Жители Мадж'Эяла знают, что маги помогли положить конец ужасам периода пламени, но также они не забыли, что именно магия и стала причиной этого события. Поэтому, магов всё ещё избегают, но уже не охотятся на них в открытую.
Тем не менее, можно сказать, что сейчас золотой век - цивилизации восстанавливаются после тысячелетнего конфликта, а люди и полурослики заключили длительный мир.
Вы - искатель приключений, отправившийся искать чудеса, исследовать древние места и рисковать всем ради богатства и славы.
]]
text=[[Хоть магию ещё избегают на Мадж'Эяле, но ходят слухи о секретном убежище магов.]]
text=[[Талант "Рывок" позволяет быстро приблизиться к врагу и ошеломить его. Пока враг выведен из строя, вы можете расправиться с его союзниками.]]
text=[[Оглушённый противник значительно замедляется и теряет бОльшую часть урона, позволяя вам провести тактическое перемещение или прикончить его с меньшим риском.]]
text=[[Движение - ключ к победе на поле боя. Неподвижный боец - мёртвый боец, нужно всегда искать позицию с наибольшим тактическим преимуществом и продолжать следить за происходящим в бою.]]
text=[[В Эпоху Костров орки научились использовать магию и попытались с её помощью захватить весь Мадж'Эял.]]
text=[[Когда-то давно орки наводили ужас на весь континент. В эпоху Господства они считаются вымершей расой, но ходят слухи, что где-то ещё прячутся небольшие группы орков, готовящиеся к возвращению.]]
text=[[Высокая сила воли позволяет драконоподобным эффективнее использовать силы драконов.]]
text=[[Алхимики умеют трансмутировать драгоценные камни для создания больших взрывов и, как известно, путешествуют с крепким големом-защитником .]]
text=[[Во времена эпохи Погребальных костров гигантский голем Атаматон был построен с единственной целью - остановить лидера орков - Гаркула Пожирателя. Но голем был единолично уничтожен орком, после чего тот принялся за армию полуросликов и убил сотни из них, прежде чем пал сам.]]
text=[[Никто не знает, что же из себя представляет Шер'Тул и что заставило его исчезнуть тысячи лет назад. От его руин веет тайной и ужасом.]]
text=[[Глубоко под землёй обитает множество тёмных, никому не известных созданий и никто не знает, что же стало причиной появления этих ужасов.]]
text=[[Кто знает, какие тёмные мысли подталкивают людей к использованию некромантии? Это искусство старо, как сама магия и его создания отравляют жизнь другим расам с начала времён.]]
text=[[Ходят слухи, что когда-то давно короли Шалоренов проводили эксперименты с некромантией для сохранения своей плоти после смерти, но существенного успеха они так и не достигли. Сами Шалорены отрицают это.]]
text=[[120 лет назад Токнор и Мирвения объединили расы людей и полуросликов, после чего уничтожили расу орков, тем самым положив начало эпохе Господства.]]
text=[["Период пламени разорвал Эял на части и практически уничтожил все существующие цивилизации. Две тысячи лет его тень всё ещё висела над многими землями, из-за чего надменным магам никогда не забудут сделанное.]]
text=[[Некоторые жители Эяла наделены проклятым даром, из-за чего их ментальные способности не поддаются управлению, а жизни посвящены злу, подпитываемому ненавистью.]]
text=[[Обитель Ужаса всегда сторонились из-за склепов, населённых приведениями, но недавно пошли слухи о существовании чего-то ещё - тёмного и ужасного, поселившегося глубинах склепов.]]
text=[[Некоторые Шер'Тульские артефакты до сих пор можно найти в скрытых местах, но говорят, что с ними не стоит шутить.]]
text=[[Дрейки и вирмы - сильнейшие из живых существ, они владеют силой, не доступной другим.]]
text=[[Гигантские черви прокапывают огромные туннели под землями западной пустыни. Ходят слухи, что множество сокровищ скрыто под песком и всё ещё украшает трупы тех, кто шёл туда в поисках богатств.]]
text=[[Мистические клинки совмещают ближний бой и магию. Для этого они проходят очень суровые тренировки и лишь самые усердные обретают великую силу.]]
text=[[Природные инфузии используют силы природы, для защиты плоти и избавления вас от негативных эффектов.]]
text=[[Руна щита активируется мгновенно, позволяя защитить себя и сбежать или же пойти контратаку.]]
text=[[Пройдя через множество тренировок с бронёй, вы научитесь эффективнее с ней обращаться: блокировать больше урона и получать гораздо меньше критических ударов.]]
text=[[Талант "Толстая кожа" уменьшает весь получаемый урон, позволяя дольше выдерживать атаки врагов.]]
text=[[Инфузия регенерации длится несколько ходов, используйте это время с умом!]]
text=[[В опасной ситуации телепортация может быть лучшим способом для побега, но не без риска.]]
text=[[Зигурант - древний орден, яростно противостоящий магии. Некоторые из его членов так сблизились с природой, что способны силой мысли противостоять магии.]]
text=[[В записях говорится, что раньше гиганты жили более цивилизованно и даже достигли определённых успехов в ремёслах и науке. Однако, сейчас они представляют из себя кочевые племена, враждебные ко всем, кто забредёт на их земли.]]
text=[[Зигур был основан сбежавшими жертвами экспериментов Конклава во время войн Перемен между людьми и полуросликами.]]
text=[[Отношения шалоренских и талоренских эльфов никогда нельзя было назвать дружескими, а после периода пламени они и вовсе стали враждебными, так как было опустошено много талоренских земель.]]
text=[[Третья эльфийская раса, Налорены, была уничтожена огромным катаклизмом, который отправил восточную часть Мадж'Эяла в морские глубины.]]
text=[[Когда-то тролли были лишь чем-то большим, чем звери и паразиты, но орки обучили их для войны, сделав умными и ужасающими.]]
text=[[Ходят слухи, что ножка полурослика приносит удачу. Сами же полурослики не горят желанием проверять это.]]
text=[[Империя Наргол имела наибольшую военную мощь на Мадж'Эяле, но сочетание периода пламени и атаки орков практически уничтожило её.]]
text=[[Некоторых из высших типов нежити нельзя убить обычными способами. Для того, чтоб отправить их на вечный покой, придётся проявить настойчивость и смекалку.]]
text=[[В истории сохранились записи о древней расе йииков, проживавшей на территории полуросликов, но уничтоженной ещё до периода пламени.]]
text=[[Гномы по своей природе очень любопытны, но они очень не любят проявление чужого любопытства, особенно направленного на них. Многое об их жизни остаётся неизвестным, так как их город - Железный Трон, закрыт для посторонних.]]
text=[[Алхимики умеют украшать доспехи драгоценными камнями, наделяя их магическими силами, способными защитить или усилить владельца. Некоторые из алхимиков занимаются инкрустацией ювелирных изделий, за деньги, разумеется.]]
text=[[После периода пламени началась эпоха Сумрака - многие земли были заражены, а цивилизации в упадке. Некроманты и падшие волшебники воспользовались творившемся хаосом и проводили свои мерзкие обряды.]]
text=[[После периода пламени началась охота на магов - обычные люди восстали против высокомерных магов и начали охоту на них, словно на волков. Некоторым магам удалось выжить и спрятаться, но многие не виновные были убиты.]]
text=[[Считается, что демоны произошли из другого мира, а в Эял попали с помощью магии. Некоторые из них разумны и имеют собственные цели. Какие именно - никому не известно.]]
text=[[Искусство зельеварения было практически утеряно в результате охоты на магов и лишь немногие мастера сейчас владеют этим даром.]]
text=[[Говорят, что существуют силы, которые могут спасти вашу душу от смерти.]]
text=[[Ходят слухи о тёмном культе, похищающем женщин и проводящим странные ритуалы. Их цели неизвестны. и они до сих пор избегали поимки.]]
text=[[Хоть рабство и находится под запретом, но всё равно существует чёрный рынок, а в некоторых местах мужчины используются для кровавого спорта.]]
text=[[Мадж'Эял - самый большой континент в Эяле. Хоть в записях и говорится, про другие материки и острова, но добраться до них невозможно из-за огромного расстояния и постоянных штормов в пути, вызванных периодом пламени и Катаклизмом.]]
text=[[Последствия периода пламени не были мгновенными, через множество столетий Катаклизм вновь разорвал континент на части, опустошив прибрежные районы и уничтожив все земли Налоренов.]]
text=[[Лучники быстры и смертельны: их выстрелы обездвиживают противников, после чего им не составляет труда разобраться с беспомощной жертвой.]]
text=[[Похитители - сильные бойцы, в жилах которых течёт осквернённая кровь. Их сила настолько велика, что позволяет носить по одному одноручному оружию в каждой руке.]]
text=[[Искажатели высасывают жизненную силу из других, а так же могут использовать свою собственную осквернённую кровь, для создания различных смертоносных заклинаний.]]
text=[[Умные плуты используют ловушки, чтоб покалечить или ослабить врагов не подходя к ним.]]
text=[[Плуты умеют передвигаться бесшумно и скрытно, незаметно подкрадываясь к ничего не подозревающей жертве или обходя её не дав себя обнаружить.]]
text=[[Инфузия ускорения позволяет быстро настигнуть дальнобойного врага, либо избежать схватки в ближнем бою.]]
text=[[Невидимость позволяет вам выйти из боя и сбежать или восстановить свои ресурсы, но при этом снижает ваш урон.]]
text=[[Ядами чаще всего пользуются убийцы и мастера-плуты, при правильном его использовании они способны обезвредить противника или медленно убивать в затяжном бою.]]
text=[[Призыватели способны вызывать различных живых существ себе на помощь, уменьшая тем самым риск пострадать самим.]]
text=[[Величайших волшебников называют архимагами, а сильнейшие из них владеют силой, способной изменить мир. Их очень боятся.]]
text=[[Бастионы - хорошо защищённые бойцы, способные принимать на себя множество вражеских атак и проводить эффективные контратаки.]]
text=[[Благодаря изматывающим тренировкам, борцы научились мастерски использовать всё своё тело. В бою они могут быть столь же опасны, как и опытный фехтовальщик.]]
text=[[Молния - нестабильный элемент, которым сложно управлять. Говорят, что многие попытавшихся это сделать сошли в ума.]]
lore = { {name="index:string:30"}, receive=function(data, save) save.lore = save.lore or {} save.lore[data.name] = true end, export=function(env) for k, v in pairs(env.lore or {}) do add{name=k} end end }
file/game/modules/tome.team/mod/load.lua.txt
return ("%s"):format(race .. subrace)
end
return ("%s"):format(class .. subclass)
end
defineInventory("MAINHAND", "В главной руке", true, "В главной руке вы можете владеть большей частью оружия.", nil, {equipdoll_back="ui/equipdoll/mainhand_inv.png", shimmerable=true})
defineInventory("OFFHAND", "Во второй руке", true, "Вы можете использовать щиты или второе оружие в своей руке, если у вас есть таланты для этого.", nil, {equipdoll_back="ui/equipdoll/offhand_inv.png", shimmerable=true})
defineInventory("PSIONIC_FOCUS", "Псионический захват", true, "Выбранный для для телекинетического управления объект. Это может быть оружие или усиливающий ваши псионические способности предмет.", nil, {equipdoll_back="ui/equipdoll/psionic_inv.png", etheral=true})
defineInventory("FINGER", "На пальцах", true, "Кольца носят на пальцах.", nil, {equipdoll_back="ui/equipdoll/ring_inv.png"})
defineInventory("NECK", "Вокруг шеи", true, "Амулеты носят на шее.", nil, {equipdoll_back="ui/equipdoll/amulet_inv.png"})
defineInventory("LITE", "Источник света", true, "Источник света позволяет заглянуть в тёмные места мира.", nil, {equipdoll_back="ui/equipdoll/light_inv.png"})
defineInventory("ТЕЛО", "Доспех", true, "Броня защищает вас от физических атак. Чем тяжелее броня, тем больше она мешает использовать таланты и умения.", nil, {equipdoll_back="ui/equipdoll/body_inv.png", shimmerable=true})
defineInventory("ПЛАЩ", "Плащ", true, "Плащ может просто согреть вас или дать вам удивительные силы, если вы найдете магический.", nil, {equipdoll_back="ui/equipdoll/cloak_inv.png", shimmerable=true})
defineInventory("HEAD", "На голове", true, "Вы можете носить шлема и короны на голове.", nil, {equipdoll_back="ui/equipdoll/head_inv.png", shimmerable=true})
defineInventory("BELT", "Вокруг талии", true, "Пояса носят на талии.", nil, {equipdoll_back="ui/equipdoll/belt_inv.png"})
defineInventory("HANDS", "На руках", true, "Вы можете носить различные перчатки на ваших руках.", nil, {equipdoll_back="ui/equipdoll/hands_inv.png", shimmerable=true})
defineInventory("FEET", "На ногах", true, "Вы можете носить Сандали или Сапоги на ваших ногах.", nil, {equipdoll_back="ui/equipdoll/boots_inv.png", shimmerable=true})
defineInventory("ИНСТРУМЕНТ", "Инструмент", true, "Это ваш инструмент, он доступен всегда.", nil, {equipdoll_back="ui/equipdoll/tool_inv.png"}
defineInventory("КОЛЧАН", "Колчан", true, "Ваши боеприпасы готовы", nil, {equipdoll_back="ui/equipdoll/ammo_inv.png", shimmerable=true})
defineInventory("GEM", "Инкрустирование", true, "Инкрустированные в экипировку драгоценные камни предоставляют различные бонусы.", nil, {equipdoll_back="ui/equipdoll/gem_inv.png", stack_limit = 1})
defineInventory("QS_MAINHAND", "Второй набор оружия: В главной руке", false, "Набор оружия 2: Most weapons are wielded in the main hand. Нажмите 'x' чтобы поменять набор оружия.", true)
defineInventory("QS_OFFHAND", "Второй набор оружия: Во второй руке", false, "Набор оружия 2:
Вы можете использовать щиты или второе оружие в своей руке, если у вас есть таланты для этого. Нажмите'x' чтобы поменять набор оружия.", true)
defineInventory("QS_PSIONIC_FOCUS", "Дополнительный набор оружия: псионический захват", false, "Набор оружия 2: Выбранный для для телекинетического управления объект. Это может быть оружие или усиливающий ваши псионические способности предмет. Нажмите 'Ч' для смены набора оружия.", true)
defineInventory("QS_QUIVER", "Второй набор оружия: Колчан", false, "Набор оружия 2: Ваши боеприпасы готовы.", true)
text="bottom"
text="bottom"
text="topright"
text="bottom"
defineStat("Strength", "str", 10, 1, 100, "Сила определяет способность вашего персонажа к применению физической силы. Увеличивает наносимый тяжёлым оружием урон, физическую защиту и переносимый вес.")
defineStat("Dexterity", "dex", 10, 1, 100, "Ловкость определяет способность вашего персонажа к гибкости и настороженности. Повышает точность, уворот, шанс избежать крит. атаки и наносимый вашим лёгким оружием урон.")
defineStat("Magic", "mag", 10, 1, 100, "Магия определяет способность вашего персонажа к манипулированию магической энергией мира. Она увеличивает: силу заклинаний, защиту от магии, эффективность заклинаний и других магических предметов.")
defineStat("Willpower", "wil", 10, 1, 100, "Сила воли определяет способность вашего персонажа к концентрации. повышает максимальный запас: маны,, выносливости, пси. Увеличивает силу разума, магическую и ментальную защиту.")
defineStat("Cunning", "cun", 10, 1, 100, "Хитрость определяет способность вашего персонажа к изучению, запоминанию и реакцию.Она позволяет вам изучить множество способностей и повышает силу разума, ментальную защиту и шанс критической атаки.")
defineStat("Constitution", "con", 10, 1, 100, "Телосложение определяет способность вашего персонажа противостоять повреждениям. Она увеличивает: максимум здоровья, физическую защиту и получаемое лечение.")
defineStat("Luck", "lck", 50, 1, 100, "Удача определяет исход неожиданных для персонажа событий, повышает шанс критической атаки, ваш шанс случайных встреч, ...")
desc="Все виды оружия"
desc="Все виды брони"
desc="Кольца и Амулеты"
desc="Самоцветы"
desc="Инфузии, Руны, ..."
desc="Ремёсла"
desc="Разное"
desc="Предметы связанные с заданиями или сюжетом"
desc="Сундук трансмогрификации"
desc="Всё"
file/game/modules/tome.team/mod/resolvers.lua.txt
print("Equipment resolver for", e.name)
print("Equipment resolver", e.name, filter.type, filter.subtype, filter.defined, filter.random_art_replace)
print("Serving unique "..o.name.." but forcing replacement drop")
print(" Equipment resolver for ", e.name ," -- incompatible equipment ", o.name, "retrying", tries, "self.not_power_source:", e.not_power_source and table.concat(table.keys(e.not_power_source), ","), "filter forbid ps:", filter.forbid_power_source and table.concat(table.keys(filter.forbid_power_source), ","), "vs ps", o.power_source and table.concat(table.keys(o.power_source), ","))
print("Zone made us an equipment according to filter!", o:getName())
print("Autorequire stats")
print("Tinker resolver for", e.name)
print("Tinker resolver", e.name, filter.type, filter.subtype, filter.defined)
print("Serving unique "..o.name.." but forcing replacement drop")
print("Zone made us an Tinker according to filter!", o:getName())
print("Autorequire stats")
print("Inventory resolver", e.name, e.filter, filter.type, filter.subtype)
print("Zone made us an inventory according to filter!", o:getName())
print("Drops resolver", e.name, filter.type, filter.subtype, filter.defined)
print("Serving unique "..o.name.." but forcing replacement drop")
print("Zone made us a drop according to filter!", o:getName())
game.log("#LIGHT_BLUE#Calculating randart drop for %s (uid %d, est level %d)",e.name,e.uid,actor_final_level(e))
game.log("Checking equipment %s against material level %d for %s (final level %d)",eq.name,matlevel,e.name, actor_final_level(e))
print("Randart Drops resolver")
print("Zone made us a randart drop according to filter!", o:getName{force_id=true})
print("[STORE] created for entity", t, e, e.name)
return "object/"..t[1].."_"..t[2][ml]..".png"
end
print(" # talented_ai_tactic resolver function for", e.name, "level=", e.level, e.uid)
print(" #- tactical table for talent", tal.name, "range", range, "radius", radius)
print(" --- ", tt, "wt=", val)
print("### talented_ai_tactic resolver ai_tactic table:")
file/game/modules/tome.team/mod/settings.lua.txt
print("[TOME] Загружены стандартные настройки")
Переведено на Нотабеноиде
http://notabenoid.org/book/63434/363813
Переводчики: nekropoll, CIbeaST, Lord_Draconis, Ambrelium
werete126, leomaven, Xelor
Настройки
Готово:
