diff --git a/android/build.gradle b/android/build.gradle index e868fe478..2613aecca 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -57,6 +57,7 @@ android { configurations { natives } dependencies { + implementation 'com.github.RohitSurwase.UCE-Handler:uce_handler:1.4' implementation project(':core') implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" diff --git a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java index 689321350..0a7a5bd0f 100644 --- a/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java +++ b/android/src/main/java/com/shatteredpixel/shatteredpixeldungeon/android/AndroidGame.java @@ -33,14 +33,15 @@ import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; import com.badlogic.gdx.backends.android.AndroidAudio; import com.badlogic.gdx.backends.android.AsynchronousAndroidAudio; +import com.rohitss.uceh.UCEHandler; import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; import com.shatteredpixel.shatteredpixeldungeon.services.news.News; import com.shatteredpixel.shatteredpixeldungeon.services.news.NewsImpl; import com.shatteredpixel.shatteredpixeldungeon.services.updates.UpdateImpl; import com.shatteredpixel.shatteredpixeldungeon.services.updates.Updates; -import com.watabou.noosa.Game; import com.shatteredpixel.shatteredpixeldungeon.ui.Button; +import com.watabou.noosa.Game; import com.watabou.utils.FileUtils; public class AndroidGame extends AndroidApplication { @@ -84,10 +85,13 @@ public class AndroidGame extends AndroidApplication { // this is the default prefs filename given to an android app (.xml is automatically added to it) SPDSettings.set(instance.getPreferences("ShatteredPixelDungeon")); + UCEHandler.Builder builder = new UCEHandler.Builder(this); + builder.build(); + } else { instance = this; } - + //set desired orientation (if it exists) before initializing the app. if (SPDSettings.landscape() != null) { instance.setRequestedOrientation( SPDSettings.landscape() ? diff --git a/build.gradle b/build.gradle index 85d9c9934..ededd8c2a 100644 --- a/build.gradle +++ b/build.gradle @@ -32,6 +32,7 @@ allprojects { repositories { maven{ url 'https://maven.aliyun.com/repository/google' } maven{ url 'https://maven.aliyun.com/repository/jcenter'} + maven { url 'https://jitpack.io' } } } \ No newline at end of file diff --git a/core/src/main/assets/Ling.png b/core/src/main/assets/Ling.png new file mode 100644 index 000000000..7fdbff15d Binary files /dev/null and b/core/src/main/assets/Ling.png differ diff --git a/core/src/main/assets/Rb.png b/core/src/main/assets/Rb.png new file mode 100644 index 000000000..335fcd819 Binary files /dev/null and b/core/src/main/assets/Rb.png differ diff --git a/core/src/main/assets/Ren/ren.png b/core/src/main/assets/Ren/ren.png new file mode 100644 index 000000000..1b332f582 Binary files /dev/null and b/core/src/main/assets/Ren/ren.png differ diff --git a/core/src/main/assets/SHA.png b/core/src/main/assets/SHA.png new file mode 100644 index 000000000..f9a5e157b Binary files /dev/null and b/core/src/main/assets/SHA.png differ diff --git a/core/src/main/assets/Tianscar.png b/core/src/main/assets/Tianscar.png new file mode 100644 index 000000000..d09b0d7fe Binary files /dev/null and b/core/src/main/assets/Tianscar.png differ diff --git a/core/src/main/assets/messages/actors/actors_zh.properties b/core/src/main/assets/messages/actors/actors_zh.properties index 2b228ffc1..93bb4e388 100644 --- a/core/src/main/assets/messages/actors/actors_zh.properties +++ b/core/src/main/assets/messages/actors/actors_zh.properties @@ -77,11 +77,11 @@ actors.buffs.berserk.angered=愤怒 actors.buffs.berserk.berserk=狂暴 actors.buffs.berserk.exhausted=力竭 actors.buffs.berserk.recovering=恢复 -actors.buffs.berserk.angered_desc=狂战士所受的伤势程度会增强他的攻击力。狂战士受到物理伤害时会积攒怒气,赋予他更强的攻击力。被护甲抵挡的伤害也会积攒怒气。\n\n怒气会随时间而减淡。狂战士生命值越低,怒气存留的时间越长。\n\n积满怒气并且装备着纹章的狂战士在生命值降至0时,他会狂暴并在短时间内_抗拒死亡_。\n\n当前怒气:_%.0f%%_ \n_+%.0f%%_攻击 -actors.buffs.berserk.berserk_desc=在濒死之际,恐惧和不安已经烟消云散,留存下来的只剩怒火。这种濒死情况下的狂战士会变得无比强大,_额外造成50%的伤害,获得额外的护盾值,并且无法死亡。_\n\n狂战士的护甲越强,获得的额外护盾值也会越多。护盾值会随时间消失殆尽,降至0后狂战士会彻底消亡。\n\n任何形式的治疗都会让狂战士恢复稳定,不过他会变得精疲力竭。力竭的狂战士需要得到足够的经验才可以再次积攒怒气。 -actors.buffs.berserk.recovering_desc=内在力量是有限的。狂战士必须充分休息才能再次释放他的狂暴。\n\n正在恢复的狂战士不能积攒怒气。\n\n恢复所需等级:_%.2f_ -actors.buffs.berserk.no_rages=濒死时的狂暴会造成永久性的创伤,每次都会降低狂战士的生命上限。 -actors.buffs.berserk.past_rages=狂战士狂暴次数:_%d_\n生命上限降至:_%d%%_ +actors.buffs.berserk.angered_desc=狂战领主所受的伤势程度会增强他的攻击力。狂战领主受到物理伤害时会积攒怒气,赋予他更强的攻击力。被护甲抵挡的伤害也会积攒怒气。\n\n怒气会随时间而减淡。狂战领主生命值越低,怒气存留的时间越长。\n\n积满怒气并且装备着纹章的狂战领主在生命值降至0时,他会狂暴并在短时间内_抗拒死亡_。\n\n当前怒气:_%.0f%%_ \n_+%.0f%%_攻击 +actors.buffs.berserk.berserk_desc=在濒死之际,恐惧和不安已经烟消云散,留存下来的只剩怒火。这种濒死情况下的狂战领主会变得无比强大,_额外造成50%的伤害,获得额外的护盾值,并且无法死亡。_\n\n狂战领主的护甲越强,获得的额外护盾值也会越多。护盾值会随时间消失殆尽,降至0后狂战领主会彻底消亡。\n\n任何形式的治疗都会让狂战领主恢复稳定,不过他会变得精疲力竭。力竭的狂战领主需要得到足够的经验才可以再次积攒怒气。 +actors.buffs.berserk.recovering_desc=内在力量是有限的。狂战领主必须充分休息才能再次释放他的狂暴。\n\n正在恢复的狂战领主不能积攒怒气。\n\n恢复所需等级:_%.2f_ +actors.buffs.berserk.no_rages=濒死时的狂暴会造成永久性的创伤,每次都会降低狂战领主的生命上限。 +actors.buffs.berserk.past_rages=狂战领主狂暴次数:_%d_\n生命上限降至:_%d%%_ actors.buffs.berserk.rankings_desc=暴走至死 actors.buffs.bleeding.name=流血 @@ -131,7 +131,7 @@ actors.buffs.combo.action_name=连击 actors.buffs.combo.combo=%d连击! actors.buffs.combo.bad_target=你的目标必须是攻击距离以内的敌人。 actors.buffs.combo.prompt=选择一个攻击目标 -actors.buffs.combo.desc=角斗士在连续打击对手的过程中渐入佳境,每次攻击命中都会提高一层_连击数,_但长时间不进行攻击会将连击数归零。\n\n积攒连击数可以激活必定命中的_处决技能_!连击数到达2,4,6,8,10时会分别激活不同的技能。部分处决技能会重置你的连击数,但每种处决技能在一次连击中只能使用一次。\n\n当前的连击数:%1$d。\n\n连击将在%2$s回合后丢失。 +actors.buffs.combo.desc=角斗之王在连续打击对手的过程中渐入佳境,每次攻击命中都会提高一层_连击数,_但长时间不进行攻击会将连击数归零。\n\n积攒连击数可以激活必定命中的_处决技能_!连击数到达2,4,6,8,10时会分别激活不同的技能。部分处决技能会重置你的连击数,但每种处决技能在一次连击中只能使用一次。\n\n当前的连击数:%1$d。\n\n连击将在%2$s回合后丢失。 actors.buffs.combo$combomove.clobber_desc=_2连击:冲击_将一名敌人击退2格,但不造成伤害,也不能将其击落深渊。提升1点连击。 actors.buffs.combo$combomove.slam_desc=_4连击:撞击_造成防御值%d%%(连击数*20%%)的额外伤害。使用后重置连击数。 actors.buffs.combo$combomove.parry_desc=_6连击:格挡_ 使用后,格挡下一回合内受到的第一次攻击,并立即做出还击。如果没能格挡攻击,则重置连击数。 @@ -195,7 +195,7 @@ actors.buffs.hex.heromsg=你的精神受到了魔法的干扰! actors.buffs.hex.desc=干扰集中力的黑暗魔法,使目标无法准确地判断方位。\n\n幻惑状态会降低目标20%%的精准与闪避属性,使其在战斗中更容易处于下风。\n\n幻惑的剩余时长:%s回合。 actors.buffs.holdfast.name=不动如山 -actors.buffs.holdfast.desc=战士原地不动时会进入坚守状态,提升他的护甲0~%d点,持续到他移动为止。 +actors.buffs.holdfast.desc=蕾零安洁原地不动时会进入坚守状态,提升他的护甲0~%d点,持续到他移动为止。 actors.buffs.hunger.hungry=饥饿 actors.buffs.hunger.starving=极度饥饿 @@ -245,9 +245,9 @@ actors.buffs.momentum.momentum=动量积蓄 actors.buffs.momentum.running=逸动 actors.buffs.momentum.resting=恢复 actors.buffs.momentum.action_name=逸动 -actors.buffs.momentum.momentum_desc=移动的时候,疾行者会逐渐积蓄动能。疾行者可以消耗动量以开启逸动状态。\n\n每一点动量可以支持两个回合的逸动,最多可以储存10点动量。当疾行者停止移动时动量会快速消散。\n\n现有的动量:%d。 -actors.buffs.momentum.running_desc=移动的时候,疾行者会逐渐积蓄动能。疾行者可以消耗动能以开启逸动状态。\n\n处于逸动状态时,疾行者能够以两倍速移动,并且基于自身等级获得额外的闪避属性。\n\n效果剩余回合数:%d。 -actors.buffs.momentum.resting_desc=移动的时候,疾行者会逐渐积蓄动量。疾行者可以消耗动量以开启逸动状态。\n\n疾行者现在需要休息一会恢复体力才能重新积蓄动量。\n\n还需要休息%d回合。 +actors.buffs.momentum.momentum_desc=移动的时候,风行之子会逐渐积蓄动能。风行之子可以消耗动量以开启逸动状态。\n\n每一点动量可以支持两个回合的逸动,最多可以储存10点动量。当风行之子停止移动时动量会快速消散。\n\n现有的动量:%d。 +actors.buffs.momentum.running_desc=移动的时候,风行之子会逐渐积蓄动能。风行之子可以消耗动能以开启逸动状态。\n\n处于逸动状态时,风行之子能够以两倍速移动,并且基于自身等级获得额外的闪避属性。\n\n效果剩余回合数:%d。 +actors.buffs.momentum.resting_desc=移动的时候,风行之子会逐渐积蓄动量。风行之子可以消耗动量以开启逸动状态。\n\n风行之子现在需要休息一会恢复体力才能重新积蓄动量。\n\n还需要休息%d回合。 actors.buffs.ooze.name=腐蚀淤泥 actors.buffs.ooze.heromsg=污泥在腐蚀你的身体。洗掉它! @@ -271,11 +271,11 @@ actors.buffs.poison.desc=毒素传遍全身,缓慢地损伤着各个脏器。 actors.buffs.preparation.name=准备阶段 actors.buffs.preparation.action_name=蓄意打击 -actors.buffs.preparation.desc=刺客正耐心地等待着,准备从暗影中给出致命一击。 +actors.buffs.preparation.desc=皇家刺客正耐心地等待着,准备从暗影中给出致命一击。 actors.buffs.preparation.desc_dmg=他的下一次攻击会造成_%1$d%%的额外伤害_,并瞬间斩杀生命低于_%2$d%%_的普通敌人,或生命低于_%3$d%%_的Boss。 actors.buffs.preparation.desc_dmg_likely=这一击也更有可能造成额外的伤害。 actors.buffs.preparation.desc_blink=他可以瞬间冲刺到敌人身边再攻击,最大冲刺距离为%d格。 -actors.buffs.preparation.desc_invis_time=刺客已经隐形了_%d_回合。 +actors.buffs.preparation.desc_invis_time=皇家刺客已经隐形了_%d_回合。 actors.buffs.preparation.desc_invis_next=这一击在_%d_回合后会变得更强。 actors.buffs.preparation.prompt=选择一个攻击的目标!\n最大冲刺距离:%d格 actors.buffs.preparation.no_target=这里没有可攻击的目标。 @@ -299,7 +299,7 @@ actors.buffs.roots.heromsg=你不能动了! actors.buffs.roots.desc=根系(不论是自然或魔法产生)缠到了脚上,将它们牢牢拴在地面。 \n\n根系会让目标被困在当前区域,使其不能移动,但不会干扰其他行为。 \n\n剩余的缠绕效果持续时长:%s回合 actors.buffs.scrollempower.name=卷轴赋能 -actors.buffs.scrollempower.desc=法师阅读卷轴时产生的能量会暂时强化他的法杖!\n\n法杖强化:+%1$d 级。\n剩余有效施法次数:%2$d 回合。 +actors.buffs.scrollempower.desc=茉莉伊洛阅读卷轴时产生的能量会暂时强化他的法杖!\n\n法杖强化:+%1$d 级。\n剩余有效施法次数:%2$d 回合。 actors.buffs.shadows.name=暗影融合 actors.buffs.shadows.desc=你和周围的阴影融为一体,使你隐形并减缓你的新陈代谢。\n\n当你在隐形时敌人无法追踪或攻击你。大部分物理攻击和魔法(比如卷轴和法杖)会立即解除隐形效果。此外,当你处于暗影融合状态下时,饥饿值增加的速率会降低。\n\n暗影融合状态会一直持续直到你离开阴影或与敌人直接接触。 @@ -311,10 +311,10 @@ actors.buffs.snipersmark.name=狙击标记 actors.buffs.snipersmark.action_name_snapshot=速射 actors.buffs.snipersmark.action_name_volley=齐射 actors.buffs.snipersmark.action_name_sniper=强射 -actors.buffs.snipersmark.desc=狙击手会专注于最近射击的目标,能够用灵能弓进行一次特殊攻击,攻击方式取决于弓的改造方式。\n\n若持有未改造的弓,狙击手可发射_瞬时箭矢_,造成低于正常箭矢的伤害,但不消耗时间。\n\n若持有加强了速度的弓,狙击手可进行_三箭连发_。每支箭造成低于正常箭矢的伤害,但能触发附魔。消耗一回合。\n\n若持有加强了伤害的弓,狙击手可发射_狙击箭矢_。狙击箭矢必定命中,造成基于与目标距离的额外伤害,消耗两回合。 +actors.buffs.snipersmark.desc=远灵之主会专注于最近射击的目标,能够用灵能弓进行一次特殊攻击,攻击方式取决于弓的改造方式。\n\n若持有未改造的弓,远灵之主可发射_瞬时箭矢_,造成低于正常箭矢的伤害,但不消耗时间。\n\n若持有加强了速度的弓,远灵之主可进行_三箭连发_。每支箭造成低于正常箭矢的伤害,但能触发附魔。消耗一回合。\n\n若持有加强了伤害的弓,远灵之主可发射_狙击箭矢_。狙击箭矢必定命中,造成基于与目标距离的额外伤害,消耗两回合。 actors.buffs.soulmark.name=灵魂标记 -actors.buffs.soulmark.desc=这个生物的灵魂好似打开了水龙头的木桶,每当其受到物理伤害,术士都能汲取一部分灵魂用于回复自身的血量。\n\n效果持续剩余回合数:%s +actors.buffs.soulmark.desc=这个生物的灵魂好似打开了水龙头的木桶,每当其受到物理伤害,噬魂女皇都能汲取一部分灵魂用于回复自身的血量。\n\n效果持续剩余回合数:%s actors.buffs.stamina.name=体力充沛 actors.buffs.stamina.desc=你感受到了体内无尽的精力,让你可以以更快的速度移动!\n\n当你处于体力充沛状态下你的移动速度将提升50%%,但是这不影响其他活动所消耗的时间。\n\n体力充沛持续时间:%s回合。 @@ -360,25 +360,25 @@ actors.hero.abilities.armorability.cost=充能消耗:_%d_ actors.hero.abilities.warrior.heroicleap.name=英勇之跃 actors.hero.abilities.warrior.heroicleap.prompt=选择要飞跃到的地方 -actors.hero.abilities.warrior.heroicleap.short_desc=战士能向指定地点使用_英勇跳跃_,越过所有的敌人与环境。 -actors.hero.abilities.warrior.heroicleap.desc=战士向指定地点跳跃,越过路径上的所有敌人与环境。不过战士无法越过墙壁或是其它实体地形。 +actors.hero.abilities.warrior.heroicleap.short_desc=蕾零安洁能向指定地点使用_英勇跳跃_,越过所有的敌人与环境。 +actors.hero.abilities.warrior.heroicleap.desc=蕾零安洁向指定地点跳跃,越过路径上的所有敌人与环境。不过蕾零安洁无法越过墙壁或是其它实体地形。 actors.hero.abilities.warrior.shockwave.name=震地冲击 -actors.hero.abilities.warrior.shockwave.short_desc=战士大力锤击地面,向一个锥形区域施以_震地冲击_。被冲击波击中的敌人会受到一定伤害并陷入残废。 -actors.hero.abilities.warrior.shockwave.desc=战士大力锤击地面产生冲击波,冲击波将震击前方 60 度扇形范围 5 格距离内的区域。\n\n被冲击波击中的敌人会陷入 5 回合残废并受到 5~10 点伤害。战士超过10的每点力量会使得该伤害增加 1~2 点。 +actors.hero.abilities.warrior.shockwave.short_desc=蕾零安洁大力锤击地面,向一个锥形区域施以_震地冲击_。被冲击波击中的敌人会受到一定伤害并陷入残废。 +actors.hero.abilities.warrior.shockwave.desc=蕾零安洁大力锤击地面产生冲击波,冲击波将震击前方 60 度扇形范围 5 格距离内的区域。\n\n被冲击波击中的敌人会陷入 5 回合残废并受到 5~10 点伤害。蕾零安洁超过10的每点力量会使得该伤害增加 1~2 点。 actors.hero.abilities.warrior.endure.name=苦痛坚忍 actors.hero.abilities.warrior.endure$enduretracker.name=苦痛之怒 -actors.hero.abilities.warrior.endure$enduretracker.desc=战士将忍受的原始伤害织成愤怒,将大量的额外伤害倾泻给敌人。\n\n额外伤害:%1$d\n剩余攻击次数:%2$d -actors.hero.abilities.warrior.endure.short_desc=战士_苦痛坚忍_,跳过若干回合并大幅抵抗伤害。接下来战士会根据忍受的原始伤害造成额外伤害。 -actors.hero.abilities.warrior.endure.desc=战士首先忍耐3回合,将受到的任何伤害减少一半。此减伤效果优先于其它减伤计算。\n\n在此之后,战士在10回合内的下一次攻击将造成额外伤害。额外伤害等同于在忍耐期间所有伤害的三分之一。未经削减的原始伤害!\n\n如果战士处于连击状态,此能力将补偿3回合连击时间。 +actors.hero.abilities.warrior.endure$enduretracker.desc=蕾零安洁将忍受的原始伤害织成愤怒,将大量的额外伤害倾泻给敌人。\n\n额外伤害:%1$d\n剩余攻击次数:%2$d +actors.hero.abilities.warrior.endure.short_desc=蕾零安洁_苦痛坚忍_,跳过若干回合并大幅抵抗伤害。接下来蕾零安洁会根据忍受的原始伤害造成额外伤害。 +actors.hero.abilities.warrior.endure.desc=蕾零安洁首先忍耐3回合,将受到的任何伤害减少一半。此减伤效果优先于其它减伤计算。\n\n在此之后,蕾零安洁在10回合内的下一次攻击将造成额外伤害。额外伤害等同于在忍耐期间所有伤害的三分之一。未经削减的原始伤害!\n\n如果蕾零安洁处于连击状态,此能力将补偿3回合连击时间。 actors.hero.abilities.mage.elementalblast.name=元素风暴 -actors.hero.abilities.mage.elementalblast.short_desc=法师从老魔杖中释放_元素风暴_,打击以自身为中心的一大片圆形区域,造成伤害并基于灌注的法杖施加不同的效果。 -actors.hero.abilities.mage.elementalblast.desc=法师释放出风暴般的魔力,席卷半径为4的圆形区域,对其中的目标造成15-25点伤害。元素风暴造成的特效随老魔杖灌注的法杖而变。 +actors.hero.abilities.mage.elementalblast.short_desc=茉莉伊洛从老魔杖中释放_元素风暴_,打击以自身为中心的一大片圆形区域,造成伤害并基于灌注的法杖施加不同的效果。 +actors.hero.abilities.mage.elementalblast.desc=茉莉伊洛释放出风暴般的魔力,席卷半径为4的圆形区域,对其中的目标造成15-25点伤害。元素风暴造成的特效随老魔杖灌注的法杖而变。 actors.hero.abilities.mage.elementalblast.generic_desc=元素风暴的效果与法杖向目标施法的效果类似。 actors.hero.abilities.mage.wildmagic.name=狂野魔法 actors.hero.abilities.mage.wildmagic.no_wands=你没有法杖可供施法! -actors.hero.abilities.mage.wildmagic.short_desc=法师引导出法杖中的_狂野魔法_,在单回合内对指定目标随机释放这些法杖多次。 -actors.hero.abilities.mage.wildmagic.desc=法师倾泻出多只法杖的魔力,在一回合内随机释放法杖至多4次。该能力不会释放法师的老魔杖。\n\n这个能力释放法杖时,法杖视为原本等级+1,最多视为+2。这种方式的释放仍需要消耗法杖充能。每只法杖最多释放两次。 +actors.hero.abilities.mage.wildmagic.short_desc=茉莉伊洛引导出法杖中的_狂野魔法_,在单回合内对指定目标随机释放这些法杖多次。 +actors.hero.abilities.mage.wildmagic.desc=茉莉伊洛倾泻出多只法杖的魔力,在一回合内随机释放法杖至多4次。该能力不会释放茉莉伊洛的老魔杖。\n\n这个能力释放法杖时,法杖视为原本等级+1,最多视为+2。这种方式的释放仍需要消耗法杖充能。每只法杖最多释放两次。 actors.hero.abilities.mage.warpbeacon.name=空间信标 actors.hero.abilities.mage.warpbeacon.depths=你无法传送到其它楼层! actors.hero.abilities.mage.warpbeacon.locked_floor=楼层被封锁了,你无法离开! @@ -388,46 +388,46 @@ actors.hero.abilities.mage.warpbeacon.window_desc=你的信标目前设置在了 actors.hero.abilities.mage.warpbeacon.window_tele=返回信标位置 actors.hero.abilities.mage.warpbeacon.window_clear=移除信标 actors.hero.abilities.mage.warpbeacon.window_cancel=取消 -actors.hero.abilities.mage.warpbeacon.short_desc=法师在当前位置设置了一个_空间信标_,他能瞬间传送回信标所在位置。 -actors.hero.abilities.mage.warpbeacon.desc=法师设置了一个可以随时返回的信标。信标设置需要1回合,但返回不消耗时间。\n\n法师在初始条件下无法传送至别的楼层,不能将其放入不可达的区域如上锁的房间。法师返回时若是目标地点有敌人,则会将其弹开。 +actors.hero.abilities.mage.warpbeacon.short_desc=茉莉伊洛在当前位置设置了一个_空间信标_,她能瞬间传送回信标所在位置。 +actors.hero.abilities.mage.warpbeacon.desc=茉莉伊洛设置了一个可以随时返回的信标。信标设置需要1回合,但返回不消耗时间。\n\n茉莉伊洛在初始条件下无法传送至别的楼层,不能将其放入不可达的区域如上锁的房间。茉莉伊洛返回时若是目标地点有敌人,则会将其弹开。 actors.hero.abilities.rogue.smokebomb.name=烟幕爆炸 actors.hero.abilities.rogue.smokebomb.fov=你只能跳到视野范围内的空格子里 actors.hero.abilities.rogue.smokebomb.prompt=选择要跳到的位置 actors.hero.abilities.rogue.smokebomb$ninjalog.name=木桩替身 -actors.hero.abilities.rogue.smokebomb$ninjalog.desc=不知为何敌人坚信这就是盗贼本身。 -actors.hero.abilities.rogue.smokebomb.short_desc=盗贼在原地制造一场_烟幕爆炸_后闪现离去,并使原点周围的敌人失明。 -actors.hero.abilities.rogue.smokebomb.desc=盗贼在原地制造一场烟幕爆炸,并闪现最多6格的距离。闪现无视敌人与环境,但仍会被实体地形如墙壁阻挡。\n\n盗贼原位置周围的敌人将失明5回合。 +actors.hero.abilities.rogue.smokebomb$ninjalog.desc=不知为何敌人坚信这就是极影铃虹本身。 +actors.hero.abilities.rogue.smokebomb.short_desc=极影铃虹在原地制造一场_烟幕爆炸_后闪现离去,并使原点周围的敌人失明。 +actors.hero.abilities.rogue.smokebomb.desc=极影铃虹在原地制造一场烟幕爆炸,并闪现最多6格的距离。闪现无视敌人与环境,但仍会被实体地形如墙壁阻挡。\n\n极影铃虹原位置周围的敌人将失明5回合。 actors.hero.abilities.rogue.deathmark.name=夺命印记 actors.hero.abilities.rogue.deathmark.ally_target=你只能标记敌人。 -actors.hero.abilities.rogue.deathmark.short_desc=盗贼向选中的敌人施加_夺命印记_。被标记的敌人将受到额外伤害,但不会在标记期间死亡。 -actors.hero.abilities.rogue.deathmark.desc=盗贼标记选中的敌人,使其受到额外25%的伤害。标记不耗费时间且持续5回合。\n\n被标记的敌人受到额外伤害,但并不会在标记期间死亡。生命值耗尽的目标在标记结束时立即死亡。 +actors.hero.abilities.rogue.deathmark.short_desc=极影铃虹向选中的敌人施加_夺命印记_。被标记的敌人将受到额外伤害,但不会在标记期间死亡。 +actors.hero.abilities.rogue.deathmark.desc=极影铃虹标记选中的敌人,使其受到额外25%的伤害。标记不耗费时间且持续5回合。\n\n被标记的敌人受到额外伤害,但并不会在标记期间死亡。生命值耗尽的目标在标记结束时立即死亡。 actors.hero.abilities.rogue.deathmark$deathmarktracker.name=夺命印记 actors.hero.abilities.rogue.deathmark$deathmarktracker.desc=这名被标记的敌人受到25%%的额外伤害,但不会在标记期间死亡。\n\n标记剩余:%s回合。 actors.hero.abilities.rogue.shadowclone.name=暗影映像 -actors.hero.abilities.rogue.shadowclone.short_desc=盗贼召唤一个_暗影映像_,并能使唤其帮助自己战斗。 -actors.hero.abilities.rogue.shadowclone.desc=盗贼召唤一个暗影映像,并能使唤其帮助自己战斗。使唤映像不会消耗充能。\n\n映像拥有100点生命与10-20点近战伤害,在激活天赋后这些属性可受到其主人武器与护甲的增益。 +actors.hero.abilities.rogue.shadowclone.short_desc=极影铃虹召唤一个_暗影映像_,并能使唤其帮助自己战斗。 +actors.hero.abilities.rogue.shadowclone.desc=极影铃虹召唤一个暗影映像,并能使唤其帮助自己战斗。使唤映像不会消耗充能。\n\n映像拥有100点生命与10-20点近战伤害,在激活天赋后这些属性可受到其主人武器与护甲的增益。 actors.hero.abilities.rogue.shadowclone$shadowally.name=暗影映像 actors.hero.abilities.rogue.shadowclone$shadowally.direct_follow=你的映像正在跟随你。 actors.hero.abilities.rogue.shadowclone$shadowally.direct_attack=你的映像正在发动攻击! -actors.hero.abilities.rogue.shadowclone$shadowally.desc=一具无形暗影塑造出的盗贼复制体,它一动不动双目空空,烟雾般的黑暗在周围缓缓升腾。\n\n它虽说不上是个完美的复制体,但也是个合格的杀手,并且在特定天赋加持下能从其主人的装备中获益。 +actors.hero.abilities.rogue.shadowclone$shadowally.desc=一具无形暗影塑造出的极影铃虹复制体,它一动不动双目空空,烟雾般的黑暗在周围缓缓升腾。\n\n它虽说不上是个完美的复制体,但也是个合格的杀手,并且在特定天赋加持下能从其主人的装备中获益。 actors.hero.abilities.huntress.spectralblades.name=灵魂飞刃 -actors.hero.abilities.huntress.spectralblades.short_desc=女猎手向一个目标掷出_灵魂飞刃_,根据装备的近战武器造成伤害。 -actors.hero.abilities.huntress.spectralblades.desc=女猎手向一名敌人掷出灵能飞刃,就像用近战武器进行远程攻击。该攻击保留包括附魔的所有近战攻击效果。 +actors.hero.abilities.huntress.spectralblades.short_desc=颐莲梅錵向一个目标掷出_灵魂飞刃_,根据装备的近战武器造成伤害。 +actors.hero.abilities.huntress.spectralblades.desc=颐莲梅錵向一名敌人掷出灵能飞刃,就像用近战武器进行远程攻击。该攻击保留包括附魔的所有近战攻击效果。 actors.hero.abilities.huntress.naturespower.name=自然之力 -actors.hero.abilities.huntress.naturespower.short_desc=女猎手呼唤_自然之力_的协助,在短时间内增加其移动速度与灵能短弓射击速度。 -actors.hero.abilities.huntress.naturespower.desc=女猎手与她的弓注入了自然的力量!这种力量持续 8 回合。\n\n在自然之力的加持下,女猎手拥有双倍的移动速度与+33%的灵能短弓射击速度。这种力量不影响狙击手专精的追加攻击。 +actors.hero.abilities.huntress.naturespower.short_desc=颐莲梅錵呼唤_自然之力_的协助,在短时间内增加其移动速度与灵能短弓射击速度。 +actors.hero.abilities.huntress.naturespower.desc=颐莲梅錵与她的弓注入了自然的力量!这种力量持续 8 回合。\n\n在自然之力的加持下,颐莲梅錵拥有双倍的移动速度与+33%的灵能短弓射击速度。这种力量不影响远灵之主专精的追加攻击。 actors.hero.abilities.huntress.naturespower$naturespowertracker.name=自然之力 -actors.hero.abilities.huntress.naturespower$naturespowertracker.desc=女猎手拥有了暂时的自然之力,增加其移动速度与灵能短弓射击速度。\n\n剩余回合数:%s。 +actors.hero.abilities.huntress.naturespower$naturespowertracker.desc=颐莲梅錵拥有了暂时的自然之力,增加其移动速度与灵能短弓射击速度。\n\n剩余回合数:%s。 actors.hero.abilities.huntress.spirithawk.name=灵能飞鹰 actors.hero.abilities.huntress.spirithawk.no_space=你附近没有可用于召唤的空地。 -actors.hero.abilities.huntress.spirithawk.short_desc=女猎手召唤一只_灵能飞鹰_使魔,协助侦查地形并分散敌人。 -actors.hero.abilities.huntress.spirithawk.desc=女猎手召唤一只灵能飞鹰,飞鹰存在时使用此能力可指引其行动。飞鹰将存在 100 回合,指引飞鹰不消耗任何充能。\n\n灵能飞鹰脆弱且缺乏攻击性,但其迅捷的移动、灵敏的躲避与精准的攻击弥补了这些缺点。飞鹰与女猎手共享视野,免疫所有环境效果,例如火焰、毒气等。飞鹰只在女猎手指引下发起攻击。 +actors.hero.abilities.huntress.spirithawk.short_desc=颐莲梅錵召唤一只_灵能飞鹰_使魔,协助侦查地形并分散敌人。 +actors.hero.abilities.huntress.spirithawk.desc=颐莲梅錵召唤一只灵能飞鹰,飞鹰存在时使用此能力可指引其行动。飞鹰将存在 100 回合,指引飞鹰不消耗任何充能。\n\n灵能飞鹰脆弱且缺乏攻击性,但其迅捷的移动、灵敏的躲避与精准的攻击弥补了这些缺点。飞鹰与颐莲梅錵共享视野,免疫所有环境效果,例如火焰、毒气等。飞鹰只在颐莲梅錵指引下发起攻击。 actors.hero.abilities.huntress.spirithawk$hawkally.name=灵能飞鹰 actors.hero.abilities.huntress.spirithawk$hawkally.direct_follow=你的飞鹰正在跟随你。 actors.hero.abilities.huntress.spirithawk$hawkally.direct_attack=你的飞鹰正在发动攻击! -actors.hero.abilities.huntress.spirithawk$hawkally.desc=一只女猎手召唤的灵能飞鹰,它全身散发着明亮而空灵的蓝光,它不断扭头探查着周围环境。\n\n飞鹰并不适合武力战斗,但其速度与视野使其能够胜任高效的侦查与危险的引敌任务。\n\n飞鹰将在%d回合后消散。 +actors.hero.abilities.huntress.spirithawk$hawkally.desc=一只颐莲梅錵召唤的灵能飞鹰,它全身散发着明亮而空灵的蓝光,它不断扭头探查着周围环境。\n\n飞鹰并不适合武力战斗,但其速度与视野使其能够胜任高效的侦查与危险的引敌任务。\n\n飞鹰将在%d回合后消散。 actors.hero.abilities.huntress.spirithawk$hawkally.desc_dodges=飞鹰将必定闪避接下来的%d次攻击。 actors.hero.abilities.ratmogrify.name=鼠化术 @@ -459,45 +459,71 @@ actors.hero.hero.pain_resist=疼痛使你得以抵抗睡意。 actors.hero.hero.revive=重生十字章迸裂出苏生的能量! ##classes -actors.hero.heroclass.warrior=战士 -actors.hero.heroclass.warrior_desc=战士初始携带一枚可以贴附于护甲的_独特破损纹章。_他在装备附着纹章的护甲时会随时间产生生命值之上的护盾值。纹章可以在护甲之间转移,并且可以携带一级升级。\n\n同时,战士初始携带一柄_破旧的短剑_,_三块投石_,布甲,水袋与绒布包。\n\n战士开局鉴定的物品有:\n_-_鉴定卷轴\n_-_治疗药水\n_-_盛怒卷轴 +actors.hero.heroclass.warrior=蕾零安洁 +actors.hero.heroclass.warrior_desc_item=蕾零安洁初始携带一枚可以贴附于护甲的_独特破损纹章。_\n\n蕾零安洁在装备附着纹章的护甲时会随时间产生生命值之上的护盾值。\n\n纹章可以在护甲之间转移,并且可以携带一级升级。 +actors.hero.heroclass.warrior_desc_loadout=蕾零安洁初始携带一把_破损的短剑。_这把武器的直接近战伤害是所有初始武器中最高的。\n\n蕾零安洁初始携带_三块石子。_石子可以扔出攻击远处,造成一定的少量伤害。\n\n蕾零安洁初始携带一个可以收纳各种药水并保护药水瓶不被冻碎的_药水架。_ +actors.hero.heroclass.warrior_desc_misc=蕾零安洁每次食用食物时都能恢复少量生命值。\n\n蕾零安洁开局鉴定的物品有:\n- 鉴定卷轴\n- 治疗药水\n- 盛怒卷轴 +actors.hero.heroclass.warrior_desc_subclasses=在击杀第二个Boss后可以选择一种专精。蕾零安洁可以在两种专精中二选一: +actors.hero.heroclass.warrior_story=人物背景:\n\n在_寒冰圣都_长大的她从小就知道_狂欢节一事_,她精通_近战搏斗_和_武器使用_。\n\n-同时,她还是寒冰圣都中少有的不会_魔法_的家族。但是,这根本不能让她失去信心。反而,她和一个叫“_LunRes_”的人苦学技术。\n\n-时间长了后,她也和他有了_默契_。当女帝在发布_悬赏_进入地牢调查_真相_的时候,他对她说:“去吧,孩子。是时候直面我们的创始人了。”\n\n-于是,她来到_王都签下协定_,前往了_寻找真相的旅程_。然而……,一切才_刚刚开始_。 +actors.hero.heroclass.huntress_story=人物背景:\n\n来自深渊魔都的她一直明白,一场大的灾难就要来临。她从小就是和她的姑妈学占卜。\n\n也因为这个,她被人嘲笑,但是她并没有把他们的嘲笑当作成一回事。不过一切的都还是在她姑妈离世的那天发生了改变。姑妈在知道自己时日不多后,将她带到_丛林_,并赋予她一把“有灵的弓”,并告诉她:_“有人掩埋了真相,但并不意味着真相无法再次找到。\n\n_前往极地之境,那里才会有_真正的答案。”_说完姑妈便断了气,而她也一直铭记姑妈的遗言。\n\n时至今日,她来到了_极地之境_的入口,并且女帝尚未知情…… +actors.hero.heroclass.rogue_story=人物背景:\n\n她是谁。她来自哪里?没有人知道!但她是人们知道的“皇家盗贼”!每当月圆之夜,12点的钟声敲响之时。人们就会看见一个盗贼进入富人的家中,总是很快的就能拿到一些食物。她偷东西只会偷_食物和水_!\n\n并且总是能得手。她将偷来的食物交给那些穷人,让穷人他们获得救赎。大家都很赞赏她,甚至在有一些富人还专门就把东西放在那里了。有一些富人还放了金钱,但总是会看见她留的一张字条:“_我不需要金银财宝,那东西不能救命!”_,\n\n因此,她被人们叫做“皇家盗贼”面对女帝的悬赏进入地牢调查真相的时候,她只问了一句:_“找到真相能改善穷人的现状吗?”_。\n\n说完便前往地牢的入口,而女帝也在后面对她微微一笑。 +actors.hero.heroclass.mage_story=人物背景:\n\n来自于_绿林圣域_的她一直明白一个道理,真相往往是残酷且无法接受的。\n她从小就是在贵族家里面长大,学习了各种元素魔法,于是她也知道向那个地方发送微弱的魔力信号。\n\n然而,正是这一举动,引起了她家人的注意。\n家人明令禁止她发送_魔力信号_给那个令人畏惧的存在,但茉莉伊洛怎么可能会听,她天生就是好奇心型。于是,家人只好流放她,不让她回来了。\n\n而走投无路的她却得到了_她的帮助_,从此成为了一个_寒冰系魔茉莉伊洛_。\n当女帝在发布悬赏进入地牢调查真相的时候,她心中一紧,莫非是_她?_ -actors.hero.heroclass.mage=法师 -actors.hero.heroclass.mage_desc=法师初始携带一把_老魔杖_。老魔杖的自动充能速度显著快于一般法杖,并且有 1 点额外最大充能数。法师可以将地牢中找到的各式法杖灌注到老魔杖中。\n\n同时,法师初始携带一把已灌注了_魔弹法杖_的老魔杖、布甲、水袋与绒布包。\n\n法师开局鉴定的物品有:\n_- _鉴定卷轴\n_- _液火药剂\n_-_ 升级卷轴 -actors.hero.heroclass.mage_unlock=法师精通各类法杖,并在开局时持有一根_独特的法师魔杖_。\n\n_在游戏中用升级卷轴强化一个道具_以解锁法师。 +actors.hero.heroclass.mage=茉莉伊洛 +actors.hero.heroclass.mage_unlock=茉莉伊洛精通各类法杖,并在开局时持有一根_独特的魔杖_。\n\n_在一局游戏中使用两张升级卷轴_以解锁茉莉伊洛。 +actors.hero.heroclass.mage_desc_item=茉莉伊洛初始携带一把可以被灌注各种法杖内魔力的_独特魔杖。_\n\n魔杖充能比法杖更快,并且有1点额外最大充能数。\n\ + \n魔杖开局就已被注入魔法飞弹。\n而且她还带1个焰浪法杖! +actors.hero.heroclass.mage_desc_loadout=茉莉伊洛初始携带她的魔杖作为近战武器。魔杖的近战伤害是所有初始武器中最低的。\n\n茉莉伊洛可以使用魔杖发动远程魔法攻击。\n\n茉莉伊洛初始携带一个可以收纳各种卷轴并保护它们免受火焰伤害的_卷轴筒。_ +actors.hero.heroclass.mage_desc_misc=茉莉伊洛在第一次使用法杖时就能初步鉴定它。\n\n茉莉伊洛在食用食物时会为她的法杖与魔杖回复少量充能。\n\n茉莉伊洛开局鉴定的物品有:\n- 鉴定卷轴\n- 液火药水\n- 升级卷轴 +actors.hero.heroclass.mage_desc_subclasses=在击杀第二个Boss后可以选择一种专精。茉莉伊洛可以在两种专精中二选一: -actors.hero.heroclass.rogue=盗贼 -actors.hero.heroclass.rogue_desc=盗贼初始携带一件独特神器:_暗影斗篷_。 穿上后,盗贼可以随时将自己隐形。\n\n盗贼能从更远的距离_探测秘密与陷阱_。\n\n同时,盗贼初始携带一柄_匕首_,_三把飞刀_,布甲,水袋与绒布包。\n\n盗贼开局鉴定的物品有:\n_-_鉴定卷轴\n_-_隐形药剂\n_-_探地卷轴 -actors.hero.heroclass.rogue_unlock=盗贼可使用他特有的_暗影斗篷_操控战局,并通过隐身伏击敌人。\n\n_在一局游戏中伏击敌人10次_以解锁盗贼。 +actors.hero.heroclass.rogue=极影铃虹 +actors.hero.heroclass.rogue_unlock=极影铃虹可使用她特有的_暗影斗篷_操控战局,并通过隐身伏击敌人。\n\n_在一局游戏中执行20次伏击_以解锁极影铃虹。 +actors.hero.heroclass.rogue_desc_item=极影铃虹初始携带一件独特神器:_暗影斗篷。_ 穿上后,极影铃虹可以随时将自己隐形。\n\n暗影斗篷和其她神器一样不能被升级卷轴直接强化。暗影斗篷会随极影铃虹的使用而升级。 +actors.hero.heroclass.rogue_desc_loadout=极影铃虹初始携带一把_匕首。_用这把匕首伏击敌人会造成额外伤害。\n\n极影铃虹初始携带_三把飞刀。_飞刀可以扔出攻击远处,并且用飞刀伏击敌人还会造成额外伤害。\n\n极影铃虹初始携带一个可以收纳种子和符石等小件物品的_绒布袋。_ +actors.hero.heroclass.rogue_desc_misc=极影铃虹能探测到更远的秘密和陷阱。\n\n极影铃虹能在地牢中找到更多秘密。\n\n极影铃虹开局鉴定的物品有:\n- 鉴定卷轴\n- 隐形药剂\n- 探地卷轴 +actors.hero.heroclass.rogue_desc_subclasses=在击杀第二个Boss后可以选择一种专精。极影铃虹可以在两种专精中二选一: -actors.hero.heroclass.huntress=女猎手 -actors.hero.heroclass.huntress_desc=女猎手初始携带一把独特的_灵能弓_,拥有无限的魔法弹药。\n\n女猎手可以穿过高草丛而_不将其践踏成草地_。\n\n同时,女猎手初始携带一副_带钉手套_,布甲,水袋与绒布包。\n\n女猎手开局便已鉴定的道具有:\n_-_鉴定卷轴\n_-_灵视药剂\n_-_催眠卷轴 -actors.hero.heroclass.huntress_unlock=女猎手精通投掷武器,并且具有一把能无限射击的_独特灵能弓_。\n\n_在一局游戏中使用投掷武器击中 10 名不同敌人_以解锁女猎手。 +actors.hero.heroclass.huntress=颐莲梅錵 +actors.hero.heroclass.huntress_unlock=颐莲梅錵精通投掷武器,并且具有一把能无限射击的_独特的灵能弓_。\n\n想要解锁颐莲梅錵,请_在一局游戏中在投掷武器的辅助下击杀20名敌人_。 +actors.hero.heroclass.huntress_desc_item=颐莲梅錵开局时有一把_独特的灵能弓_和一个不受使用次数限制的,这把弓可以无限发射魔法箭矢。\n\ + \n这把弓会随着颐莲梅錵等级的提升逐渐加强,并且可以改造或附魔。 +actors.hero.heroclass.huntress_desc_loadout=颐莲梅錵开局携带一对攻速远超其它初始武器的_镶钉手套_。\n\n颐莲梅錵开局的远程武器是一把灵能弓。\n\n颐莲梅錵开局携带一个可以收纳种子和符石等小物件的_绒布袋_。 +actors.hero.heroclass.huntress_desc_misc=颐莲梅錵能够在高草间自由穿行而非将它们踩倒在地。\n\n颐莲梅錵的投掷武器有更高的耐久度。\n\n颐莲梅錵可以察觉障碍后隐匿的敌人。\n\n颐莲梅錵开局鉴定的物品有:\n- 鉴定卷轴\n- 灵视药剂\n- 催眠卷轴 +actors.hero.heroclass.huntress_desc_subclasses=在击杀第二个Boss后可以选择一种专精。颐莲梅錵可以在两种专精中二选一: + +actors.hero.herosubclass.gladiator=角斗之王 +actors.hero.herosubclass.gladiator_desc=成功的近战攻击可以为_角斗之王_积攒连击层数。累积的连击数可用于释放特殊的连击技。 +actors.hero.herosubclass.berserker=狂战领主 +actors.hero.herosubclass.berserker_desc=_狂战领主_在受到伤害的时候会积累怒气,怒气能提高狂战领主的攻击力。在怒气满盈之时,他甚至可以短时间抗拒死亡,但随后会陷入力竭之中。 +actors.hero.herosubclass.warlock=噬魂女皇 +actors.hero.herosubclass.warlock_desc=每当用法杖的效果击中敌人,_噬魂女皇_都有几率标记敌人的灵魂。对被标记的敌人进行物理攻击时,她能回复生命值与饥饿值。 +actors.hero.herosubclass.battlemage=战斗魔女 +actors.hero.herosubclass.battlemage_desc=使用魔杖近战时,_战斗魔女_会获得取决于吸收法杖类型的额外效果。她的魔杖也会在战斗中回复充能。 +actors.hero.herosubclass.assassin=皇家刺客 +actors.hero.herosubclass.assassin_desc=隐形时,_皇家刺客_会准备一次致命的攻击。隐形得越久,这一击的威力越强。 +actors.hero.herosubclass.freerunner=风行之子 +actors.hero.herosubclass.freerunner_desc=_风行之子_在奔跑时会累积动量。动量可以用于开启逸动效果,让他在短时间内拥有两倍的移动速度和额外的闪避能力。 +actors.hero.herosubclass.sniper=远灵之主 +actors.hero.herosubclass.sniper_desc=_远灵之主_乃远程战斗大师。她的远程攻击能穿透护甲。用投掷武器击中目标后,远灵之主能以灵能弓进行一次特殊追击。 +actors.hero.herosubclass.warden=自然仙子 +actors.hero.herosubclass.warden_desc=_自然仙子_与自然之力有强大的联结,这使得自然仙子具有穿透高草的视野,而且种下的种子周围会生出枯草。自然仙子在踩踏植物时会获得额外效果。 + +actors.hero.heroclass.warrior_desc=蕾零安洁初始携带一枚可以贴附于护甲的_独特破损纹章。_他在装备附着纹章的护甲时会随时间产生生命值之上的护盾值。纹章可以在护甲之间转移,并且可以携带一级升级。\n\n同时,蕾零安洁初始携带一柄_破旧的短剑_,_三块投石_,布甲,水袋与绒布包。\n\n蕾零安洁开局鉴定的物品有:\n_-_鉴定卷轴\n_-_治疗药水\n_-_盛怒卷轴 + + +actors.hero.heroclass.mage_desc=茉莉伊洛初始携带一把_老魔杖_。老魔杖的自动充能速度显著快于一般法杖,并且有 1 点额外最大充能数。茉莉伊洛可以将地牢中找到的各式法杖灌注到老魔杖中。\n\n同时,茉莉伊洛初始携带一把已灌注了_魔弹法杖_的老魔杖、布甲、水袋与绒布包。\n\n茉莉伊洛开局鉴定的物品有:\n_- _鉴定卷轴\n_- _液火药剂\n_-_ 升级卷轴 +actors.hero.heroclass.rogue_desc=极影铃虹初始携带一件独特神器:_暗影斗篷_。 穿上后,极影铃虹可以随时将自己隐形。\n\n极影铃虹能从更远的距离_探测秘密与陷阱_。\n\n同时,极影铃虹初始携带一柄_匕首_,_三把飞刀_,布甲,水袋与绒布包。\n\n极影铃虹开局鉴定的物品有:\n_-_鉴定卷轴\n_-_隐形药剂\n_-_探地卷轴 +actors.hero.heroclass.huntress_desc=颐莲梅錵初始携带一把独特的_灵能弓_,拥有无限的魔法弹药。\n\n颐莲梅錵可以穿过高草丛而_不将其践踏成草地_。\n\n同时,颐莲梅錵初始携带一副_带钉手套_,布甲,水袋与绒布包。\n\n颐莲梅錵开局便已鉴定的道具有:\n_-_鉴定卷轴\n_-_灵视药剂\n_-_催眠卷轴 +actors.hero.herosubclass.berserker_short_desc=_狂战领主_在受到伤害的时候会积累怒气,怒气能提高狂战领主的攻击力,并使其短时间抗拒死亡。 +actors.hero.herosubclass.gladiator_short_desc=_角斗之王_会在成功进行攻击时积累连击数。角斗之王可以消耗连击数以使用特殊战技。 +actors.hero.herosubclass.battlemage_short_desc=_战斗魔女_在使用老魔杖近战攻击时会附带额外的法术效果。这些效果取决于老魔杖内灌注的法杖类型。 +actors.hero.herosubclass.warlock_short_desc=_噬魂女皇_在对敌人使用法杖时有几率为其带上灵魂标记。只要噬魂女皇对被标记的敌人造成物理伤害,自身就会回复生命值。 +actors.hero.herosubclass.assassin_short_desc=隐形时,_皇家刺客_会准备一次致命的攻击。耐心等得越久,这一击的威力越强。 +actors.hero.herosubclass.freerunner_short_desc=_风行之子_在奔跑时会累积动量。动量可以用于开启逸动效果,让她在短时间内拥有更高的移动速度和更强的闪避能力。 +actors.hero.herosubclass.sniper_short_desc=_远灵之主_的远程攻击能穿透护甲。用投掷武器击中目标后,远灵之主能以灵能弓进行一次特殊追击。 +actors.hero.herosubclass.warden_short_desc=_自然仙子_具有穿透高草的视野,而且在种植和踩踏植物时会获得额外效果。 -actors.hero.herosubclass.berserker=狂战士 -actors.hero.herosubclass.berserker_short_desc=_狂战士_在受到伤害的时候会积累怒气,怒气能提高狂战士的攻击力,并使其短时间抗拒死亡。 -actors.hero.herosubclass.berserker_desc=_狂战士_在受到物理伤害时会积累怒气,这种怒气甚至可以由被其护甲抵挡的伤害转化而来!怒气会随时间稳定消逝,但将在狂战士生命值较低时流失得更慢。\n狂战士最高可在拥有100%怒气时拥有50%的伤害加成。在这种情况下,若其生命值归零,狂战士将暂时拥有8倍于其平常的最大护盾,并且将在护盾仍然留存时抵抗死亡。但是,狂战士在进行这种抵抗后也会需要时间去恢复气力。 -actors.hero.herosubclass.gladiator=角斗士 -actors.hero.herosubclass.gladiator_short_desc=_角斗士_会在成功进行攻击时积累连击数。角斗士可以消耗连击数以使用特殊战技。 -actors.hero.herosubclass.gladiator_desc=每当使用其装备的武器或投掷武器造成一次成功的攻击时,角斗士都会积累一点连击数。若角斗士没能在五回合内造成一次成功的攻击,则其连击数将被重置。\n\n随着连击数的积累,角斗士将解锁数种连击战技。连击数积累到2,4,6,8,10时各将解锁一种新战技。有些战技能帮助角斗士积累更多连击数,其余的则将消耗其连击数并释放强力攻击。 -actors.hero.herosubclass.battlemage=战斗法师 -actors.hero.herosubclass.battlemage_short_desc=_战斗法师_在使用老魔杖近战攻击时会附带额外的法术效果。这些效果取决于老魔杖内灌注的法杖类型。 -actors.hero.herosubclass.battlemage_desc=战斗法师使用老魔杖近战时会附带类似附魔的额外效果,效果取决于老魔杖吸收的法杖类型,每种法杖各不相同。老魔杖在近战中还会恢复0.5点充能。 -actors.hero.herosubclass.warlock=术士 -actors.hero.herosubclass.warlock_short_desc=_术士_在对敌人使用法杖时有几率为其带上灵魂标记。只要术士对被标记的敌人造成物理伤害,自身就会回复生命值。 -actors.hero.herosubclass.warlock_desc=术士在对敌人使用法杖时有几率为其带上灵魂标记。施加标记的几率与标记的持续时间随法杖等级增加而上升。\n\n在攻击被标记的敌人时,每当造成5点伤害,术士都将回复2点生命值。这种效果只会在造成物理伤害时出现,若使用法杖造成伤害则不会触发它。 -actors.hero.herosubclass.assassin=刺客 -actors.hero.herosubclass.assassin_short_desc=隐形时,_刺客_会准备一次致命的攻击。耐心等得越久,这一击的威力越强。 -actors.hero.herosubclass.assassin_desc=刺客在隐形中准备着强力的一击。隐形时间越长,下次攻击就越致命,9回合时达到最大效果。\n\n刺客遁出阴影,对目标打出强力一击。刺客可以闪现到目标背后,也能立刻处决较弱的目标。 -actors.hero.herosubclass.freerunner=疾行者 -actors.hero.herosubclass.freerunner_short_desc=_疾行者_在奔跑时会累积动量。动量可以用于开启逸动效果,让他在短时间内拥有更高的移动速度和更强的闪避能力。 -actors.hero.herosubclass.freerunner_desc=_疾行者_在奔跑时会累积动量。动量最多累积10点,在不动时会迅速衰减。动能可以开启逸动状态,每点动量可供疾行者飞奔两回合。\n\n逸动状态下的疾行者以双倍速度跑动,并获得正比于自身等级的闪避。逸动状态结束后,疾行者需小休一会以重新积累动量。 -actors.hero.herosubclass.sniper=狙击手 -actors.hero.herosubclass.sniper_short_desc=_狙击手_的远程攻击能穿透护甲。用投掷武器击中目标后,狙击手能以灵能弓进行一次特殊追击。 -actors.hero.herosubclass.sniper_desc=狙击手是远程战斗大师。她的远程攻击无视防御。使用投掷物击中敌人后,女猎手能对目标施以狙击标记,并可以使用灵能短弓对此敌人发射一次追击,追击的形式取决于弓的改造模式。\n\n未改造的弓会速射一只伤害稍低的箭矢,但不消耗任何时间。改造速度的弓会三箭连射,每只箭的伤害较低但能触发附魔,消耗 1 回合。改造伤害的弓会强射一只必定命中的狙击箭矢,根据距离造成额外伤害,但需要消耗 2 回合。 -actors.hero.herosubclass.warden=守望者 -actors.hero.herosubclass.warden_short_desc=_守望者_具有穿透高草的视野,而且在种植和踩踏植物时会获得额外效果。 -actors.hero.herosubclass.warden_desc=守望者与自然之力有强大的联结,这赋予了她多项有关植物的能力。守望者具有穿透高草与枯草的视野。\n\n守望者种下的种子周围会生出草,在踩踏植物时会获得额外效果取代原本效果,使得所有植株对其完全无害。 ##talents actors.hero.talent$improvisedprojectilecooldown.name=即兴投掷-冷却 @@ -509,50 +535,50 @@ actors.hero.talent$seershotcooldown.desc=你刚刚发动过这个天赋,需要 #warrior actors.hero.talent.hearty_meal.title=丰盛一餐 -actors.hero.talent.hearty_meal.desc=_+1:_战士在生命值低于50%的时候进食会恢复_2点生命_,生命值低于25%的时候会恢复_3点生命_。\n\n_+2:_战士在生命值低于50%的时候进食会恢复_3点生命_,生命值低于25%的时候会恢复_5点生命_。 +actors.hero.talent.hearty_meal.desc=_+1:_蕾零安洁在生命值低于50%的时候进食会恢复_2点生命_,生命值低于25%的时候会恢复_3点生命_。\n\n_+2:_蕾零安洁在生命值低于50%的时候进食会恢复_3点生命_,生命值低于25%的时候会恢复_5点生命_。 actors.hero.talent.armsmasters_intuition.title=兵师直觉 -actors.hero.talent.armsmasters_intuition.desc=_+1:_战士鉴定武器和护甲的速度提升为原来的_两倍_。\n\n_+2:_战士会瞬间鉴定_他装备的_武器与护甲。 +actors.hero.talent.armsmasters_intuition.desc=_+1:_蕾零安洁鉴定武器和护甲的速度提升为原来的_两倍_。\n\n_+2:_蕾零安洁会瞬间鉴定_她装备的_武器与护甲。 actors.hero.talent.test_subject.title=实验对象 -actors.hero.talent.test_subject.desc=_+1:_每当战士鉴定了一件物品,他将恢复_ 2 点生命_。\n\n_+2:_每当战士鉴定了一件物品,他将恢复_ 3 点生命_。 +actors.hero.talent.test_subject.desc=_+1:_每当蕾零安洁鉴定了一件物品,她将恢复_ 2 点生命_。\n\n_+2:_每当蕾零安洁鉴定了一件物品,她将恢复_ 3 点生命_。 actors.hero.talent.iron_will.title=钢铁意志 -actors.hero.talent.iron_will.desc=_+1:_ 战士的纹章提供的护盾值上限_提高 1 点_。\n\n_+2:_ 战士的纹章提供的护盾值上限_提高 2 点_。 +actors.hero.talent.iron_will.desc=_+1:_ 蕾零安洁的纹章提供的护盾值上限_提高 1 点_。\n\n_+2:_ 蕾零安洁的纹章提供的护盾值上限_提高 2 点_。 actors.hero.talent.iron_stomach.title=钢铁之胃 -actors.hero.talent.iron_stomach.desc=_+1:_战士进食只花费一个回合,并在进食过程中获得_ 75% 的伤害抗性_。\n\n_+2:_战士进食只花费一个回合,并在进食过程中获得_ 100% 的伤害抗性_ 。 +actors.hero.talent.iron_stomach.desc=_+1:_蕾零安洁进食只花费一个回合,并在进食过程中获得_ 75% 的伤害抗性_。\n\n_+2:_蕾零安洁进食只花费一个回合,并在进食过程中获得_ 100% 的伤害抗性_ 。 actors.hero.talent.restored_willpower.title=意志复苏 -actors.hero.talent.restored_willpower.desc=_+1:_喝下治疗药剂会立刻回复战士破损纹章提供护盾的 _67%_。\n\n_+2:_喝下治疗药剂会立刻回复战士破损纹章提供护盾的 _100%_。\n\n当喝下由治疗药剂合成的魔药与秘药时也会触发这个天赋。 +actors.hero.talent.restored_willpower.desc=_+1:_喝下治疗药剂会立刻回复蕾零安洁破损纹章提供护盾的 _67%_。\n\n_+2:_喝下治疗药剂会立刻回复蕾零安洁破损纹章提供护盾的 _100%_。\n\n当喝下由治疗药剂合成的魔药与秘药时也会触发这个天赋。 actors.hero.talent.runic_transference.title=刻印转移 -actors.hero.talent.runic_transference.desc=_+1:_战士的破损纹章可以像携带一层升级一样携带_普通或稀有刻印_。\n\n_+2:_战士的破损纹章可以像携带一层升级一样携带_普通、稀有、强力、诅咒刻印_。 +actors.hero.talent.runic_transference.desc=_+1:_蕾零安洁的破损纹章可以像携带一层升级一样携带_普通或稀有刻印_。\n\n_+2:_蕾零安洁的破损纹章可以像携带一层升级一样携带_普通、稀有、强力、诅咒刻印_。 actors.hero.talent.lethal_momentum.title=手起刀落 -actors.hero.talent.lethal_momentum.desc=_+1:_战士斩杀敌人的一击有_ 67% 的概率_不消耗回合数。\n\n_+2:_战士斩杀敌人的一击有_ 100% 的概率_不消耗回合数。 +actors.hero.talent.lethal_momentum.desc=_+1:_蕾零安洁斩杀敌人的一击有_ 67% 的概率_不消耗回合数。\n\n_+2:_蕾零安洁斩杀敌人的一击有_ 100% 的概率_不消耗回合数。 actors.hero.talent.improvised_projectiles.title=即兴投掷 -actors.hero.talent.improvised_projectiles.desc=_+1:_战士向敌人扔出非投掷武器的物品时会对其造成 _2 回合_的致盲效果。这个天赋有 50 回合的冷却时间。\n\n_+2:_战士向敌人扔出非投掷武器的物品时会对其造成 _3 回合_的致盲效果。这个天赋有 50 回合的冷却时间。 +actors.hero.talent.improvised_projectiles.desc=_+1:_蕾零安洁向敌人扔出非投掷武器的物品时会对其造成 _2 回合_的致盲效果。这个天赋有 50 回合的冷却时间。\n\n_+2:_蕾零安洁向敌人扔出非投掷武器的物品时会对其造成 _3 回合_的致盲效果。这个天赋有 50 回合的冷却时间。 actors.hero.talent.hold_fast.title=不动如山 -actors.hero.talent.hold_fast.desc=_+1:_当战士进行等待,他在下次移动前获得_0~2 点护甲_。\n\n_+2:_当战士进行等待,他在下次移动前获得_0~4 点护甲_。\n\n_+3:_当战士进行等待,他在下次移动前获得_0~6 点护甲_。 +actors.hero.talent.hold_fast.desc=_+1:_当蕾零安洁进行等待,她在下次移动前获得_0~2 点护甲_。\n\n_+2:_当蕾零安洁进行等待,她在下次移动前获得_0~4 点护甲_。\n\n_+3:_当蕾零安洁进行等待,她在下次移动前获得_0~6 点护甲_。 actors.hero.talent.strongman.title=力大无穷 -actors.hero.talent.strongman.desc=_+1:_战士的力量提升_8%_,向下取整。\n\n_+2:_战士的力量提升_13%_,向下取整。\n\n_+3:_战士的力量提升_18%_,向下取整。 +actors.hero.talent.strongman.desc=_+1:_蕾零安洁的力量提升_8%_,向下取整。\n\n_+2:_蕾零安洁的力量提升_13%_,向下取整。\n\n_+3:_蕾零安洁的力量提升_18%_,向下取整。 actors.hero.talent.endless_rage.title=洪荒之怒 -actors.hero.talent.endless_rage.desc=_+1:_狂战士的怒气上限提升至_110%_。\n\n_+2:_狂战士的怒气上限提升至_120%_。\n\n_+3:_狂战士的怒气上限提升至_130%_。\n\n怒气值超过100%时,伤害提升效果仍为50%。 +actors.hero.talent.endless_rage.desc=_+1:_狂战领主的怒气上限提升至_110%_。\n\n_+2:_狂战领主的怒气上限提升至_120%_。\n\n_+3:_狂战领主的怒气上限提升至_130%_。\n\n怒气值超过100%时,伤害提升效果仍为50%。 actors.hero.talent.berserking_stamina.title=不灭之力 -actors.hero.talent.berserking_stamina.desc=_+1:_狂战士抗拒死亡进入狂暴状态后,获得的_护盾值增加25%_,且从力竭中恢复所需升级数由2级降低至_1.67级_。\n\n_+2:_狂战士抗拒死亡进入狂暴状态后,获得的_护盾值增加50%_,且从力竭中恢复所需升级数由2级降低至_1.33级_。\n\n_+3:_狂战士抗拒死亡进入狂暴状态后,获得的_护盾值增加75%_,且从力竭中恢复所需升级数由2级降低至_1级_。 +actors.hero.talent.berserking_stamina.desc=_+1:_狂战领主抗拒死亡进入狂暴状态后,获得的_护盾值增加25%_,且从力竭中恢复所需升级数由2级降低至_1.67级_。\n\n_+2:_狂战领主抗拒死亡进入狂暴状态后,获得的_护盾值增加50%_,且从力竭中恢复所需升级数由2级降低至_1.33级_。\n\n_+3:_狂战领主抗拒死亡进入狂暴状态后,获得的_护盾值增加75%_,且从力竭中恢复所需升级数由2级降低至_1级_。 actors.hero.talent.enraged_catalyst.title=怒气导魔 -actors.hero.talent.enraged_catalyst.desc=_+1:_狂战士拥有越多怒气,他武器上的附魔或诅咒触发的几率越高,在100%怒气达到最大效果,触发几率_提升至 1.15 倍_。\n\n_+2:_狂战士拥有越多怒气,他武器上的附魔或诅咒触发的几率越高,在100%怒气达到最大效果,触发几率_提升至 1.30 倍_。\n\n_+3:_狂战士拥有越多怒气,他武器上的附魔或诅咒触发的几率越高,在100%怒气达到最大效果,触发几率_提升至 1.45 倍_。 +actors.hero.talent.enraged_catalyst.desc=_+1:_狂战领主拥有越多怒气,她武器上的附魔或诅咒触发的几率越高,在100%怒气达到最大效果,触发几率_提升至 1.15 倍_。\n\n_+2:_狂战领主拥有越多怒气,她武器上的附魔或诅咒触发的几率越高,在100%怒气达到最大效果,触发几率_提升至 1.30 倍_。\n\n_+3:_狂战领主拥有越多怒气,她武器上的附魔或诅咒触发的几率越高,在100%怒气达到最大效果,触发几率_提升至 1.45 倍_。 actors.hero.talent.cleave.title=连战热忱 -actors.hero.talent.cleave.desc=_+1:_当角斗士击杀一名敌人时,_15回合_内再次攻击仍继承连击数。\n\n_+2:_当角斗士击杀一名敌人时,_30回合_内再次攻击仍继承连击数。\n\n_+3:_当角斗士击杀一名敌人时,_45回合_内再次攻击仍继承连击数。 +actors.hero.talent.cleave.desc=_+1:_当角斗之王击杀一名敌人时,_15回合_内再次攻击仍继承连击数。\n\n_+2:_当角斗之王击杀一名敌人时,_30回合_内再次攻击仍继承连击数。\n\n_+3:_当角斗之王击杀一名敌人时,_45回合_内再次攻击仍继承连击数。 actors.hero.talent.lethal_defense.title=以战养战 -actors.hero.talent.lethal_defense.desc=_+1:_当角斗士使用连击技能击杀一名敌人时,他会回复破损纹章护盾值的_33%_。\n\n_+2:_当角斗士使用连击技能击杀一名敌人时,他会回复破损纹章护盾值的_67%_。\n\n_+3:_当角斗士使用连击技能击杀一名敌人时,他会回复破损纹章护盾值的_100%_。 +actors.hero.talent.lethal_defense.desc=_+1:_当角斗之王使用连击技能击杀一名敌人时,她会回复破损纹章护盾值的_33%_。\n\n_+2:_当角斗之王使用连击技能击杀一名敌人时,她会回复破损纹章护盾值的_67%_。\n\n_+3:_当角斗之王使用连击技能击杀一名敌人时,她会回复破损纹章护盾值的_100%_。 actors.hero.talent.enhanced_combo.title=战技强化 -actors.hero.talent.enhanced_combo.desc=_+1:_当角斗士的连击数达到7或以上时,冲击的击退距离提升至3且附带眩晕,并可将敌人击落深渊。\n\n_+2:_除+1的增益外,当角斗士的连击数达到9或以上时,格挡反击对一回合内的多次攻击有效。\n\n_+3:_除+1和+2的增益外,角斗士在使用撞击,横扫和暴雨时可跃过 连击数/3 格的地格来接近敌人。 +actors.hero.talent.enhanced_combo.desc=_+1:_当角斗之王的连击数达到7或以上时,冲击的击退距离提升至3且附带眩晕,并可将敌人击落深渊。\n\n_+2:_除+1的增益外,当角斗之王的连击数达到9或以上时,格挡反击对一回合内的多次攻击有效。\n\n_+3:_除+1和+2的增益外,角斗之王在使用撞击,横扫和暴雨时可跃过 连击数/3 格的地格来接近敌人。 actors.hero.talent.body_slam.title=肉弹冲击 -actors.hero.talent.body_slam.desc=_+1:_战士英勇之跃落地时,对所有相邻敌人造成_25%_防御力的伤害。\n\n_+2:_战士英勇之跃落地时,对所有相邻敌人造成_50%_防御力的伤害。\n\n_+3:_战士英勇之跃落地时,对所有相邻敌人造成_75%_防御力的伤害。\n\n_+4:_战士英勇之跃落地时,对所有相邻敌人造成_100%_防御力的伤害。 +actors.hero.talent.body_slam.desc=_+1:_蕾零安洁英勇之跃落地时,对所有相邻敌人造成_25%_防御力的伤害。\n\n_+2:_蕾零安洁英勇之跃落地时,对所有相邻敌人造成_50%_防御力的伤害。\n\n_+3:_蕾零安洁英勇之跃落地时,对所有相邻敌人造成_75%_防御力的伤害。\n\n_+4:_蕾零安洁英勇之跃落地时,对所有相邻敌人造成_100%_防御力的伤害。 actors.hero.talent.impact_wave.title=堕天一击 -actors.hero.talent.impact_wave.desc=_+1:_战士英勇之跃落地时,击退所有相邻敌人_2_格,有_25%几率_使其获得3回合易伤。\n\n_+2:_战士英勇之跃落地时,击退所有相邻敌人_3_格,有_50%几率_使其获得3回合易伤。\n\n_+3:_战士英勇之跃落地时,击退所有相邻敌人_4_格,有_75%几率_使其获得3回合易伤。\n\n_+4:_战士英勇之跃落地时,击退所有相邻敌人_5_格,有_100%几率_使其获得3回合易伤。 +actors.hero.talent.impact_wave.desc=_+1:_蕾零安洁英勇之跃落地时,击退所有相邻敌人_2_格,有_25%几率_使其获得3回合易伤。\n\n_+2:_蕾零安洁英勇之跃落地时,击退所有相邻敌人_3_格,有_50%几率_使其获得3回合易伤。\n\n_+3:_蕾零安洁英勇之跃落地时,击退所有相邻敌人_4_格,有_75%几率_使其获得3回合易伤。\n\n_+4:_蕾零安洁英勇之跃落地时,击退所有相邻敌人_5_格,有_100%几率_使其获得3回合易伤。 actors.hero.talent.double_jump.title=二段跳跃 -actors.hero.talent.double_jump.desc=_+1:_战士使用英勇跳跃后,3 回合内下一次使用充能消耗减少_16%_。\n\n_+2:_战士使用英勇跳跃后,3 回合内下一次使用充能消耗减少_30%_。\n\n_+3:_战士使用英勇跳跃后,3 回合内下一次使用充能消耗减少_41%_。\n\n_+4:_战士使用英勇跳跃后,3 回合内下一次使用充能消耗减少_50%_。 +actors.hero.talent.double_jump.desc=_+1:_蕾零安洁使用英勇跳跃后,3 回合内下一次使用充能消耗减少_16%_。\n\n_+2:_蕾零安洁使用英勇跳跃后,3 回合内下一次使用充能消耗减少_30%_。\n\n_+3:_蕾零安洁使用英勇跳跃后,3 回合内下一次使用充能消耗减少_41%_。\n\n_+4:_蕾零安洁使用英勇跳跃后,3 回合内下一次使用充能消耗减少_50%_。 actors.hero.talent.expanding_wave.title=广域冲击 actors.hero.talent.expanding_wave.desc=_+1:_震地冲击的射程由5格扩大到_6格_,角度从60度展宽为_75度_。\n\n_+2:_震地冲击的射程由5格扩大到_7格_,角度从60度展宽为_90度_。\n\n_+3:_震地冲击的射程由5格扩大到_8格_,角度从60度展宽为_105度_。\n\n_+4:_震地冲击的射程由5格扩大到_9格_,角度从60度展宽为_120度_。 @@ -564,56 +590,56 @@ actors.hero.talent.shock_force.desc=_+1:_震地冲击伤害增加_20%_,有_2 actors.hero.talent.sustained_retribution.title=持续反击 actors.hero.talent.sustained_retribution.desc=_+1:_反击的额外伤害增加到_115%_,分配给接下来_2_次攻击。\n\n_+2:_反击的额外伤害增加到_130%_,分配给接下来_3_次攻击。\n\n_+3:_反击的额外伤害增加到_145%_,分配给接下来_4_次攻击。\n\n_+4:_反击的额外伤害增加到_160%_,分配给接下来_5_次攻击。\n\n注:原本为100%额外伤害的一次攻击。 actors.hero.talent.shrug_it_off.title=痛觉阈值 -actors.hero.talent.shrug_it_off.desc=_+1:_战士在苦痛坚忍中最多受到_67%最大生命值_的伤害。\n\n_+2:_战士在苦痛坚忍中最多受到_45%最大生命值_的伤害。\n\n_+3:_战士在苦痛坚忍中最多受到_30%最大生命值_的伤害。\n\n_+4:_战士在苦痛坚忍中最多受到_20%最大生命值_的伤害。 +actors.hero.talent.shrug_it_off.desc=_+1:_蕾零安洁在苦痛坚忍中最多受到_67%最大生命值_的伤害。\n\n_+2:_蕾零安洁在苦痛坚忍中最多受到_45%最大生命值_的伤害。\n\n_+3:_蕾零安洁在苦痛坚忍中最多受到_30%最大生命值_的伤害。\n\n_+4:_蕾零安洁在苦痛坚忍中最多受到_20%最大生命值_的伤害。 actors.hero.talent.even_the_odds.title=情势反转 -actors.hero.talent.even_the_odds.desc=_+1:_战士在苦痛坚忍结束时,周围两格每有一名敌人,增加_5%额外伤害_。\n\n_+2:_战士在苦痛坚忍结束时,周围两格每有一名敌人,增加_10%额外伤害_。\n\n_+3:_战士在苦痛坚忍结束时,周围两格每有一名敌人,增加_15%额外伤害_。\n\n_+4:_战士在苦痛坚忍结束时,周围两格每有一名敌人,增加_20%额外伤害_。 +actors.hero.talent.even_the_odds.desc=_+1:_蕾零安洁在苦痛坚忍结束时,周围两格每有一名敌人,增加_5%额外伤害_。\n\n_+2:_蕾零安洁在苦痛坚忍结束时,周围两格每有一名敌人,增加_10%额外伤害_。\n\n_+3:_蕾零安洁在苦痛坚忍结束时,周围两格每有一名敌人,增加_15%额外伤害_。\n\n_+4:_蕾零安洁在苦痛坚忍结束时,周围两格每有一名敌人,增加_20%额外伤害_。 #mage actors.hero.talent.empowering_meal.title=盈能一餐 -actors.hero.talent.empowering_meal.desc=_+1:_进食会为法师接下来3次法杖效果增加 _2 点额外伤害_。\n\n_+2:_进食会为法师接下来3次法杖效果增加 _3 点额外伤害_。 +actors.hero.talent.empowering_meal.desc=_+1:_进食会为茉莉伊洛接下来3次法杖效果增加 _2 点额外伤害_。\n\n_+2:_进食会为茉莉伊洛接下来3次法杖效果增加 _3 点额外伤害_。 actors.hero.talent.scholars_intuition.title=学者直觉 -actors.hero.talent.scholars_intuition.desc=_+1:_法师鉴定法杖的速度提升为原来的_ 3 倍_。\n\n_+2:_法师 _使用法杖时_会将其_瞬间鉴定_。 +actors.hero.talent.scholars_intuition.desc=_+1:_茉莉伊洛鉴定法杖的速度提升为原来的_ 3 倍_。\n\n_+2:_茉莉伊洛 _使用法杖时_会将其_瞬间鉴定_。 actors.hero.talent.tested_hypothesis.title=实验假设 -actors.hero.talent.tested_hypothesis.desc=_+1:_每当法师鉴定了一件物品, 他将获得 _2 回合的法杖充能_。\n\n_+2:_每当法师鉴定了一件物品, 他将获得 _3 回合的法杖充能_。 +actors.hero.talent.tested_hypothesis.desc=_+1:_每当茉莉伊洛鉴定了一件物品, 她将获得 _2 回合的法杖充能_。\n\n_+2:_每当茉莉伊洛鉴定了一件物品, 她将获得 _3 回合的法杖充能_。 actors.hero.talent.backup_barrier.title=备用屏障 -actors.hero.talent.backup_barrier.desc=_+1:_每当法师释放老魔杖最后一点充能,他获得 _3 点护盾_。\n\n_+2:_每当法师释放老魔杖最后一点充能,他获得 _5 点护盾_。 +actors.hero.talent.backup_barrier.desc=_+1:_每当茉莉伊洛释放老魔杖最后一点充能,她获得 _3 点护盾_。\n\n_+2:_每当茉莉伊洛释放老魔杖最后一点充能,她获得 _5 点护盾_。 actors.hero.talent.energizing_meal.title=充能一餐 -actors.hero.talent.energizing_meal.desc=_+1:_法师进食只花费一个回合并获得 _5 回合的法杖充能_。\n\n_+2:_法师进食只花费一个回合并获得 _8 回合的法杖充能_。 +actors.hero.talent.energizing_meal.desc=_+1:_茉莉伊洛进食只花费一个回合并获得 _5 回合的法杖充能_。\n\n_+2:_茉莉伊洛进食只花费一个回合并获得 _8 回合的法杖充能_。 actors.hero.talent.energizing_upgrade.title=充能强化 -actors.hero.talent.energizing_upgrade.desc=_+1:_使用升级卷轴会瞬间为法师的老魔杖恢复 _4 点充能_,可以溢出其充能上限。\n\n_+2:_使用升级卷轴会瞬间为法师的老魔杖恢复 _6 点充能_,可以溢出其充能上限。\n\n当使用升级卷轴合成的秘卷或结晶法术时也会触发这个天赋。 +actors.hero.talent.energizing_upgrade.desc=_+1:_使用升级卷轴会瞬间为茉莉伊洛的老魔杖恢复 _4 点充能_,可以溢出其充能上限。\n\n_+2:_使用升级卷轴会瞬间为茉莉伊洛的老魔杖恢复 _6 点充能_,可以溢出其充能上限。\n\n当使用升级卷轴合成的秘卷或结晶法术时也会触发这个天赋。 actors.hero.talent.wand_preservation.title=法杖回收 -actors.hero.talent.wand_preservation.desc=_+1:_当法师将新的法杖注入老魔杖时,先前灌注的法杖有_ 50% 的概率_以0级状态回收,在回收失败的时候会以 1 个奥术聚酯取而代之。\n\n_+2:_当法师将新的法杖注入老魔杖时,先前灌注的法杖有_ 100% 的概率_以0级状态回收。\n\n此天赋最多能成功回收法杖五次,在那之后将只能将法杖转化为奥术聚酯。 +actors.hero.talent.wand_preservation.desc=_+1:_当茉莉伊洛将新的法杖注入老魔杖时,先前灌注的法杖有_ 50% 的概率_以0级状态回收,在回收失败的时候会以 1 个奥术聚酯取而代之。\n\n_+2:_当茉莉伊洛将新的法杖注入老魔杖时,先前灌注的法杖有_ 100% 的概率_以0级状态回收。\n\n此天赋最多能成功回收法杖五次,在那之后将只能将法杖转化为奥术聚酯。 actors.hero.talent.arcane_vision.title=奥术感知 -actors.hero.talent.arcane_vision.desc=_+1:_当法师使用法杖命中敌人时,获取目标视野,持续 _10 回合_。\n\n_+2:_当法师使用法杖命中敌人时,获取目标视野,持续 _15 回合_。 +actors.hero.talent.arcane_vision.desc=_+1:_当茉莉伊洛使用法杖命中敌人时,获取目标视野,持续 _10 回合_。\n\n_+2:_当茉莉伊洛使用法杖命中敌人时,获取目标视野,持续 _15 回合_。 actors.hero.talent.shield_battery.title=储能护盾 -actors.hero.talent.shield_battery.desc=_+1:_法师能以自身为目标施法,将法杖的每点充能转化为_ 4% 最大生命值_的护盾。\n\n_+2:_法师能以自身为目标施法,将法杖的每点充能转化为_ 6% 最大生命值_的护盾。 +actors.hero.talent.shield_battery.desc=_+1:_茉莉伊洛能以自身为目标施法,将法杖的每点充能转化为_ 4% 最大生命值_的护盾。\n\n_+2:_茉莉伊洛能以自身为目标施法,将法杖的每点充能转化为_ 6% 最大生命值_的护盾。 actors.hero.talent.empowering_scrolls.title=卷轴回流 -actors.hero.talent.empowering_scrolls.desc=_+1:_法师阅读一张卷轴后,下一次法杖效果_提升 3 级_。\n\n_+2:_法师阅读一张卷轴后,下两次法杖效果_提升 3 级_。\n\n_+3:_法师阅读一张卷轴后,下三次法杖效果_提升 3 级_。 +actors.hero.talent.empowering_scrolls.desc=_+1:_茉莉伊洛阅读一张卷轴后,下一次法杖效果_提升 3 级_。\n\n_+2:_茉莉伊洛阅读一张卷轴后,下两次法杖效果_提升 3 级_。\n\n_+3:_茉莉伊洛阅读一张卷轴后,下三次法杖效果_提升 3 级_。 actors.hero.talent.ally_warp.title=移形换位 -actors.hero.talent.ally_warp.desc=_+1: _法师可以通过点击与一名_2格范围内_的友方单位瞬间交换位置。\n\n_+2: _法师可以通过点击与一名_4格范围内_的友方单位瞬间交换位置。\n\n_+3: _法师可以通过点击与一名_6格范围内_的友方单位瞬间交换位置。\n\n法师不能与无法移动的友方单位交换位置。 +actors.hero.talent.ally_warp.desc=_+1: _茉莉伊洛可以通过点击与一名_2格范围内_的友方单位瞬间交换位置。\n\n_+2: _茉莉伊洛可以通过点击与一名_4格范围内_的友方单位瞬间交换位置。\n\n_+3: _茉莉伊洛可以通过点击与一名_6格范围内_的友方单位瞬间交换位置。\n\n茉莉伊洛不能与无法移动的友方单位交换位置。 actors.hero.talent.empowered_strike.title=蓄能打击 -actors.hero.talent.empowered_strike.desc=_+1:_战斗法师使用老魔杖施法后,下一次用其造成的近战攻击将产生_25%额外伤害_。\n\n_+2:_战斗法师使用老魔杖施法后,下一次用其造成的近战攻击将产生_50%额外伤害_。\n\n_+3:_战斗法师使用老魔杖施法后,下一次用其造成的近战攻击将产生_75%额外伤害_。 +actors.hero.talent.empowered_strike.desc=_+1:_战斗魔女使用老魔杖施法后,下一次用其造成的近战攻击将产生_25%额外伤害_。\n\n_+2:_战斗魔女使用老魔杖施法后,下一次用其造成的近战攻击将产生_50%额外伤害_。\n\n_+3:_战斗魔女使用老魔杖施法后,下一次用其造成的近战攻击将产生_75%额外伤害_。 actors.hero.talent.mystical_charge.title=充能秘术 -actors.hero.talent.mystical_charge.desc=_+1:_当战斗法师用老魔杖近战击中敌人时,会获得_0.5回合_的神器充能效果。\n\n_+2:_当战斗法师用老魔杖近战击中敌人时,会获得_1回合_的神器充能效果。\n\n_+3:_当战斗法师用老魔杖近战击中敌人时,会获得_1.5回合_的神器充能效果。 +actors.hero.talent.mystical_charge.desc=_+1:_当战斗魔女用老魔杖近战击中敌人时,会获得_0.5回合_的神器充能效果。\n\n_+2:_当战斗魔女用老魔杖近战击中敌人时,会获得_1回合_的神器充能效果。\n\n_+3:_当战斗魔女用老魔杖近战击中敌人时,会获得_1.5回合_的神器充能效果。 actors.hero.talent.excess_charge.title=盈能屏障 -actors.hero.talent.excess_charge.desc=_+1:_战斗法师在使用满充能的老魔杖近战攻击时,有_20%几率_获得2倍于魔杖等级的护盾值。\n\n_+2:_战斗法师在使用满充能的老魔杖近战攻击时,有_40%几率_获得2倍于魔杖等级的护盾值。\n\n_+3:_战斗法师在使用满充能的老魔杖近战攻击时,有_60%几率_获得2倍于魔杖等级的护盾值。 +actors.hero.talent.excess_charge.desc=_+1:_战斗魔女在使用满充能的老魔杖近战攻击时,有_20%几率_获得2倍于魔杖等级的护盾值。\n\n_+2:_战斗魔女在使用满充能的老魔杖近战攻击时,有_40%几率_获得2倍于魔杖等级的护盾值。\n\n_+3:_战斗魔女在使用满充能的老魔杖近战攻击时,有_60%几率_获得2倍于魔杖等级的护盾值。 actors.hero.talent.soul_siphon.title=灵魂分食 -actors.hero.talent.soul_siphon.desc=_+1:_其他单位的近战攻击同样会触发术士的灵魂标记,但只有_13%效果_。\n\n_+2:_其他单位的近战攻击同样会触发术士的灵魂标记,但只有_27%效果_。\n\n_+3:_其他单位的近战攻击同样会触发术士的灵魂标记,但只有_40%效果_。 +actors.hero.talent.soul_siphon.desc=_+1:_其她单位的近战攻击同样会触发噬魂女皇的灵魂标记,但只有_13%效果_。\n\n_+2:_其她单位的近战攻击同样会触发噬魂女皇的灵魂标记,但只有_27%效果_。\n\n_+3:_其她单位的近战攻击同样会触发噬魂女皇的灵魂标记,但只有_40%效果_。 actors.hero.talent.soul_eater.title=噬魂秘法 -actors.hero.talent.soul_eater.desc=_+1:_灵魂标记单位受到的每点物理伤害都会提供相当于_0.33回合_的饥饿值;当持有灵魂标记的单位死亡时,术士有_10%几率_触发一次进食效果。\n\n_+2:_灵魂标记单位受到的每点物理伤害都会提供相当于_0.67回合_的饥饿值;当持有灵魂标记的单位死亡时,术士有_20%几率_触发一次进食效果。\n\n_+3:_灵魂标记单位受到的每点物理伤害都会提供相当于_1回合_的饥饿值;当持有灵魂标记的单位死亡时,术士有_30%几率_触发一次进食效果。 +actors.hero.talent.soul_eater.desc=_+1:_灵魂标记单位受到的每点物理伤害都会提供相当于_0.33回合_的饥饿值;当持有灵魂标记的单位死亡时,噬魂女皇有_10%几率_触发一次进食效果。\n\n_+2:_灵魂标记单位受到的每点物理伤害都会提供相当于_0.67回合_的饥饿值;当持有灵魂标记的单位死亡时,噬魂女皇有_20%几率_触发一次进食效果。\n\n_+3:_灵魂标记单位受到的每点物理伤害都会提供相当于_1回合_的饥饿值;当持有灵魂标记的单位死亡时,噬魂女皇有_30%几率_触发一次进食效果。 actors.hero.talent.necromancers_minions.title=怨灵爪牙 -actors.hero.talent.necromancers_minions.desc=_+1:_拥有灵魂标记的敌人死亡时,有_13%几率_成为一只被术士腐化的怨灵。\n\n_+2:_拥有灵魂标记的敌人死亡时,有_27%几率_成为一只被术士腐化的怨灵。\n\n_+3:_拥有灵魂标记的敌人死亡时,有_40%几率_成为一只被术士腐化的怨灵。 +actors.hero.talent.necromancers_minions.desc=_+1:_拥有灵魂标记的敌人死亡时,有_13%几率_成为一只被噬魂女皇腐化的怨灵。\n\n_+2:_拥有灵魂标记的敌人死亡时,有_27%几率_成为一只被噬魂女皇腐化的怨灵。\n\n_+3:_拥有灵魂标记的敌人死亡时,有_40%几率_成为一只被噬魂女皇腐化的怨灵。 actors.hero.talent.blast_radius.title=广域打击 actors.hero.talent.blast_radius.desc=_+1:_元素风暴的打击半径从4格扩大到 _5格_。\n\n_+2:_元素风暴的打击半径从4格扩大到 _6格_。\n\n_+3:_元素风暴的打击半径从4格扩大到 _7格_。\n\n_+4:_元素风暴的打击半径从4格扩大到 _8格_。 actors.hero.talent.elemental_power.title=元素之力 actors.hero.talent.elemental_power.desc=_+1:_元素风暴的威力提升_20%_。\n\n_+2:_元素风暴的威力提升_40%_。\n\n_+3:_元素风暴的威力提升_60%_。\n\n_+4:_元素风暴的威力提升_80%_。 actors.hero.talent.reactive_barrier.title=反应屏障 -actors.hero.talent.reactive_barrier.desc=_+1:_元素风暴每击中一个目标,法师获得_2点护盾_,最多计算5个目标。\n\n_+2:_元素风暴每击中一个目标,法师获得_4点护盾_,最多计算5个目标。\n\n_+3:_元素风暴每击中一个目标,法师获得_6点护盾_,最多计算5个目标。\n\n_+4:_元素风暴每击中一个目标,法师获得_8点护盾_,最多计算5个目标。 +actors.hero.talent.reactive_barrier.desc=_+1:_元素风暴每击中一个目标,茉莉伊洛获得_2点护盾_,最多计算5个目标。\n\n_+2:_元素风暴每击中一个目标,茉莉伊洛获得_4点护盾_,最多计算5个目标。\n\n_+3:_元素风暴每击中一个目标,茉莉伊洛获得_6点护盾_,最多计算5个目标。\n\n_+4:_元素风暴每击中一个目标,茉莉伊洛获得_8点护盾_,最多计算5个目标。 actors.hero.talent.wild_power.title=奥能风暴 actors.hero.talent.wild_power.desc=_+1:_释放狂野魔法时,法杖会被视为原等级_+1_或_+2_,最高被视为+3。\n\n_+2:_释放狂野魔法时,法杖会被视为原等级_+2_,最高被视为+4。\n\n_+3:_释放狂野魔法时,法杖会被视为原等级_+2_或_+3_,最高被视为+5。\n\n_+4:_释放狂野魔法时,法杖会被视为原等级_+3_,最高被视为+6。 @@ -623,63 +649,63 @@ actors.hero.talent.conserved_magic.title=节能施法 actors.hero.talent.conserved_magic.desc=_+1:_狂野魔法每次释放法杖消耗充能从1点下降至_0.67_点。\n每一只法杖有 _25%_ 概率可以被释放3次。\n\n_+2:_狂野魔法每次释放法杖消耗充能从1点下降至_0.45_点。\n每一只法杖有 _50%_ 概率可以被释放3次。\n\n_+3:_狂野魔法每次释放法杖消耗充能从1点下降至_0.3_点。\n每一只法杖有 _75%_ 概率可以被释放3次。\n\n_+4:_狂野魔法每次释放法杖消耗充能从1点下降至_0.2_点。\n每一只法杖有 _100%_ 概率可以被释放3次。 actors.hero.talent.telefrag.title=传送挤压 -actors.hero.talent.telefrag.desc=_+1:_当法师传送回信标与另一角色发生碰撞时,法师对其造成_10-15点_伤害,但自己会受到_5点伤害_。\n\n_+2:_当法师传送回信标与另一角色发生碰撞时,法师对其造成_20-30点_伤害,但自己会受到_10点伤害_。\n\n_+3:_当法师传送回信标与另一角色发生碰撞时,法师对其造成_30-45点_伤害,但自己会受到_15点伤害_。\n\n_+4:_当法师传送回信标与另一角色发生碰撞时,法师对其造成_40-60点_伤害,但自己会受到_20点伤害_。\n\n玩家不会死于自伤,且该伤害可由魔法抵抗效果减免。 +actors.hero.talent.telefrag.desc=_+1:_当茉莉伊洛传送回信标与另一角色发生碰撞时,茉莉伊洛对其造成_10-15点_伤害,但自己会受到_5点伤害_。\n\n_+2:_当茉莉伊洛传送回信标与另一角色发生碰撞时,茉莉伊洛对其造成_20-30点_伤害,但自己会受到_10点伤害_。\n\n_+3:_当茉莉伊洛传送回信标与另一角色发生碰撞时,茉莉伊洛对其造成_30-45点_伤害,但自己会受到_15点伤害_。\n\n_+4:_当茉莉伊洛传送回信标与另一角色发生碰撞时,茉莉伊洛对其造成_40-60点_伤害,但自己会受到_20点伤害_。\n\n玩家不会死于自伤,且该伤害可由魔法抵抗效果减免。 actors.hero.talent.remote_beacon.title=彼方信标 -actors.hero.talent.remote_beacon.desc=_+1:_法师可以在_4格_内的任意一处放置一个信标。\n\n_+2:_法师可以在_8格_内的任意一处放置一个信标。\n\n_+3:_法师可以在_10格_内的任意一处放置一个信标。\n\n_+4:_法师可以在_16格_内的任意一处放置一个信标。\n\n法师无法在其不可抵达的位置放置信标。 +actors.hero.talent.remote_beacon.desc=_+1:_茉莉伊洛可以在_4格_内的任意一处放置一个信标。\n\n_+2:_茉莉伊洛可以在_8格_内的任意一处放置一个信标。\n\n_+3:_茉莉伊洛可以在_10格_内的任意一处放置一个信标。\n\n_+4:_茉莉伊洛可以在_16格_内的任意一处放置一个信标。\n\n茉莉伊洛无法在其不可抵达的位置放置信标。 actors.hero.talent.longrange_warp.title=长途传送 -actors.hero.talent.longrange_warp.desc=_+1:_法师能够跨层传送,但消耗_150%的充能_。\n\n_+2:_法师能够跨层传送,但消耗_117%的充能_。\n\n_+3:_法师能够跨层传送,且仅消耗_83%的充能_。\n\n_+4:_法师能够跨层传送,且仅消耗_50%的充能_。\n\n法师不能借助此能力离开封锁的楼层。 +actors.hero.talent.longrange_warp.desc=_+1:_茉莉伊洛能够跨层传送,但消耗_150%的充能_。\n\n_+2:_茉莉伊洛能够跨层传送,但消耗_117%的充能_。\n\n_+3:_茉莉伊洛能够跨层传送,且仅消耗_83%的充能_。\n\n_+4:_茉莉伊洛能够跨层传送,且仅消耗_50%的充能_。\n\n茉莉伊洛不能借助此能力离开封锁的楼层。 #rogue actors.hero.talent.cached_rations.title=备用口粮 -actors.hero.talent.cached_rations.desc=_+1:_盗贼在探索地下城的前期可以从宝箱中找到 _4块小型口粮_。\n\n_+2:_盗贼在探索地下城的前期可以从宝箱中找到 _6块小型口粮_。 +actors.hero.talent.cached_rations.desc=_+1:_极影铃虹在探索地下城的前期可以从宝箱中找到 _4块小型口粮_。\n\n_+2:_极影铃虹在探索地下城的前期可以从宝箱中找到 _6块小型口粮_。 actors.hero.talent.thiefs_intuition.title=窃贼直觉 -actors.hero.talent.thiefs_intuition.desc=_+1:__装备戒指时_盗贼将以两倍于平时的速度鉴定该戒指,并且在_装备戒指时_鉴定其种类。\n\n_+2:__装备戒指时_盗贼将立刻鉴定该戒指,并且在_拾取戒指时_鉴定其种类。 +actors.hero.talent.thiefs_intuition.desc=_+1:__装备戒指时_极影铃虹将以两倍于平时的速度鉴定该戒指,并且在_装备戒指时_鉴定其种类。\n\n_+2:__装备戒指时_极影铃虹将立刻鉴定该戒指,并且在_拾取戒指时_鉴定其种类。 actors.hero.talent.sucker_punch.title=阴险打击 -actors.hero.talent.sucker_punch.desc=_+1:_初次伏击一名敌人时盗贼将造成_ 1~2 点额外伤害_。\n\n_+2:_初次伏击一名敌人时盗贼将造成_ 2 点额外伤害_。 +actors.hero.talent.sucker_punch.desc=_+1:_初次伏击一名敌人时极影铃虹将造成_ 1~2 点额外伤害_。\n\n_+2:_初次伏击一名敌人时极影铃虹将造成_ 2 点额外伤害_。 actors.hero.talent.protective_shadows.title=暗影庇护 -actors.hero.talent.protective_shadows.desc=_+1:_盗贼在斗篷激活时,_每两回合_获得一点护盾,_最多 3 点_。\n\n_+2:_盗贼在斗篷激活时,_每回合_获得一点护盾,_最多 5 点_。 +actors.hero.talent.protective_shadows.desc=_+1:_极影铃虹在斗篷激活时,_每两回合_获得一点护盾,_最多 3 点_。\n\n_+2:_极影铃虹在斗篷激活时,_每回合_获得一点护盾,_最多 5 点_。 actors.hero.talent.mystical_meal.title=秘术祭食 -actors.hero.talent.mystical_meal.desc=_+1:_盗贼进食仅消耗1回合,并提供_3回合的神器充能_。\n\n_+1:_盗贼进食仅消耗1回合,并提供_5回合的神器充能_。\n\n这项天赋的充能效果对丰饶之角无效。 +actors.hero.talent.mystical_meal.desc=_+1:_极影铃虹进食仅消耗1回合,并提供_3回合的神器充能_。\n\n_+1:_极影铃虹进食仅消耗1回合,并提供_5回合的神器充能_。\n\n这项天赋的充能效果对丰饶之角无效。 actors.hero.talent.mystical_upgrade.title=升阶秘法 -actors.hero.talent.mystical_upgrade.desc=_+1:_使用升级卷轴时会立即为盗贼的披风提供 _2 点充能_,这个效果可以溢出披风目前的充能上限。\n\n_+2:_使用升级卷轴时会立即为盗贼的披风提供 _3 点充能_,这个效果可以溢出披风目前的充能上限。\n\n当使用由升级卷轴合成的秘卷或法术结晶时也会触发这个天赋。 +actors.hero.talent.mystical_upgrade.desc=_+1:_使用升级卷轴时会立即为极影铃虹的披风提供 _2 点充能_,这个效果可以溢出披风目前的充能上限。\n\n_+2:_使用升级卷轴时会立即为极影铃虹的披风提供 _3 点充能_,这个效果可以溢出披风目前的充能上限。\n\n当使用由升级卷轴合成的秘卷或法术结晶时也会触发这个天赋。 actors.hero.talent.wide_search.title=广域搜索 -actors.hero.talent.wide_search.desc=_+1:_盗贼的搜索范围由方形 5x5 增幅至 _圆形 7x7_。\n\n_+2:_盗贼的搜索范围由方形 5x5 增幅至 _方形 7x7_。 +actors.hero.talent.wide_search.desc=_+1:_极影铃虹的搜索范围由方形 5x5 增幅至 _圆形 7x7_。\n\n_+2:_极影铃虹的搜索范围由方形 5x5 增幅至 _方形 7x7_。 actors.hero.talent.silent_steps.title=无声步伐 -actors.hero.talent.silent_steps.desc=_+1:_盗贼不会惊醒_距其3格或更远的敌人_。\n\n_+2:_盗贼不会惊醒_未与其相邻的敌人_。 +actors.hero.talent.silent_steps.desc=_+1:_极影铃虹不会惊醒_距其3格或更远的敌人_。\n\n_+2:_极影铃虹不会惊醒_未与其相邻的敌人_。 actors.hero.talent.rogues_foresight.title=行窃预知 -actors.hero.talent.rogues_foresight.desc=_+1:_当盗贼进入有隐藏房间的新楼层时,有 _50% 的概率察觉_该层有隐藏房间。\n\n_+2:_当盗贼进入有隐藏房间的新楼层时,有 _75% 的概率察觉_该层有隐藏房间。 +actors.hero.talent.rogues_foresight.desc=_+1:_当极影铃虹进入有隐藏房间的新楼层时,有 _50% 的概率察觉_该层有隐藏房间。\n\n_+2:_当极影铃虹进入有隐藏房间的新楼层时,有 _75% 的概率察觉_该层有隐藏房间。 actors.hero.talent.light_cloak.title=轻便斗篷 -actors.hero.talent.light_cloak.desc=_+1:_盗贼不装备暗影斗篷也能使用其功能,但未装备时斗篷的充能速率会降至_25%_。\n\n_+2:_盗贼不装备暗影斗篷也能使用其功能,但未装备时斗篷的充能速率会降至_50%_。\n\n_+3:_盗贼不装备暗影斗篷也能使用其功能,但未装备时斗篷的充能速率会降至_75%_。 +actors.hero.talent.light_cloak.desc=_+1:_极影铃虹不装备暗影斗篷也能使用其功能,但未装备时斗篷的充能速率会降至_25%_。\n\n_+2:_极影铃虹不装备暗影斗篷也能使用其功能,但未装备时斗篷的充能速率会降至_50%_。\n\n_+3:_极影铃虹不装备暗影斗篷也能使用其功能,但未装备时斗篷的充能速率会降至_75%_。 actors.hero.talent.enhanced_rings.title=戒指强化 -actors.hero.talent.enhanced_rings.desc=_+1:_使用神器后的_3回合_内,盗贼装备的所有戒指都会提升1级。\n\n_+2:_使用神器后的_6回合_内,盗贼装备的所有戒指都会提升1级。\n\n_+3:_使用神器后的_9回合_内,盗贼装备的所有戒指都会提升1级。 +actors.hero.talent.enhanced_rings.desc=_+1:_使用神器后的_3回合_内,极影铃虹装备的所有戒指都会提升1级。\n\n_+2:_使用神器后的_6回合_内,极影铃虹装备的所有戒指都会提升1级。\n\n_+3:_使用神器后的_9回合_内,极影铃虹装备的所有戒指都会提升1级。 actors.hero.talent.enhanced_lethality.title=直击要害 -actors.hero.talent.enhanced_lethality.desc=_+1:_刺客可以根据潜伏阶段直接斩杀生命值低于_ 4/13/27/67% _的目标。\n\n_+2:_刺客可以根据潜伏阶段直接斩杀生命值低于_ 5/17/33/83% _的目标。\n\n_+3:_刺客可以根据潜伏阶段直接斩杀生命值低于_ 6/20/40/100% _的目标。\n\n注:原先为 3/10/20/40%。 +actors.hero.talent.enhanced_lethality.desc=_+1:_皇家刺客可以根据潜伏阶段直接斩杀生命值低于_ 4/13/27/67% _的目标。\n\n_+2:_皇家刺客可以根据潜伏阶段直接斩杀生命值低于_ 5/17/33/83% _的目标。\n\n_+3:_皇家刺客可以根据潜伏阶段直接斩杀生命值低于_ 6/20/40/100% _的目标。\n\n注:原先为 3/10/20/40%。 actors.hero.talent.assassins_reach.title=超距索命 -actors.hero.talent.assassins_reach.desc=_+1:_刺客每个阶段的潜伏攻击闪现范围延长至_ 1/3/4/6 格_。\n\n_+2:_刺客每个阶段的潜伏攻击闪现范围延长至_ 2/4/6/8 格_。\n\n_+3:_刺客每个阶段的潜伏攻击闪现范围延长至_ 2/5/7/10 格_。\n\n注:原先为 1/2/3/4 格。 +actors.hero.talent.assassins_reach.desc=_+1:_皇家刺客每个阶段的潜伏攻击闪现范围延长至_ 1/3/4/6 格_。\n\n_+2:_皇家刺客每个阶段的潜伏攻击闪现范围延长至_ 2/4/6/8 格_。\n\n_+3:_皇家刺客每个阶段的潜伏攻击闪现范围延长至_ 2/5/7/10 格_。\n\n注:原先为 1/2/3/4 格。 actors.hero.talent.bounty_hunter.title=赏金猎手 -actors.hero.talent.bounty_hunter.desc=_+1:_被刺客用技能刺杀的敌人,依据刺杀技能的等级,有25/50/75/100%的概率额外掉落_15金币_。\n\n_+2:_被刺客用技能刺杀的敌人,依据刺杀技能的等级,有25/50/75/100%的概率额外掉落_30金币_。\n\n_+3:_被刺客用技能刺杀的敌人,依据刺杀技能的等级,有25/50/75/100%的概率额外掉落_45金币_。 +actors.hero.talent.bounty_hunter.desc=_+1:_被皇家刺客用技能刺杀的敌人,依据刺杀技能的等级,有25/50/75/100%的概率额外掉落_15金币_。\n\n_+2:_被皇家刺客用技能刺杀的敌人,依据刺杀技能的等级,有25/50/75/100%的概率额外掉落_30金币_。\n\n_+3:_被皇家刺客用技能刺杀的敌人,依据刺杀技能的等级,有25/50/75/100%的概率额外掉落_45金币_。 actors.hero.talent.evasive_armor.title=灵猴之护 -actors.hero.talent.evasive_armor.desc=_+1:_处于逸动状态时,疾行者的护甲每拥有1点额外力量便获得_1点闪避_。\n\n_+2:_处于逸动状态时,疾行者的护甲每拥有1点额外力量便获得_2点闪避_。\n\n_+3:_处于逸动状态时,疾行者的护甲每拥有1点额外力量便获得_3点闪避_。 +actors.hero.talent.evasive_armor.desc=_+1:_处于逸动状态时,风行之子的护甲每拥有1点额外力量便获得_1点闪避_。\n\n_+2:_处于逸动状态时,风行之子的护甲每拥有1点额外力量便获得_2点闪避_。\n\n_+3:_处于逸动状态时,风行之子的护甲每拥有1点额外力量便获得_3点闪避_。 actors.hero.talent.projectile_momentum.title=飞速投掷 -actors.hero.talent.projectile_momentum.desc=_+1:_处于逸动状态时,疾行者使用投掷武器时获得额外的_ 20% 命中与 15% 伤害_。\n\n_+2:_处于逸动状态时,疾行者使用投掷武器时获得额外的_ 40% 命中与 30% 伤害_。\n\n_+3:_处于逸动状态时,疾行者使用投掷武器时获得额外的_ 60% 命中与 45% 伤害_。 +actors.hero.talent.projectile_momentum.desc=_+1:_处于逸动状态时,风行之子使用投掷武器时获得额外的_ 20% 命中与 15% 伤害_。\n\n_+2:_处于逸动状态时,风行之子使用投掷武器时获得额外的_ 40% 命中与 30% 伤害_。\n\n_+3:_处于逸动状态时,风行之子使用投掷武器时获得额外的_ 60% 命中与 45% 伤害_。 actors.hero.talent.speedy_stealth.title=无人之境 -actors.hero.talent.speedy_stealth.desc=_+1:_疾行者在隐身时,每回合获得2层动量。\n\n_+2:_除获得+1的增益外,当疾行者隐身时,逸动效果持续的回合数不会下降。\n\n_+3:_除获得+1,+2的增益外,当疾行者隐身时,不论其是否处于逸动状态,他的移动速度都会翻倍。 +actors.hero.talent.speedy_stealth.desc=_+1:_风行之子在隐身时,每回合获得2层动量。\n\n_+2:_除获得+1的增益外,当风行之子隐身时,逸动效果持续的回合数不会下降。\n\n_+3:_除获得+1,+2的增益外,当风行之子隐身时,不论其是否处于逸动状态,她的移动速度都会翻倍。 actors.hero.talent.hasty_retreat.title=猜我在哪 -actors.hero.talent.hasty_retreat.desc=_+1:_盗贼在闪现后获得_1回合_的极速与隐身。\n\n_+2:_盗贼在闪现后获得_2回合_的极速与隐身。\n\n_+3:_盗贼在闪现后获得_3回合_的极速与隐身。\n\n_+4:_盗贼在闪现后获得_4回合_的极速与隐身。 +actors.hero.talent.hasty_retreat.desc=_+1:_极影铃虹在闪现后获得_1回合_的极速与隐身。\n\n_+2:_极影铃虹在闪现后获得_2回合_的极速与隐身。\n\n_+3:_极影铃虹在闪现后获得_3回合_的极速与隐身。\n\n_+4:_极影铃虹在闪现后获得_4回合_的极速与隐身。 actors.hero.talent.body_replacement.title=替身掩护 -actors.hero.talent.body_replacement.desc=_+1:_闪现时,盗贼会留下一个有_ 20 点生命与 1-3 点护甲_的替身木桩。\n\n_+2:_闪现时,盗贼会留下一个有_ 40 点生命与 2-6 点护甲_的替身木桩。\n\n_+3:_闪现时,盗贼会留下一个有_ 60 点生命与 3-9 点护甲_的替身木桩。\n\n_+4:_闪现时,盗贼会留下一个有_ 80 点生命与 4~12 点护甲_的替身木桩。\n\n同一时间只可存在一个替身木桩。 +actors.hero.talent.body_replacement.desc=_+1:_闪现时,极影铃虹会留下一个有_ 20 点生命与 1-3 点护甲_的替身木桩。\n\n_+2:_闪现时,极影铃虹会留下一个有_ 40 点生命与 2-6 点护甲_的替身木桩。\n\n_+3:_闪现时,极影铃虹会留下一个有_ 60 点生命与 3-9 点护甲_的替身木桩。\n\n_+4:_闪现时,极影铃虹会留下一个有_ 80 点生命与 4~12 点护甲_的替身木桩。\n\n同一时间只可存在一个替身木桩。 actors.hero.talent.shadow_step.title=烟幕潜行 -actors.hero.talent.shadow_step.desc=_+1:_盗贼隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 20%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其他天赋。\n\n_+2:_盗贼隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 36%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其他天赋。\n\n_+3:_盗贼隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 50%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其他天赋。\n\n_+4:_盗贼隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 60%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其他天赋。 +actors.hero.talent.shadow_step.desc=_+1:_极影铃虹隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 20%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其她天赋。\n\n_+2:_极影铃虹隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 36%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其她天赋。\n\n_+3:_极影铃虹隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 50%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其她天赋。\n\n_+4:_极影铃虹隐身时,烟幕爆炸可以瞬间发动,并且充能花费会_降低 60%_。隐身时的烟幕爆炸不会致盲敌人,也不会触发其她天赋。 actors.hero.talent.fear_the_reaper.title=恐惧蔓延 -actors.hero.talent.fear_the_reaper.desc=_+1:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废_效果。\n\n_+2:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废与恐惧_效果。\n\n_+3:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废与恐惧_效果,并且 3 方格内的其他敌人也会获得_残废_效果。\n\n_+4:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废与恐惧_效果,并且 3 方格内的其他敌人也会获得_残废与恐惧_效果。 +actors.hero.talent.fear_the_reaper.desc=_+1:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废_效果。\n\n_+2:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废与恐惧_效果。\n\n_+3:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废与恐惧_效果,并且 3 方格内的其她敌人也会获得_残废_效果。\n\n_+4:_拥有夺命印记的敌人在生命值降为 0 时会获得_残废与恐惧_效果,并且 3 方格内的其她敌人也会获得_残废与恐惧_效果。 actors.hero.talent.deathly_durability.title=死神外衣 -actors.hero.talent.deathly_durability.desc=_+1:_死于夺命印记的敌人会赋予盗贼其被印记时生命值 _13%_ 的护盾值。\n\n_+2:_死于夺命印记的敌人会赋予盗贼其被印记时生命值 _25%_ 的护盾值。\n\n_+3:_死于夺命印记的敌人会赋予盗贼其被印记时生命值 _38%_ 的护盾值。\n\n_+4:_死于夺命印记的敌人会赋予盗贼其被印记时生命值 _50%_ 的护盾值。 +actors.hero.talent.deathly_durability.desc=_+1:_死于夺命印记的敌人会赋予极影铃虹其被印记时生命值 _13%_ 的护盾值。\n\n_+2:_死于夺命印记的敌人会赋予极影铃虹其被印记时生命值 _25%_ 的护盾值。\n\n_+3:_死于夺命印记的敌人会赋予极影铃虹其被印记时生命值 _38%_ 的护盾值。\n\n_+4:_死于夺命印记的敌人会赋予极影铃虹其被印记时生命值 _50%_ 的护盾值。 actors.hero.talent.double_mark.title=双重印记 actors.hero.talent.double_mark.desc=_+1:_标记一个目标后立即标记另一目标时,标记的充能消耗降低_30%_。\n\n_+2:_标记一个目标后立即标记另一目标时,标记的充能消耗降低_50%_。\n\n_+3:_标记一个目标后立即标记另一目标时,标记的充能消耗降低_65%_。\n\n_+4:_标记一个目标后立即标记另一目标时,标记的充能消耗降低_75%_。 @@ -688,47 +714,47 @@ actors.hero.talent.shadow_blade.desc=_+1:_暗影映像获得其主人武器每 actors.hero.talent.cloned_armor.title=影塑之甲 actors.hero.talent.cloned_armor.desc=_+1:_暗影映像获得其主人护甲防御力的_15%_,有_25%_概率使用护甲的刻印。\n\n_+2:_暗影映像获得其主人护甲防御力的_30%_,有_50%_概率使用护甲的刻印。\n\n_+3:_暗影映像获得其主人护甲防御力的_45%_,有_75%_概率使用护甲的刻印。\n\n_+4:_暗影映像获得其主人护甲防御力的_60%_,有_100%_概率使用护甲的刻印。 actors.hero.talent.perfect_copy.title=完美克隆 -actors.hero.talent.perfect_copy.desc=_+1:_暗影映像额外获得其主人_10%_的最大生命值。并且盗贼可以瞬间与_1格_距离以内的映像交换位置。\n\n_+2:_暗影映像额外获得其主人_20%_的最大生命值,并且盗贼可以瞬间与_2格_距离以内的映像交换位置。\n\n_+3:_暗影映像额外获得其主人_30%_的最大生命值,并且盗贼可以瞬间与_3格_距离以内的映像交换位置。\n\n_+4:_暗影映像额外获得其主人_40%_的最大生命值,并且盗贼可以瞬间与_4格_距离以内的映像交换位置。 +actors.hero.talent.perfect_copy.desc=_+1:_暗影映像额外获得其主人_10%_的最大生命值。并且极影铃虹可以瞬间与_1格_距离以内的映像交换位置。\n\n_+2:_暗影映像额外获得其主人_20%_的最大生命值,并且极影铃虹可以瞬间与_2格_距离以内的映像交换位置。\n\n_+3:_暗影映像额外获得其主人_30%_的最大生命值,并且极影铃虹可以瞬间与_3格_距离以内的映像交换位置。\n\n_+4:_暗影映像额外获得其主人_40%_的最大生命值,并且极影铃虹可以瞬间与_4格_距离以内的映像交换位置。 #huntress actors.hero.talent.natures_bounty.title=自然馈赠 -actors.hero.talent.natures_bounty.desc=_+1:_女猎手在探索地下城的前期可以从高草中找到 _4 个浆果_。\n\n_+2:_女猎手在探索地下城的前期可以从高草中找到 _6 个浆果_。 +actors.hero.talent.natures_bounty.desc=_+1:_颐莲梅錵在探索地下城的前期可以从高草中找到 _4 个浆果_。\n\n_+2:_颐莲梅錵在探索地下城的前期可以从高草中找到 _6 个浆果_。 actors.hero.talent.survivalists_intuition.title=生存直觉 -actors.hero.talent.survivalists_intuition.desc=_+1:_女猎手鉴定任何装备的速度提升为原来的_ 1.75 倍_。\n\n_+2:_女猎手鉴定任何装备的速度提升为原来的_ 2.5 倍_。 +actors.hero.talent.survivalists_intuition.desc=_+1:_颐莲梅錵鉴定任何装备的速度提升为原来的_ 1.75 倍_。\n\n_+2:_颐莲梅錵鉴定任何装备的速度提升为原来的_ 2.5 倍_。 actors.hero.talent.followup_strike.title=追加打击 -actors.hero.talent.followup_strike.desc=_+1:_当女猎手用她的弓或其它投掷武器击中敌人时,她对该敌人的下一次近战攻击将造成_ 2 点额外伤害_。\n\n_+2:_当女猎手用她的弓或其他投掷武器击中敌人时。她对该敌人的下一次近战攻击将造成_ 3 点额外伤害_。 +actors.hero.talent.followup_strike.desc=_+1:_当颐莲梅錵用她的弓或其它投掷武器击中敌人时,她对该敌人的下一次近战攻击将造成_ 2 点额外伤害_。\n\n_+2:_当颐莲梅錵用她的弓或其她投掷武器击中敌人时。她对该敌人的下一次近战攻击将造成_ 3 点额外伤害_。 actors.hero.talent.natures_aid.title=自然助力 -actors.hero.talent.natures_aid.desc=_+1:_视野内的植物被踩踏时,女猎手会获得每 3 回合衰减一次的 0~2 点树肤。\n\n_+2:_视野内的植物被踩踏时,女猎手会获得每 5 回合衰减一次的 0~2 点树肤。 +actors.hero.talent.natures_aid.desc=_+1:_视野内的植物被踩踏时,颐莲梅錵会获得每 3 回合衰减一次的 0~2 点树肤。\n\n_+2:_视野内的植物被踩踏时,颐莲梅錵会获得每 5 回合衰减一次的 0~2 点树肤。 actors.hero.talent.invigorating_meal.title=活力一餐 -actors.hero.talent.invigorating_meal.desc=_+1:_女猎手进食只耗费1回合(食用浆果不耗费回合)并获得_ 1 回合的极速_。\n\n_+2:_女猎手进食只耗费1回合(食用浆果不耗费回合)并获得_ 2 回合的极速_。 +actors.hero.talent.invigorating_meal.desc=_+1:_颐莲梅錵进食只耗费1回合(食用浆果不耗费回合)并获得_ 1 回合的极速_。\n\n_+2:_颐莲梅錵进食只耗费1回合(食用浆果不耗费回合)并获得_ 2 回合的极速_。 actors.hero.talent.restored_nature.title=自然复苏 -actors.hero.talent.restored_nature.desc=_+1:_饮下治疗药剂会在女猎手的周围生出_最多 5 处高草丛_,并缠绕附近的敌人_ 2 回合_。\n\n_+2:_饮下治疗药剂会在女猎手的周围生出_最多 8 处高草丛_,并缠绕附近的敌人_ 3 回合_。\n\n这个天赋也会被基于治疗药剂合成的合剂与秘药触发。 +actors.hero.talent.restored_nature.desc=_+1:_饮下治疗药剂会在颐莲梅錵的周围生出_最多 5 处高草丛_,并缠绕附近的敌人_ 2 回合_。\n\n_+2:_饮下治疗药剂会在颐莲梅錵的周围生出_最多 8 处高草丛_,并缠绕附近的敌人_ 3 回合_。\n\n这个天赋也会被基于治疗药剂合成的合剂与秘药触发。 actors.hero.talent.rejuvenating_steps.title=复春步伐 -actors.hero.talent.rejuvenating_steps.desc=_+1:_当女猎手踏上矮草或灰烬时,它们会复生为高草,并立即被女猎手踩踏。这个天赋_有 10 回合的冷却时间_。\n\n_+2:_当女猎手踏上矮草或灰烬时,它们会复生为高草,并立即被女猎手踩踏。这个天赋_有 5 回合的冷却时间_。\n\n若被动恢复效果被禁用或着英雄长时间内没有获得经验,此天赋只会生出枯草。 +actors.hero.talent.rejuvenating_steps.desc=_+1:_当颐莲梅錵踏上矮草或灰烬时,它们会复生为高草,并立即被颐莲梅錵踩踏。这个天赋_有 10 回合的冷却时间_。\n\n_+2:_当颐莲梅錵踏上矮草或灰烬时,它们会复生为高草,并立即被颐莲梅錵踩踏。这个天赋_有 5 回合的冷却时间_。\n\n若被动恢复效果被禁用或着英雄长时间内没有获得经验,此天赋只会生出枯草。 actors.hero.talent.heightened_senses.title=敏锐感知 -actors.hero.talent.heightened_senses.desc=_+1:_女猎手能感知到_周围 2 格以内_的敌人。\n\n_+2:_女猎手能感知到_周围 3 格以内_的敌人。 +actors.hero.talent.heightened_senses.desc=_+1:_颐莲梅錵能感知到_周围 2 格以内_的敌人。\n\n_+2:_颐莲梅錵能感知到_周围 3 格以内_的敌人。 actors.hero.talent.durable_projectiles.title=矢石保养 -actors.hero.talent.durable_projectiles.desc=_+1:_女猎手手中的投掷武器获得_ 50% 额外耐久度_。\n\n_+2:_女猎手手中的投掷武器获得_ 75% 额外耐久度_。 +actors.hero.talent.durable_projectiles.desc=_+1:_颐莲梅錵手中的投掷武器获得_ 50% 额外耐久度_。\n\n_+2:_颐莲梅錵手中的投掷武器获得_ 75% 额外耐久度_。 actors.hero.talent.point_blank.title=抵近射击 -actors.hero.talent.point_blank.desc=_+1:_当女猎手近身使用投武或其短弓时,命中率将_仅降低30%_而非原先的降低50%。\n\n_+2:_当女猎手近身使用投武或其短弓时,命中率将_仅降低10%_而非原先的降低50%。\n\n_+3:_当女猎手近身使用投武或其短弓时,命中率将_提升10%_而非原先的降低50%。\n\n注意,远程使用投武或灵能短弓时,命中率总提升50%。 +actors.hero.talent.point_blank.desc=_+1:_当颐莲梅錵近身使用投武或其短弓时,命中率将_仅降低30%_而非原先的降低50%。\n\n_+2:_当颐莲梅錵近身使用投武或其短弓时,命中率将_仅降低10%_而非原先的降低50%。\n\n_+3:_当颐莲梅錵近身使用投武或其短弓时,命中率将_提升10%_而非原先的降低50%。\n\n注意,远程使用投武或灵能短弓时,命中率总提升50%。 actors.hero.talent.seer_shot.title=探地之矢 -actors.hero.talent.seer_shot.desc=_+1:_当女猎手射箭击中地面时,会提供落点周围3x3的视野,_持续5回合_。这个天赋有20回合的冷却时间。\n\n_+1:_当女猎手射箭击中地面时,会提供落点周围3x3的视野,_持续10回合_。这个天赋有20回合的冷却时间。\n\n_+1:_当女猎手射箭击中地面时,会提供落点周围3x3的视野,_持续15回合_。这个天赋有20回合的冷却时间。 +actors.hero.talent.seer_shot.desc=_+1:_当颐莲梅錵射箭击中地面时,会提供落点周围3x3的视野,_持续5回合_。这个天赋有20回合的冷却时间。\n\n_+1:_当颐莲梅錵射箭击中地面时,会提供落点周围3x3的视野,_持续10回合_。这个天赋有20回合的冷却时间。\n\n_+1:_当颐莲梅錵射箭击中地面时,会提供落点周围3x3的视野,_持续15回合_。这个天赋有20回合的冷却时间。 actors.hero.talent.farsight.title=鹰眼远视 -actors.hero.talent.farsight.desc=_+1:_狙击手的视野范围_扩大25%_。\n\n_+2:_狙击手的视野范围_扩大50%_。\n\n_+3:_狙击手的视野范围_扩大75%_。 +actors.hero.talent.farsight.desc=_+1:_远灵之主的视野范围_扩大25%_。\n\n_+2:_远灵之主的视野范围_扩大50%_。\n\n_+3:_远灵之主的视野范围_扩大75%_。 actors.hero.talent.shared_enchantment.title=联动附魔 -actors.hero.talent.shared_enchantment.desc=_+1:_ 投掷武器 _有33%几率_ 共享狙击手的灵能弓上的附魔。\n\n_+2:_ 投掷武器 _有67%几率_ 共享狙击手的灵能弓上的附魔。\n\n_+3:_ 投掷武器 _必定能够_ 共享狙击手的灵能弓上的附魔。\n\n若装备了已附魔的十字弩,使用飞镖时这项天赋不会生效,因为飞镖已经触发了十字弩本身的附魔。 +actors.hero.talent.shared_enchantment.desc=_+1:_ 投掷武器 _有33%几率_ 共享远灵之主的灵能弓上的附魔。\n\n_+2:_ 投掷武器 _有67%几率_ 共享远灵之主的灵能弓上的附魔。\n\n_+3:_ 投掷武器 _必定能够_ 共享远灵之主的灵能弓上的附魔。\n\n若装备了已附魔的十字弩,使用飞镖时这项天赋不会生效,因为飞镖已经触发了十字弩本身的附魔。 actors.hero.talent.shared_upgrades.title=联动升级 -actors.hero.talent.shared_upgrades.desc=_+1:_当狙击手使用一件升级过的投掷武器攻击时,其上的每级升级都会提升1回合狙击标记的持续时间,并使狙击手的特殊攻击伤害_提升10%_。\n\n_+2:_当狙击手使用一件升级过的投掷武器攻击时,其上的每级升级都会提升1回合狙击标记的持续时间,并使狙击手的特殊攻击伤害_提升20%_。\n\n_+3:_当狙击手使用一件升级过的投掷武器攻击时,其上的每级升级都会提升1回合狙击标记的持续时间,并使狙击手的特殊攻击伤害_提升30%_。 +actors.hero.talent.shared_upgrades.desc=_+1:_当远灵之主使用一件升级过的投掷武器攻击时,其上的每级升级都会提升1回合狙击标记的持续时间,并使远灵之主的特殊攻击伤害_提升10%_。\n\n_+2:_当远灵之主使用一件升级过的投掷武器攻击时,其上的每级升级都会提升1回合狙击标记的持续时间,并使远灵之主的特殊攻击伤害_提升20%_。\n\n_+3:_当远灵之主使用一件升级过的投掷武器攻击时,其上的每级升级都会提升1回合狙击标记的持续时间,并使远灵之主的特殊攻击伤害_提升30%_。 actors.hero.talent.durable_tips.title=持久药液 -actors.hero.talent.durable_tips.desc=_+1:_守望者的涂药飞镖拥有_2倍耐久值_。\n\n_+2:_守望者的涂药飞镖拥有_3倍耐久值_。\n\n_+3:_守望者的涂药飞镖拥有_4倍耐久值_。 +actors.hero.talent.durable_tips.desc=_+1:_自然仙子的涂药飞镖拥有_2倍耐久值_。\n\n_+2:_自然仙子的涂药飞镖拥有_3倍耐久值_。\n\n_+3:_自然仙子的涂药飞镖拥有_4倍耐久值_。 actors.hero.talent.barkskin.title=树肤韧甲 -actors.hero.talent.barkskin.desc=_+1:_在草丛中时,守望者获得等同于她的等级_0-50%_的树肤效果,该效果每回合衰减。\n\n_+2:_在草丛中时,守望者获得等同于她的等级_0-100%_的树肤效果,该效果每回合衰减。\n\n_+3:_在草丛中时,守望者获得等同于她的等级_0-150%_的树肤效果,该效果每回合衰减。 +actors.hero.talent.barkskin.desc=_+1:_在草丛中时,自然仙子获得等同于她的等级_0-50%_的树肤效果,该效果每回合衰减。\n\n_+2:_在草丛中时,自然仙子获得等同于她的等级_0-100%_的树肤效果,该效果每回合衰减。\n\n_+3:_在草丛中时,自然仙子获得等同于她的等级_0-150%_的树肤效果,该效果每回合衰减。 actors.hero.talent.shielding_dew.title=露水护体 -actors.hero.talent.shielding_dew.desc=_+1:_ 当守望者生命值满时,拾取露珠可以提供为守望者提供护盾,上限为守望者_20% 的最大生命值_。\n\n_+2:_ 当守望者生命值满时,拾取露珠可以提供为守望者提供护盾,上限为守望者_40% 的最大生命值_。\n\n_+3:_当守望者生命值满时,拾取露珠可以提供为守望者提供护盾,上限为守望者_60% 的最大生命值_。 +actors.hero.talent.shielding_dew.desc=_+1:_ 当自然仙子生命值满时,拾取露珠可以提供为自然仙子提供护盾,上限为自然仙子_20% 的最大生命值_。\n\n_+2:_ 当自然仙子生命值满时,拾取露珠可以提供为自然仙子提供护盾,上限为自然仙子_40% 的最大生命值_。\n\n_+3:_当自然仙子生命值满时,拾取露珠可以提供为自然仙子提供护盾,上限为自然仙子_60% 的最大生命值_。 actors.hero.talent.fan_of_blades.title=千叶刀扇 actors.hero.talent.fan_of_blades.desc=_+1:_灵魂飞刃最多能命中_1个额外目标_,造成50%的伤害。目标须在视野内且与原目标同处于_30度_扇形内。\n\n_+2:_灵魂飞刃最多能命中_2个额外目标_,造成50%的伤害。目标须在视野内且与原目标同处于_60度_扇形内。\n\n_+3:_灵魂飞刃最多能命中_3个额外目标_,造成50%的伤害。目标须在视野内且与原目标同处于_90度_扇形内。\n\n_+4:_灵魂飞刃最多能命中_4个额外目标_,造成50%的伤害。目标须在视野内且与原目标同处于_120度_扇形内。 @@ -781,12 +807,12 @@ actors.mobs.npcs.blacksmith.cursed=我可不碰诅咒的东西! actors.mobs.npcs.blacksmith.degraded=这简直就是个垃圾,质量太差了! actors.mobs.npcs.blacksmith.cant_reforge=我不能重铸这些物品! actors.mobs.npcs.blacksmith.def_verb=格挡 -actors.mobs.npcs.blacksmith.desc=这个巨魔看起来和任何其他巨魔一样:又高又瘦,皮肤的色泽和纹理都像是石头。这位巨魔铁匠正在拿着一把与其体形极其不符的小锤子不停地修修补补。 +actors.mobs.npcs.blacksmith.desc=这个巨魔看起来和任何其她巨魔一样:又高又瘦,皮肤的色泽和纹理都像是石头。这位巨魔铁匠正在拿着一把与其体形极其不符的小锤子不停地修修补补。 actors.mobs.npcs.ghost.name=悲伤幽灵 actors.mobs.npcs.ghost.rat_1=你好,%s…曾经我像你一样——既强大又自信…但我被一个邪恶的野兽杀死了…我不能离开这个地方……直到我完成我的复仇…杀死_腐臭老鼠_,就是它夺走了我的生命…\n\n它就在这层…四处散播污秽…_小心它的周边的臭云以及带有腐蚀性的撕咬,它产生的粘液可溶于水…_ actors.mobs.npcs.ghost.rat_2=请帮助我…杀了那个令人憎恶的东西…\n\n_在水附近与它战斗…躲开它的恶臭…_ -actors.mobs.npcs.ghost.gnoll_1=你好,%s…曾经我像你一样——既强大又自信…但我被一个狡猾的敌人杀死了…我不能离开这个地方……直到我完成我的复仇…杀死_豺狼猎手_,就是它夺走了我的生命…\n\n它与其他豺狼人不同…它会隐藏自己并使用投掷武器… _小心它的毒镖和火镖,尽量靠近它…_ +actors.mobs.npcs.ghost.gnoll_1=你好,%s…曾经我像你一样——既强大又自信…但我被一个狡猾的敌人杀死了…我不能离开这个地方……直到我完成我的复仇…杀死_豺狼猎手_,就是它夺走了我的生命…\n\n它与其她豺狼人不同…它会隐藏自己并使用投掷武器… _小心它的毒镖和火镖,尽量靠近它…_ actors.mobs.npcs.ghost.gnoll_2=请帮助我……杀了那个诡诈的家伙……\n\n_别让它打到你……离它越近越好……_ actors.mobs.npcs.ghost.crab_1=你好,%s…曾经我像你一样——既强大又自信…但我被一个古老的生物杀死了…我不能离开这个地方……直到我完成我的复仇…杀死_巨钳螃蟹_,就是它夺走了我的生命…\n\n它经历了无数岁月的洗礼…有一个巨大的蟹钳和非常厚重的蟹壳…_小心它的蟹钳,你必须偷袭这只巨蟹否则它会用钳子格挡你的攻击..._ actors.mobs.npcs.ghost.crab_2=拜托帮助我……杀了那个甲壳类……\n\n_如果它发现你……就会挡住你所有的攻击……_ @@ -794,18 +820,18 @@ actors.mobs.npcs.ghost.find_me=谢谢你……来找我吧…… actors.mobs.npcs.ghost.desc=这个幽灵几乎不能被看见。它看起来像是由一片无形的昏暗光斑和一张悲痛的面孔所组成的。 actors.mobs.npcs.imp.name=野心勃勃的小恶魔 -actors.mobs.npcs.imp.golems_1=你是个冒险家吗?我爱冒险家!如果有什么东西需要被解决的话,他们永远都能把活干好。我说的对吗?当然是在有赏金的前提下;)\n总之,我需要你杀一些_魔像_。你看,我要在这里开始搞点小本生意,但这些愚蠢的傀儡只会毁掉我的生意!跟这些发着光的大个子花岗岩根本没法交流,真是该死!所以请,杀死……我想想,_4个魔像_,然后奖励就是你的了。 -actors.mobs.npcs.imp.monks_1=你是个冒险家吗?我爱冒险家!如果有什么东西需要被解决的话,他们永远都能把活干好。我说的对吗?当然是在有赏金的前提下 ;)\n总之,我需要你杀一些_武僧_。你看,我要在这里开始搞点小本生意,但这些疯子不买任何东西还会吓跑顾客。所以请,杀死……我想想,_5个武僧_,然后奖励就是你的了。 +actors.mobs.npcs.imp.golems_1=你是个冒险家吗?我爱冒险家!如果有什么东西需要被解决的话,她们永远都能把活干好。我说的对吗?当然是在有赏金的前提下;)\n总之,我需要你杀一些_魔像_。你看,我要在这里开始搞点小本生意,但这些愚蠢的傀儡只会毁掉我的生意!跟这些发着光的大个子花岗岩根本没法交流,真是该死!所以请,杀死……我想想,_4个魔像_,然后奖励就是你的了。 +actors.mobs.npcs.imp.monks_1=你是个冒险家吗?我爱冒险家!如果有什么东西需要被解决的话,她们永远都能把活干好。我说的对吗?当然是在有赏金的前提下 ;)\n总之,我需要你杀一些_武僧_。你看,我要在这里开始搞点小本生意,但这些疯子不买任何东西还会吓跑顾客。所以请,杀死……我想想,_5个武僧_,然后奖励就是你的了。 actors.mobs.npcs.imp.golems_2=你的魔像狩猎做的怎么样了? actors.mobs.npcs.imp.monks_2=喔,你还活着!我就知道你得功夫很好;) 只要别忘了拿来那些武僧的标记就好。 actors.mobs.npcs.imp.cya=我们会再见的,%s! actors.mobs.npcs.imp.hey=喂喂喂,%s! -actors.mobs.npcs.imp.desc=小恶魔是一种低等恶魔。它们既没有强大的力量也没有魔法天赋,但他们相当聪明而且善于交际。许多小恶魔都喜欢生活在没有其他恶魔存在的地方。 +actors.mobs.npcs.imp.desc=小恶魔是一种低等恶魔。它们既没有强大的力量也没有魔法天赋,但她们相当聪明而且善于交际。许多小恶魔都喜欢生活在没有其她恶魔存在的地方。 actors.mobs.npcs.impshopkeeper.name=野心勃勃的小恶魔 actors.mobs.npcs.impshopkeeper.greetings=你好,%s! actors.mobs.npcs.impshopkeeper.thief=我以为我可以相信你! -actors.mobs.npcs.impshopkeeper.desc=小恶魔是一种低等恶魔。它们既没有强大的力量也没有魔法天赋,但他们相当聪明而且善于交际,因此许多小恶魔喜欢生活在没有其他恶魔存在的地方。 +actors.mobs.npcs.impshopkeeper.desc=小恶魔是一种低等恶魔。它们既没有强大的力量也没有魔法天赋,但她们相当聪明而且善于交际,因此许多小恶魔喜欢生活在没有其她恶魔存在的地方。 actors.mobs.npcs.mirrorimage.name=镜像 actors.mobs.npcs.mirrorimage.desc=这个幻象和你非常相似,甚至还装备着你当前的武器和护甲。\n\n镜像会猎寻敌人,并用它们的镜像武器对其发动攻击。镜像武器的使用方式与特性和你手中的一样,但造成的伤害会低些。镜像出生的时候没有实体,但攻击后会显形。\n\n镜像有一定的攻击能力,但非常脆弱,受到伤害就会瞬间消散。 @@ -839,12 +865,12 @@ actors.mobs.npcs.sheep.desc=这是一只魔法绵羊。为什么叫它魔法绵 actors.mobs.npcs.shopkeeper.name=商人 actors.mobs.npcs.shopkeeper.thief=小偷,小偷! actors.mobs.npcs.shopkeeper.sell=选择一件要出售的物品 -actors.mobs.npcs.shopkeeper.desc=这个矮胖的家伙看起来更适合在某些大城市里做买卖而不是这种地牢。这些商品的价格解释了为什么他会喜欢在这儿做生意。 +actors.mobs.npcs.shopkeeper.desc=这个矮胖的家伙看起来更适合在某些大城市里做买卖而不是这种地牢。这些商品的价格解释了为什么她会喜欢在这儿做生意。 actors.mobs.npcs.wandmaker.name=老杖匠 actors.mobs.npcs.wandmaker.intro_warrior=啊,能在这片压抑的地方遇见一位英雄可真是个惊喜!如果你愿意帮助我这个老人家脱离苦海的话,你可以帮忙做一个任务。 actors.mobs.npcs.wandmaker.intro_rogue=天哪,你吓了我一跳!在这里这么久你是我见过的第一个尚有理智的强盗,所以你肯定是从地表下来的!如果你愿意帮助我这样一名陌生人的话,这有一个任务或许你能帮上忙。 -actors.mobs.npcs.wandmaker.intro_mage=哦,你好啊%s!我好像听说你在法师学院那里搞了不少麻烦?算了这没关系,反正我也不喜欢那些墨守成规的榆木脑袋。如果你愿意的话,我这有个任务可以让你帮忙。 +actors.mobs.npcs.wandmaker.intro_mage=哦,你好啊%s!我好像听说你在茉莉伊洛学院那里搞了不少麻烦?算了这没关系,反正我也不喜欢那些墨守成规的榆木脑袋。如果你愿意的话,我这有个任务可以让你帮忙。 actors.mobs.npcs.wandmaker.intro_huntress=啊,你好啊姑娘!能在这下面见到一张友善的面孔真是太惊喜了,你说是吧?咦,说来,我敢打赌以前在哪见过你,但想不起具体……哦算了,不用在意,如果你是来这里冒险的话,我这有个任务交给你做。 actors.mobs.npcs.wandmaker.intro_1=\n\n我在这里是为了寻找一个制作法杖需要的稀有材料,但我迷了路,而且身上的魔法盾也在慢慢减弱。我必须马上离开这里,但我不想空手而出。 actors.mobs.npcs.wandmaker.intro_dust=我在寻找一些_尸骨灰烬_。这是一种通常出现在这种地方的被诅咒的特殊骨灰。它应该就在附近某个被隔住的房间里,我很肯定你能在那里找到一些灰烬。不过要小心,灰烬上的诅咒相当强大,_尽快将它带回来_,我会净化其中的诅咒。 @@ -855,7 +881,7 @@ actors.mobs.npcs.wandmaker.reminder_dust=灰烬找到了吗,%s?试着寻找 actors.mobs.npcs.wandmaker.reminder_ember=余烬找的怎么样了,%s?你需要找到_四根蜡烛_和一个_仪式场地_。 actors.mobs.npcs.wandmaker.reminder_berry=腐莓种子找的怎么样了,%s?它就在一个_充满植被的房间_里。 actors.mobs.npcs.wandmaker.def_verb=格挡 -actors.mobs.npcs.wandmaker.desc=这位老先生的表情看起来十分困扰。他正在被一个力场盾牌保护着。 +actors.mobs.npcs.wandmaker.desc=这位老先生的表情看起来十分困扰。她正在被一个力场盾牌保护着。 @@ -881,7 +907,7 @@ actors.mobs.bee.desc=尽管它们体积小,但金色蜜蜂有着强烈的保 actors.mobs.brute.name=豺狼暴徒 actors.mobs.brute.enraged=激怒 actors.mobs.brute.def_verb=格挡 -actors.mobs.brute.desc=暴徒是豺狼人中体型最庞大,力量最强壮且生命力最顽强的精英。受到致命伤时,他们会陷入疯狂之中,获得暂时的护盾和极高的伤害加成。 +actors.mobs.brute.desc=暴徒是豺狼人中体型最庞大,力量最强壮且生命力最顽强的精英。受到致命伤时,她们会陷入疯狂之中,获得暂时的护盾和极高的伤害加成。 actors.mobs.brute$bruterage.name=豺狼狂暴 actors.mobs.brute$bruterage.desc=这个豺狼暴徒的死亡已经不可避免,但它想拉你作为陪葬品!\n\n时间的推移或是外界的伤害都会消磨护盾。在护盾消散殆尽之际,暴徒会彻底消亡。然而,一定要小心,在这一阶段暴徒会造成巨额伤害!\n\n剩余的护盾:%d。 @@ -925,7 +951,7 @@ actors.mobs.dm300.pylons_destroyed=警 告 !检 测 到 电 网 故 障 ! actors.mobs.dm300.rankings_desc=被DM-300碾压致死 actors.mobs.dm300.def_verb=格挡 actors.mobs.dm300.defeated=受 到 严 重 损 伤 !正 在 尝 试 关- -actors.mobs.dm300.desc=DM-300是矮人有史以来发明的最强大的“防御机器”。这样一台令人生畏的机器是极难制造的,所以矮人们仅仅造出了几台来守护他们地下大都会的入口。\n\n它配备了可以喷出剧毒废气的通风口和一个可以用来攻击和破坏地表的高功率钻头。DM-300还可以连接到能源电网,进一步增强它的力量。 +actors.mobs.dm300.desc=DM-300是矮人有史以来发明的最强大的“防御机器”。这样一台令人生畏的机器是极难制造的,所以矮人们仅仅造出了几台来守护她们地下大都会的入口。\n\n它配备了可以喷出剧毒废气的通风口和一个可以用来攻击和破坏地表的高功率钻头。DM-300还可以连接到能源电网,进一步增强它的力量。 actors.mobs.dm300.desc_supercharged=DM-300已被完全充能。现在,DM-300能免疫外界的伤害,并以两倍速度移动!而且,它的电钻功率现在足以_钻透墙壁_,不过这会大幅降低它的移动速度。\n\n直接攻击充能状态下的DM-300毫无意义,不过这附近一定有为它_提供能量的装置_,摧毁了的话也许能削弱它。 actors.mobs.dm300$fallingrocks.desc=松动的岩块正从层顶滚滚而下,似乎要塌方了! @@ -942,7 +968,7 @@ actors.mobs.dwarfking.enraged=汝杀不掉朕,%s。朕・即・不・朽! actors.mobs.dwarfking.losing=不!汝不得如此...汝不知晓朕的王国之下埋藏着什么... actors.mobs.dwarfking.defeated=一无所知的蠢货...汝会毁了一切的... actors.mobs.dwarfking.rankings_desc=屈服在矮人国王御前 -actors.mobs.dwarfking.desc=许多年前,矮人议会中一名最强的巫师洞察了凌驾于生死之上的秘术。很快他就借助这种强大的力量,控制、腐化了王室与整个议会,并将魔爪伸向王国中的每一名矮人。现在他成为了矮人国的国王,统领着数量庞大的死灵。\n\n矮人国王是极具进攻性的强敌,会尝试利用他手下的死灵大军压制入侵者。 +actors.mobs.dwarfking.desc=许多年前,矮人议会中一名最强的巫师洞察了凌驾于生死之上的秘术。很快她就借助这种强大的力量,控制、腐化了王室与整个议会,并将魔爪伸向王国中的每一名矮人。现在她成为了矮人国的国王,统领着数量庞大的死灵。\n\n矮人国王是极具进攻性的强敌,会尝试利用她手下的死灵大军压制入侵者。 actors.mobs.dwarfking$dkghoul.rankings_desc=屈服在矮人国王御前 actors.mobs.dwarfking$dkmonk.rankings_desc=屈服在矮人国王御前 actors.mobs.dwarfking$dkwarlock.rankings_desc=屈服在矮人国王御前 @@ -966,7 +992,7 @@ actors.mobs.fetidrat.name=腐臭老鼠 actors.mobs.fetidrat.desc=这只老鼠很不对劲。它油腻的黑毛和腐烂的皮肤与你之前见过的健康老鼠很不同。浅绿色的眼睛让它显得更具威胁。\n\n这只老鼠周围盘绕着一片可怕恶臭,靠近时臭气尤为浓烈。\n\n黑色的淤泥从它的嘴中流出。淤泥腐蚀掉了地砖,但遇水似乎就会溶解。 actors.mobs.ghoul.name=矮人尸群 -actors.mobs.ghoul.desc=在矮人王国逐渐衰亡,现在的矮人国王掌握了绝对的权力时,一些较为弱小的或是反抗国王的矮人受到了不公的待遇。然而随着矮人国王逐渐精通黑暗魔法,这些矮人逐渐屈从于其意志,并最终沦为了其大军中的一枚棋子。\n\n矮人尸群中的个体本身没有强大的战斗力,但它们总是结伴作战,试图利用数量优势击败强大的对手。_一名矮人尸群成员被击倒时,如果周围仍有其他同类,它将会在几回合后重生_。 +actors.mobs.ghoul.desc=在矮人王国逐渐衰亡,现在的矮人国王掌握了绝对的权力时,一些较为弱小的或是反抗国王的矮人受到了不公的待遇。然而随着矮人国王逐渐精通黑暗魔法,这些矮人逐渐屈从于其意志,并最终沦为了其大军中的一枚棋子。\n\n矮人尸群中的个体本身没有强大的战斗力,但它们总是结伴作战,试图利用数量优势击败强大的对手。_一名矮人尸群成员被击倒时,如果周围仍有其她同类,它将会在几回合后重生_。 actors.mobs.gnoll.name=豺狼巡查 actors.mobs.gnoll.desc=豺狼是鬣狗状的类人生物。它们在下水道和地牢里游荡,不时向上行动试图向地表发起进攻。豺狼巡查是它们种群里最普通的一员,它们既没有豺狼暴徒强壮,也赶不上萨满聪明。 @@ -994,7 +1020,7 @@ actors.mobs.goo.desc=我们对粘咕所知甚少。它甚至很有可能不是 actors.mobs.greatcrab.name=巨大螃蟹 actors.mobs.greatcrab.noticed=巨型螃蟹用它硕大的钳子格挡了这次攻击。 actors.mobs.greatcrab.def_verb=格挡 -actors.mobs.greatcrab.desc=这只螃蟹的块头相当大,甚至超过了其他的下水道螃蟹。它的蓝色甲壳上布满了裂纹和藤壶,足以证明其经历的无数岁月。它爬行缓慢,那只巨大的钳子让它难以保持平衡。\n\n尽管这螃蟹只剩下一边的钳子,但钳子的个头完全弥补了这点不足。螃蟹只要发现危险就会把爪子举在身前,利用坚不可摧的甲壳进行防御。不过螃蟹无法格挡未察觉的攻击,也无法同时格挡多个敌人的进攻。 +actors.mobs.greatcrab.desc=这只螃蟹的块头相当大,甚至超过了其她的下水道螃蟹。它的蓝色甲壳上布满了裂纹和藤壶,足以证明其经历的无数岁月。它爬行缓慢,那只巨大的钳子让它难以保持平衡。\n\n尽管这螃蟹只剩下一边的钳子,但钳子的个头完全弥补了这点不足。螃蟹只要发现危险就会把爪子举在身前,利用坚不可摧的甲壳进行防御。不过螃蟹无法格挡未察觉的攻击,也无法同时格挡多个敌人的进攻。 actors.mobs.guard.name=监狱守卫 actors.mobs.guard.scorpion=给我过来! @@ -1007,7 +1033,7 @@ actors.mobs.king.defeated=你杀不死我,%s…我是…不朽的… actors.mobs.king.def_verb=格挡 actors.mobs.king.arise=以我之名,复苏吧!奴隶们! actors.mobs.king.rankings_desc=屈服在矮人国王御前 -actors.mobs.king.desc=这名最后的矮人国王以对死灵术式的透彻理解而闻名。他成功说服王国议会的全体成员参加了一场本应让所有参与者获得永生的祭祀仪式。最终成功的只有国王自己——如果不算上他身边那支化为枯骨的死灵大军的话。 +actors.mobs.king.desc=这名最后的矮人国王以对死灵术式的透彻理解而闻名。她成功说服王国议会的全体成员参加了一场本应让所有参与者获得永生的祭祀仪式。最终成功的只有国王自己——如果不算上她身边那支化为枯骨的死灵大军的话。 actors.mobs.king$undead.name=矮人亡灵 actors.mobs.king$undead.def_verb=格挡 actors.mobs.king$undead.rankings_desc=屈服在矮人国王御前 @@ -1018,10 +1044,10 @@ actors.mobs.mimic.reveal=这是一个宝箱怪! actors.mobs.mimic.hidden_hint=这个宝箱看上去有些不对劲……上前直接打开似乎不太合适。 actors.mobs.mimic.desc=宝箱怪是一种能随意改变外形的生物。在地牢里它们几乎一直以宝箱形态出现,因为这样总能吸引不防备的冒险者。\n\n宝箱怪具有较强的攻击力,但也拥有比普通箱子更多的财宝。 -actors.mobs.necromancer.name=死灵法师 -actors.mobs.necromancer.desc=这些黑暗魔法的学徒大量涌入监狱,因为这里是它们磨练死灵法术的最佳地点。\n\n死灵法师通过召唤并加强骷髅作战。死灵法师被击杀后,其召唤的骷髅也会消散。 -actors.mobs.necromancer$necroskeleton.name=死灵法师的骷髅 -actors.mobs.necromancer$necroskeleton.desc=这个骷髅是被死灵法师召唤出来的。它的能力与习性和普通的骷髅一样,只是会在召唤者被击杀时跟着消逝。 +actors.mobs.necromancer.name=死灵茉莉伊洛 +actors.mobs.necromancer.desc=这些黑暗魔法的学徒大量涌入监狱,因为这里是它们磨练死灵法术的最佳地点。\n\n死灵茉莉伊洛通过召唤并加强骷髅作战。死灵茉莉伊洛被击杀后,其召唤的骷髅也会消散。 +actors.mobs.necromancer$necroskeleton.name=死灵茉莉伊洛的骷髅 +actors.mobs.necromancer$necroskeleton.desc=这个骷髅是被死灵茉莉伊洛召唤出来的。它的能力与习性和普通的骷髅一样,只是会在召唤者被击杀时跟着消逝。 actors.mobs.mob.died=你依稀听到远处有什么东西死掉了。 actors.mobs.mob.rage=#$%^ @@ -1031,9 +1057,9 @@ actors.mobs.mob.rankings_desc=死于:%s actors.mobs.monk.name=矮人武僧 actors.mobs.monk.def_verb=格挡 actors.mobs.monk.parried=招架 -actors.mobs.monk.desc=这些僧侣皆是狂热的信徒,倾其所能从一切异族手中保护国王的安全。狂热的信仰使得他们将自己的意志交给了国王,只剩下没有思想的躯壳在城市中游荡。\n\n矮人武僧既不披甲亦不执械,仅仅依靠自己的徒手格斗技巧退敌。精神集中的武僧会必定格挡住一次进攻,哪怕是必中的攻击。武僧在移动时会更快地集中精神,在战斗中就相对慢些。 +actors.mobs.monk.desc=这些僧侣皆是狂热的信徒,倾其所能从一切异族手中保护国王的安全。狂热的信仰使得她们将自己的意志交给了国王,只剩下没有思想的躯壳在城市中游荡。\n\n矮人武僧既不披甲亦不执械,仅仅依靠自己的徒手格斗技巧退敌。精神集中的武僧会必定格挡住一次进攻,哪怕是必中的攻击。武僧在移动时会更快地集中精神,在战斗中就相对慢些。 actors.mobs.monk$focus.name=精神集中 -actors.mobs.monk$focus.desc=这个武僧已经完全集中于目标的一举一动,似乎能预料到目标的下一步动作。\n\n精神集中的武僧一定会格挡下一次物理攻击。格挡会分散武僧的注意力,使得他们需要一段时间重新集中精力来成功格挡攻击。在移动时武僧恢复地相对更快。 +actors.mobs.monk$focus.desc=这个武僧已经完全集中于目标的一举一动,似乎能预料到目标的下一步动作。\n\n精神集中的武僧一定会格挡下一次物理攻击。格挡会分散武僧的注意力,使得她们需要一段时间重新集中精力来成功格挡攻击。在移动时武僧恢复地相对更快。 actors.mobs.piranha.name=巨型食人鱼 actors.mobs.piranha.desc=这些肉食性鱼类不是地下水池中的天然生物。它们被专门培育用来保护被水淹没的储藏室。 @@ -1060,7 +1086,7 @@ actors.mobs.scorpio.name=巨型蝎子 actors.mobs.scorpio.desc=这些巨大的节肢类恶魔生物会尽可能避免一切近距离接触,并且会在远处射出能够致残的尖刺。 actors.mobs.senior.name=武僧大师 -actors.mobs.senior.desc=这些僧侣皆是狂热的信徒,倾其所能从一切异族手中保护国王的安全。狂热的信仰使得他们将自己的意志交给了国王,只剩下没有思想的躯壳在城市中游荡。\n\n这只武僧掌握了精深的格斗技巧,相较于普通的武僧,他能在移动时更迅速恢复集中。精神集中的武僧会必定格挡住一次进攻,哪怕是必中的攻击。武僧在移动时会更快地集中精神,在战斗中就相对慢些。 +actors.mobs.senior.desc=这些僧侣皆是狂热的信徒,倾其所能从一切异族手中保护国王的安全。狂热的信仰使得她们将自己的意志交给了国王,只剩下没有思想的躯壳在城市中游荡。\n\n这只武僧掌握了精深的格斗技巧,相较于普通的武僧,她能在移动时更迅速恢复集中。精神集中的武僧会必定格挡住一次进攻,哪怕是必中的攻击。武僧在移动时会更快地集中精神,在战斗中就相对慢些。 actors.mobs.shaman.name=豺狼萨满 actors.mobs.shaman.bolt_kill=魔力的冲击粉碎了你... @@ -1085,8 +1111,8 @@ actors.mobs.snake.name=下水道巨蛇 actors.mobs.snake.hint=试试点击检查按钮再选择蛇,以了解如何击败它们。 actors.mobs.snake.desc=这些体型庞大的蛇能通过快速滑行以闪避普通的攻击,让它们难以命中。不过伏击与魔法攻击会使它们措手不及。\n\n在这条蛇的视野外攻击它时可以触发伏击。当这条蛇在追击你时,可以尝试躲入一扇门后,再_在蛇进门的瞬间发动攻击_。 -actors.mobs.spectralnecromancer.name=招魂法师 -actors.mobs.spectralnecromancer.desc=死灵法师们通常对召唤骷髅欲罢不能,但其中某些个体却偏爱使唤更为缥缈无形的造物。招魂法师们便选择了怨灵作为他们的爪牙!\n\n怨灵的个体战斗力或许不如骷髅,但这帮招魂法师无论一次性召唤出多少手下都不会嫌多! +actors.mobs.spectralnecromancer.name=招魂茉莉伊洛 +actors.mobs.spectralnecromancer.desc=死灵茉莉伊洛们通常对召唤骷髅欲罢不能,但其中某些个体却偏爱使唤更为缥缈无形的造物。招魂茉莉伊洛们便选择了怨灵作为她们的爪牙!\n\n怨灵的个体战斗力或许不如骷髅,但这帮招魂茉莉伊洛无论一次性召唤出多少手下都不会嫌多! actors.mobs.spinner.name=矿洞蜘蛛 actors.mobs.spinner.desc=绿色而多毛的洞穴蜘蛛们会试着去躲避直接的战斗,它们更喜欢在远处等待其猎物卷入蜘网,在剧毒中慢慢死去。它们也能向远处喷吐蛛网,阻挡敌人的行动路线。 @@ -1096,7 +1122,7 @@ actors.mobs.statue.def_verb=格挡 actors.mobs.statue.desc=你可能认为这只是地牢里的又一具雕像摆设,但它发出红光的眼睛出卖了自己。 \n\n尽管雕像本身是用石头做的,但它手上握着的_%s_看起来像是真的。 actors.mobs.succubus.name=魅魔 -actors.mobs.succubus.desc=魅魔是一种善于操纵敌人的精神的变形恶魔。这一只化为了哥特风的苍白人形,或许是为了吸引矮人术士?\n\n在攻击时,魅魔能够暂时魅惑目标,使其无法直接攻击魅魔本身。魅魔在攻击被魅惑的目标时能吸取其生命精华。 +actors.mobs.succubus.desc=魅魔是一种善于操纵敌人的精神的变形恶魔。这一只化为了哥特风的苍白人形,或许是为了吸引矮人噬魂女皇?\n\n在攻击时,魅魔能够暂时魅惑目标,使其无法直接攻击魅魔本身。魅魔在攻击被魅惑的目标时能吸取其生命精华。 actors.mobs.swarm.name=蝇群 actors.mobs.swarm.desc=致命的飞蝇群愤怒地发出嗡嗡声。每次非魔法攻击都会把它分割成两群更小但同样危险的飞蝇群。 @@ -1107,7 +1133,7 @@ actors.mobs.tengu.interesting=是时候让这场战斗变得更有意思了… actors.mobs.tengu.notice_have=你的命归我了,%s! actors.mobs.tengu.defeated=终于...我解脱了... actors.mobs.tengu.rankings_desc=被天狗暗杀 -actors.mobs.tengu.desc=一位著名的神秘刺客,其名源于他脸上面具的蚀刻。\n\n天狗的手腕和膝下都带着镣铐,但他似乎很久以前就摆脱掉了锁链的束缚。\n\n他将利用陷阱、欺骗性的魔法、精准致命的攻击,来消灭唯一能阻止他逃脱的人:你。 +actors.mobs.tengu.desc=一位著名的神秘皇家刺客,其名源于她脸上面具的蚀刻。\n\n天狗的手腕和膝下都带着镣铐,但她似乎很久以前就摆脱掉了锁链的束缚。\n\n她将利用陷阱、欺骗性的魔法、精准致命的攻击,来消灭唯一能阻止她逃脱的人:你。 actors.mobs.tengu$bombability$bombblob.desc=这里翻滚着一片过热的烟尘。当心,要爆炸了! actors.mobs.tengu$bombability$bombitem.name=烟尘炸弹 @@ -1125,11 +1151,11 @@ actors.mobs.thief.name=疯狂小偷 actors.mobs.thief.stole=小偷偷走了你的%s! actors.mobs.thief.carries=\n\n这个小偷携带着一个_%s_。明显是偷来的。 actors.mobs.thief.escapes=小偷带着你的%s逃走了! -actors.mobs.thief.desc=这些囚犯逃出了他们的牢房,却没能逃出这座监牢。随着时间流逝,这座监牢彻底摧毁了他们仅存的心智,以及对自由的向往。这些疯狂的小偷和强盗很久以前就已经彻底忘记它们是谁,以及它们为何偷窃。\n\n这些敌人比起面对面地战斗,更倾向于偷走你的财物随后逃之夭夭。一定要看紧它们,否则你以后可能再也不会见到自己的被盗财物了。 +actors.mobs.thief.desc=这些囚犯逃出了她们的牢房,却没能逃出这座监牢。随着时间流逝,这座监牢彻底摧毁了她们仅存的心智,以及对自由的向往。这些疯狂的小偷和强盗很久以前就已经彻底忘记它们是谁,以及它们为何偷窃。\n\n这些敌人比起面对面地战斗,更倾向于偷走你的财物随后逃之夭夭。一定要看紧它们,否则你以后可能再也不会见到自己的被盗财物了。 -actors.mobs.warlock.name=矮人术士 +actors.mobs.warlock.name=矮人噬魂女皇 actors.mobs.warlock.bolt_kill=暗影能量使你的生命衰竭了…… -actors.mobs.warlock.desc=当矮人的兴趣从工程建设转向奥秘学术时,术士们开始在城市中掌权。它们从元素魔法起步,但很快就开始研究恶魔学和死灵术。最强大的术士掌握了矮人王国的王权,其他术士如果想继续练习黑暗魔法,就必须放弃精神的自由,将意志交给他控制。\n\n这些术士拥有具有强大的干扰性魔法,能暂时抑制装备的升级魔力。装备的等级越高,受降级魔法的影响就越严重。 +actors.mobs.warlock.desc=当矮人的兴趣从工程建设转向奥秘学术时,噬魂女皇们开始在城市中掌权。它们从元素魔法起步,但很快就开始研究恶魔学和死灵术。最强大的噬魂女皇掌握了矮人王国的王权,其她噬魂女皇如果想继续练习黑暗魔法,就必须放弃精神的自由,将意志交给她控制。\n\n这些噬魂女皇拥有具有强大的干扰性魔法,能暂时抑制装备的升级魔力。装备的等级越高,受降级魔法的影响就越严重。 actors.mobs.wraith.name=怨灵 actors.mobs.wraith.desc=怨灵是来自于墓穴中渴望复仇的罪人之魂。作为飘渺的非实体很难被正常武器击中。 @@ -1138,16 +1164,16 @@ actors.mobs.yog.name=Yog-Dzewa actors.mobs.yog.notice=希望已死,汝之存在亦将化为虚无… actors.mobs.yog.defeated=… actors.mobs.yog.rankings_desc=被Yog-Dzewa吞噬 -actors.mobs.yog.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。他们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 +actors.mobs.yog.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。她们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 actors.mobs.yog$rottingfist.name=腐烂之拳 actors.mobs.yog$rottingfist.rankings_desc=被Yog-Dzewa吞噬 -actors.mobs.yog$rottingfist.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。他们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 +actors.mobs.yog$rottingfist.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。她们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 actors.mobs.yog$burningfist.name=燃烧之拳 actors.mobs.yog$burningfist.rankings_desc=被Yog-Dzewa吞噬 -actors.mobs.yog$burningfist.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。他们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 +actors.mobs.yog$burningfist.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。她们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 actors.mobs.yog$larva.name=古神幼虫 actors.mobs.yog$larva.rankings_desc=被Yog-Dzewa吞噬 -actors.mobs.yog$larva.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。他们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 +actors.mobs.yog$larva.desc=Yog-Dzewa是一位上古之神,来自混沌位面的强大存在。一个世纪前,古代矮人在同恶魔大军的战争中惨胜,却无法杀死这名神祇。她们只得将这名存在封印在都城下的厅堂之中,希望这位力量被削弱的神祇永无重见天日之时。 actors.mobs.yogdzewa.name=Yog-Dzewa actors.mobs.yogdzewa.notice=我 看 见 你 了 @@ -1155,7 +1181,7 @@ actors.mobs.yogdzewa.darkness=黑暗正在逼近…… actors.mobs.yogdzewa.hope=汝・之・希・望・皆・为・虚・妄 actors.mobs.yogdzewa.defeated=…… actors.mobs.yogdzewa.rankings_desc=被Yog-Dzewa吞噬 -actors.mobs.yogdzewa.desc=Yog-Dzewa是一个古老的神;一个将自己的力量延伸向凡间世界并吞噬它们、以为自身无尽的成长提供养分的巨大怪物。矮人一定是在玩弄黑暗魔法的时候引起了这个巨大恐怖的注意,并且从那以后就一直试图控制他,使之无法侵吞外界。\n\n这位古神起源于一个原始的、充满魔法与混沌的维度,且无法将他的真实形态带入这个世界。因此,他创造了自己的化身并召唤了恶魔们作为他的仆从来完成它的命令。\n\n这只巨眼是古神在这个世界上力量的焦点。虽然这只眼睛本身是不可移动的,但它能够射出强大的魔能光束,并召唤各种恶魔仆从来帮助它。 +actors.mobs.yogdzewa.desc=Yog-Dzewa是一个古老的神;一个将自己的力量延伸向凡间世界并吞噬它们、以为自身无尽的成长提供养分的巨大怪物。矮人一定是在玩弄黑暗魔法的时候引起了这个巨大恐怖的注意,并且从那以后就一直试图控制她,使之无法侵吞外界。\n\n这位古神起源于一个原始的、充满魔法与混沌的维度,且无法将她的真实形态带入这个世界。因此,她创造了自己的化身并召唤了恶魔们作为她的仆从来完成它的命令。\n\n这只巨眼是古神在这个世界上力量的焦点。虽然这只眼睛本身是不可移动的,但它能够射出强大的魔能光束,并召唤各种恶魔仆从来帮助它。 actors.mobs.yogdzewa.desc_spawners=你感觉到恶魔能量正从上层涌向古神之眼。你在上面活着留下的什么东西正在给古神回馈着能量。_古神会使用这股能量召唤更强大的手下!_ actors.mobs.yogdzewa$larva.name=古神幼虫 actors.mobs.yogdzewa$larva.rankings_desc=被Yog-Dzewa吞噬 diff --git a/core/src/main/assets/messages/scenes/scenes_zh.properties b/core/src/main/assets/messages/scenes/scenes_zh.properties index 39420c548..808816fa7 100644 --- a/core/src/main/assets/messages/scenes/scenes_zh.properties +++ b/core/src/main/assets/messages/scenes/scenes_zh.properties @@ -3,16 +3,89 @@ scenes.changesscene.earlier=破碎更新动态 scenes.changesscene.later=魔绫更新动态 scenes.changesscene.shpd=破碎更新日志 -scenes.changesscene.mlpd=魔绫更新日志 +#scenes.aboutscene.= +scenes.gamescene.copied=如果你正在发生无限循环报错,那么请将报错发送给我!已经获取到你的剪贴板!如果并没有无限循环,请不要发送给我!感谢_英烈作者_调试信息实例!\n\nJDSALing#3793 Discord\n\nQQ:2735951230 + +scenes.gamescene.died_1= 失败只是暂时的,胜利还在前方等着你!\n\n在一次一次的磨练中,你会成功的,加油!!! +scenes.gamescene.died_2= 在做出选择之前一定要考虑自己战力是否足够\n\n否则,带来的后果将不堪重负!!! +scenes.gamescene.died_3= 每个Boss都有缺点和机制\n\n摸清他们的缺点与机制,才能将他们完全击败!!! +scenes.gamescene.died_4= 一味的向前冲可能会导致无法挽回的后果,\n\n只有理智的做出正确的选择,才能活下去!!! +scenes.gamescene.died_5= 地牢的环境复杂多变,只有细心之人才能获得胜利。\n\n加油吧,下一次,你会离成功更近一步的!!! + +scenes.interlevelscene.dialog_1=合理_运用物品_,\n\n获取_最终胜利_! +scenes.interlevelscene.dialog_2=你知道吗?\n\n_左下角的放大镜_是一个好东西 +scenes.interlevelscene.dialog_3=常去看_更新记录_的好孩子,\n\n就不会因为_新改动_而茫然. +scenes.interlevelscene.dialog_4=魔绫像素地牢-始于_2021年2月_,\n\n感谢引导者_REN_和Γ红龙Γ。 +scenes.interlevelscene.dialogi_5=有些时候_直面失败_,\n\n或许并不是什么坏事 +scenes.interlevelscene.dialog_6=_小心奸商!!!_\n\n他甚至不会卖给你_未诅咒的物品_! +scenes.interlevelscene.dialog_7=Δ种子Δ是个好东西,\n\n_关键看你_会不会用 +scenes.interlevelscene.dialog_8=_死灵领主_是无敌的!\n\n你需要击败_骷髅王_! +scenes.interlevelscene.dialog_9=呐呐呐,\n\n你听说过Ξ水晶之城Ξ的谣言吗? +scenes.interlevelscene.dialog_10=_总是暴毙?_这可能并不是你的问题。\n\nΞ总之,不要气馁,菜就多练练Ξ。 +scenes.interlevelscene.dialog_11=魔绫像素地牢,绝望与希望并存。 +scenes.interlevelscene.dialog_12=寻找_红龙之王_,\n\n剿灭_精英敌人_。 +scenes.interlevelscene.dialog_13=不是史神:\n\n请Γ小心咕咕!!! +scenes.interlevelscene.dialog_14=萌新岚:\n\n欢迎来到Γ火炎焱燚Γ地牢,本地牢Γ全面Γ戒烟.\n\n请不要在Γ过道内、木门口、地牢房间Γ吸烟。\n\n谢谢合作,祝您Δ冒险愉快Δ呢。 +scenes.interlevelscene.dialog_15=你知道吗?\n\n作者游玩的第一个地牢\n\n是Δ阿飞的不思议地牢Δ呢。 +scenes.interlevelscene.dialog_16=_太难打了?试着做一些新东西_\n\n让你的敌人只能抱头鼠窜! +scenes.interlevelscene.dialog_17=_魔绫像素地牢_\n\n上半段圆满结束,感谢各位参与_Demo_的人员。 +scenes.interlevelscene.dialog_18=_史莱姆王子_太难打?\n\n试着靠门打他。 +scenes.interlevelscene.dialog_19=DM920,矮人王国噩梦的开始。 +scenes.interlevelscene.dialog_20=感谢_那些回忆_和_罗贝里_的大力支持 +scenes.interlevelscene.dialog_21=Hod:\n\n明明清了水却还带电,太屑了。 +scenes.interlevelscene.dialog_22=笑笑就好:\n\n咒杖会意想不到的好用,敢赌吗? +scenes.interlevelscene.dialog_23=lmk3:\n\n话说,为什么尚方宝剑不能吃呢? +scenes.interlevelscene.dialog_24=five:\n\n嬗变初始武器可能有惊喜哦。 +scenes.interlevelscene.dialog_25=U3D:\n\n治疗该喝就得喝,别省。 +scenes.interlevelscene.dialog_26=观察者:\n\n黑骑士的物抗极高,但法抗不行哦。 +scenes.interlevelscene.dialog_27=楪祈喵:\n\n欢迎来到魔绫,享受这场狂宴吧。 +scenes.interlevelscene.dialog_28=Beyond:\n\n今天要炼铜!明天要炼铜!永远要炼铜! +scenes.interlevelscene.dialog_29=桃林:\n\n你走过的每一步,都或许是某位先辈的归宿。 +scenes.interlevelscene.dialog_30=荨麻心绪:\n\nBOSS太肉无法解决?为什么不试试药水呢。 +scenes.interlevelscene.dialog_31=荨麻心绪:\n\n半路暴毙也不用灰心,毕竟作者也会翻车()\n\n绫:听我说,谢谢你,温暖了四季。 +scenes.interlevelscene.dialog_32=荨麻心绪:\n\n萌新路线:王子-宝箱王-魔女-领主-EX古神() + +scenes.mlpdaboutscene.txt_mlpd=基于 _破碎的像素地牢v0.9.2b_ \n\n 采用了_注解版;生存地牢;疯长地牢;经验地牢_的部分源代码。 +scenes.mlpdaboutscene.ttl_ansdo=制作:答舟工作室 +scenes.mlpdaboutscene.txt_ansdo=_策划:_ JDSA Ling\n\n\ +_程序:_ JDSA Ling & 碳酸天剑\n\n\ +_音乐:_ Prohonor\n\n\ +_美工:_ JDSA Ling、碳酸天剑\n\ +Daniel Clan、REN、 +scenes.mlpdaboutscene.join=加入官方QQ群 +scenes.mlpdaboutscene.github=源码仓库地址 +scenes.mlpdaboutscene.joinlink=https://jq.qq.com/?_wv=1027&k=R7ZXeEQM +scenes.tssupporterscene.title=捐赠碳酸 +scenes.thanksscene.title=致谢者名单 +scenes.tssupporterscene.intro=我在此保证魔绫像素地牢永远不会沾上任何广告或者其它违和的东西用于盈利,但我也希望能够得到资金支持。 +scenes.tssupporterscene.msg=很多时候,一定的资金支持是保证项目能够健康发展的重要因素。如果您对魔绫像素地牢感到满意,又恰巧财力足够,能否前往Ko-fi留下一份心意? +scenes.tssupporterscene.supporter_link=前往Ko-fi捐赠页面 +scenes.tssupporterscene.name=碳酸天剑,答舟工作室室长 + +scenes.lingsupporterscene.title=捐赠小绫 +scenes.lingsupporterscene.intro=魔绫像素地牢是我本人基于破碎的像素地牢做的一款MOD地牢。它完全免费,并由我个人独立开发。 +scenes.lingsupporterscene.msg=如果阁下想支持一波小绫,请点击下方捐赠按钮。当然,即使你不捐赠。你的心意小绫也领到了。 +scenes.lingsupporterscene.supporter_link=前往爱发电捐赠页面 +scenes.lingsupporterscene.name=JDSALing,魔绫地牢总设计者 + +scenes.spslscene.ts=碳酸天剑-Tianscar +scenes.spslscene.title=捐赠 +scenes.spslscene.ling=中二绫-JDSALing +scenes.spslscene.zxz=致谢名单 +scenes.changesscene.spd=破碎的像素地牢 +scenes.changesscene.mlpd=魔绫像素地牢 +scenes.changesscene.who=MLPD详细日志摘要 +scenes.aboutselectscene.title=关于游戏 scenes.alchemyscene.title=炼金 scenes.alchemyscene.text=放入材料以制作新的道具! scenes.alchemyscene.select=选择一件物品 -scenes.alchemyscene.energy=能量: +scenes.alchemyscene.cost=能量消耗:%d +scenes.alchemyscene.energy=炼金能量:%d -scenes.amuletscene.exit=现在就到此为止吧 -scenes.amuletscene.stay=这一切还不该结束 -scenes.amuletscene.text=Yendor护身符,你终于把它握在手中了!有了这个护身符的力量,没有任何东西能够阻挡你前进的步伐!你已经征服了地牢,并且成功地完成了你的任务!\n\n或者,也许你还没准备好?你也可以决定仅仅是带着护身符,并以一个凡人的姿态在这里逗留一会...... +scenes.amuletscene.exit=回到主城,未完待续 +scenes.amuletscene.stay=留在这里,稍后离开 +scenes.amuletscene.text=当你打败了古神了之后,这个发着微弱的光芒的水晶之心就是你最后的东西。\n\n前面已经没有了道路,留给你的只有无尽深渊。\n\n耳旁却似乎仍然有人在窃窃私语。\n\n无论如何,尘埃落定,你确实已经探索完了地牢。但确实是无功而返?\n\n不,水晶之心证明你曾经来过,而且这个肯定能让他们眼前一亮。 scenes.badgesscene.title=你的徽章 @@ -25,50 +98,52 @@ scenes.changesscene.bugfixes=Bug修复 scenes.changesscene.misc=杂项改动 scenes.changesscene.language=语言更新 +scenes.gamescene.ice_spawner_warn=你感觉到上方的寒冰魔力影响到了这里! +scenes.gamescene.ice_spawner_warn_final=你能感觉到寒冰魔力影响到了这里,并且这里正在扭曲变换,你有大麻烦了! scenes.gamescene.descend=你降入了地牢的第%d层。 scenes.gamescene.spawner_warn=你感觉有一个恶魔能量的供给源在你头顶上...... -scenes.gamescene.spawner_warn_final=你能感觉到恶魔能量从楼上辐射到了这里! +scenes.gamescene.spawner_warn_final=你能感觉到恶魔能量从楼上辐射到了这里!并且这里正在扭曲变换,你有大麻烦了! + scenes.gamescene.warp=你四周的墙壁开始扭曲变换! scenes.gamescene.return=你回到了地牢的第%d层。 -scenes.gamescene.resurrect=你出现在了第%d层的某处。 scenes.gamescene.secret_hint=直觉告诉你这层的某处一定存在着一个隐藏的房间... scenes.gamescene.chasm=你的脚步声回荡在地牢中。 scenes.gamescene.water=你听见周围水花铺洒的声音。 scenes.gamescene.grass=空气中弥漫着浓郁的植物清香。 scenes.gamescene.dark=你依稀听到敌人在黑暗中涌动... scenes.gamescene.large=这一层的规模貌似格外庞大... + scenes.gamescene.traps=这一层的地面机关密布,暗藏杀机... scenes.gamescene.secrets=诡秘的气氛正暗示这层隐藏着众多秘密。 scenes.gamescene.choose_examine=选择检查目标 scenes.gamescene.multiple_examine=这里引人注意的东西不止一件,你想检查哪个? scenes.gamescene.dont_know=你不清楚那里有什么。 -scenes.gamescene.multiple=多重目标 -scenes.gamescene.go_here=去那里 -scenes.gamescene.interact=互动 -scenes.gamescene.attack=攻击 -scenes.gamescene.pick_up=拾取 -scenes.gamescene.purchase=购买 -scenes.gamescene.trample=践踏 -scenes.gamescene.examine=检视 scenes.heroselectscene.title=选择一位英雄 +scenes.heroselectscene$wndheroinfo.innate_title=固有能力 +scenes.heroselectscene$wndheroinfo.loadout_title=初始道具 +scenes.heroselectscene$wndheroinfo.talents_title=天赋 +scenes.heroselectscene$wndheroinfo.talents_desc=英雄升级时会解锁天赋。 +scenes.heroselectscene$wndheroinfo.subclasses_title=专精 scenes.interlevelscene$mode.descend=下楼中… scenes.interlevelscene$mode.ascend=上楼中… scenes.interlevelscene$mode.continue=读取中… scenes.interlevelscene$mode.resurrect=复活中… scenes.interlevelscene$mode.return=返回中… +scenes.interlevelscene$mode.goback=时间就是金钱……数据重置中…… scenes.interlevelscene$mode.fall=跌落中… scenes.interlevelscene$mode.reset=重置中… +scenes.interlevelscene$mode.ko=正在重新踏上征途中… scenes.interlevelscene.install=安装游戏 scenes.interlevelscene.file_not_found=未能找到存档文件。如果重启后问题依旧存在, 那这个存档可能已经损坏。节哀顺变。 scenes.interlevelscene.io_error=未能找到存档文件。如果重启后问题依旧存在, 那这个存档可能已经损坏。节哀顺变。 -scenes.introscene.text=在你之前,也曾经有很多来自地面的英雄向这个地下城进发。多数人是一去不返,而有的人则带回了财富、宝物、荣誉。\n\n不过,从未有人能成功到达过地下城的最底层,染指Yendor护符,传说它被深渊中的远古邪物守卫着,哪怕是现在,黑暗能量也从地下辐射而来,一路渗透到地表城镇中。\n\n你认为你准备好接受挑战了,更重要的是,你觉得命运女神正对你微笑。是时候开始你自己的冒险了! +scenes.introscene.text=在你之前,曾经有很多来自上方城镇的英雄向这个地城进发。有的人带回了财宝和魔法道具,而大多数人彻底销声匿迹。\n\n不过,从未有人能成功到达过底层,染指Yendor护符,传说它被深渊中的远古邪物守卫着,哪怕是现在,黑暗之力也从地下辐射而来,一路渗透到城镇中。\n\n你认为你准备好接受挑战了,更重要的是,你觉得命运女神正对你微笑. 是时候开始你自己的冒险了! -scenes.newsscene.title=游戏新闻 +scenes.newsscene.title=游戏动态情报 scenes.newsscene.read_more=查阅更多 -scenes.newsscene$newsinfo.english_warn=新闻仅能由开发者以英文撰写。 +scenes.newsscene$newsinfo.english_warn=新闻仅能由开发者以中文撰写。 scenes.newsscene$newsinfo.metered_network=当连接到一个流量计费的网络,比如移动数据时,您无法浏览新闻。 scenes.newsscene$newsinfo.enable_data=请检查移动数据网络 scenes.newsscene$newsinfo.no_internet=无法查看新闻,请确认您已连接到互联网。 @@ -83,25 +158,21 @@ scenes.rankingsscene.no_info=没有额外信息 scenes.startscene.title=进行中的游戏 scenes.startscene.new=新游戏 -scenes.supporterscene.title=支持游戏开发 -scenes.supporterscene.intro=我不希望破碎的像素地牢沾上任何不知毁掉了多少游戏的广告或者其它违和的小东西。我更希望玩家们能自发直接地支持这款游戏! -scenes.supporterscene.patreon_msg=如果您喜欢玩破碎的像素地牢并且希望帮助我持续地开发它,请考虑考虑在Patreon上支持我吧!有了Patreon提供的稳定收入,我才得以为赞助者们提供独特的好处!\n-每周开发小日志,分享我正着力进行的工作。\n-玩家意愿调查,调查的结果会直接影响到我正开发的内容。\n-一份社区活动纪录,包含开发日志以及聊天频道信息。\n-伴随Patreon社区的扩张,更多好处还会到来哦~\n\n你可以通过访问在Patreon上的页面获得更多信息。感谢您百忙之中抽空拜访,祝地下城探险愉快! -scenes.supporterscene.patreon_english=(请注意:Patreon回报仅提供英文内容) -scenes.supporterscene.supporter_link=前往在Patreon上的主页。 -scenes.surfacescene.exit=游戏结束 + +scenes.surfacescene.exit=未完待续 scenes.titlescene.play=开始 scenes.titlescene.enter=进入地牢 scenes.titlescene.rankings=排行榜 scenes.titlescene.badges=徽章 -scenes.titlescene.news=游戏新闻 +scenes.titlescene.news=游戏动态情报 scenes.titlescene.changes=改动 scenes.titlescene.update=更新 scenes.titlescene.install=安装 scenes.titlescene.settings=设置 scenes.titlescene.about=关于 -scenes.titlescene.support=支持游戏开发 +scenes.titlescene.support=致谢 scenes.titlescene$changesbutton.title=检测到新版本! scenes.titlescene$changesbutton.versioned_title=最新版本:%s scenes.titlescene$changesbutton.desc=破碎的像素地牢会时常更新以变更既有内容,或是加入新东西!\n\n游戏平衡也会经常得到调整,维持物品、英雄、敌人强度的大致均衡。\n\n更新还包含漏洞修复与各种稳定性提升。 @@ -110,17 +181,57 @@ scenes.titlescene$changesbutton.changes=近期更新界面 scenes.titlescene.patreon_body=《破碎像素地牢》是一款完全免费的游戏,有玩家的大方捐献支持我才能一直坚持开发。\n\n如果想支持我,最好的方法是使用 Patreon 平台。 Patreon 能提供一个稳定的收入源,也让我有方法回馈我的支持者!\n\nPatreon 支持者每周都可以看一篇独家文章,抢先于其他所有人了解我的下一步开发想法!\n\n你可以访问我的 Patreon 页面获悉最新的回馈详情。感谢你的支持!\n\n(Patreon 奖励只能提供英语内容,请见谅) scenes.titlescene.patreon_button=Patreon 赞助页面 -scenes.welcomescene.welcome_msg=欢迎来到破碎的像素地牢!\n\n每一次突破地牢的尝试都是崭新的挑战。不过当心了,一旦死亡就只能期待下一局!你很容易就能开始一场新游戏,只不过需要运用你的雄韬伟略才能通关!\n\n预祝地牢探索愉快! -scenes.welcomescene.update_intro=破碎的像素地牢已经更新! -scenes.welcomescene.update_msg=v1.2.0 版本是破碎的像素地牢面向电脑端设计的第一个版本!对于屏幕较大或使用手柄及键鼠的玩家,它有许多针对性的优化!\n\n同时也有一些内容上的变化,包括新的特殊房间,神偷袖章的重做,以及各种各样魔法结晶的改进。\n\n别忘了前往改动界面以获得完整的更新详情。 -scenes.welcomescene.patch_intro=破碎的像素地牢补丁已经成功安装! +scenes.welcomescene.welcome_msg=魔绫的像素地牢是一个roguelike类RPG游戏,有着随机生成的敌人、关卡、物品和陷阱!\n\n每一轮游戏都是一次全新的挑战,注意,死亡是永久的!\n\n祝你在地牢一路顺风! +scenes.welcomescene.update_intro=魔绫的像素地牢已经更新! +scenes.welcomescene.update_msg=0.5.0.5经过56天终于出炉,基于破碎0.8.1!具体请看更新记录!By JDSA——Ling +scenes.welcomescene.patch_intro=魔绫的像素地牢补丁已经成功安装! scenes.welcomescene.patch_bugfixes=本次补丁包含少量Bug修复。 scenes.welcomescene.patch_translations=本次补丁包含翻译文本更新。 scenes.welcomescene.patch_balance=本次更新包含游戏平衡性改动。 scenes.welcomescene.patch_msg=本次补丁同样包含少量微调和性能优化。 -scenes.welcomescene.what_msg=看起来你正使用的存档来自于新版本的破碎地牢!\n\n谨慎行事!你的存档可能包含一些这个版本中不存在的东西,这可能会导致一些非常奇怪的错误发生。 +scenes.welcomescene.what_msg=看起来你正使用的存档来自于新版本的魔绫地牢!\n\n谨慎行事!你的存档可能包含一些这个版本中不存在的东西,这可能会导致一些非常奇怪的错误发生。 scenes.welcomescene.lang_warning_title=翻译未完成 -scenes.welcomescene.lang_warning_msg=本次更新内容还未被完全翻译。\n\n部分词汇可能还是英语。\n\n翻译组正全力解决这个问题,完整翻译将在不久后放出。\n\n谢谢您的耐心等待。 +scenes.welcomescjene.lang_warning_msg=本次更新内容还未被完全翻译。\n\n部分词汇可能还是英语。\n\n翻译组正全力解决这个问题,完整翻译将在不久后放出。\n\n谢谢您的耐心等待。 scenes.welcomescene.continue=继续 scenes.welcomescene.changelist=变动列表 -scenes.welcomescene.save_warning=最近,破碎的像素地牢在进行存档时被打断了。\n\n本游戏内置有保护机制,所以你的游戏数据可能不会丢失。但你仍然可以确认一下。\n\n这通常在你的设备突然断电,或如果它没有以合适方式关闭本游戏的时候发生。移动设备的省电功能通常会导致这种情况。 + +scenes.jamuletscene.exit=删除存档 +scenes.jamuletscene.stay=继续留着 +scenes.jamuletscene.text=Never Give UP!\n\n年轻人在想桃子\n\n开发者模式还想过关?白日做梦! + +scenes.kamuletscene.stay=逆转宽恕 +scenes.kamuletscene.exit=踏上征途 +scenes.kamuletscene.text=骄傲、妒忌、愤怒,伤悲、贪婪、贪食、好色\n\n人们的丑陋,在这里显露了出来。现在,你已经来到了一个两难的境地。是接受审判,从历史中消失?还是清除所有记忆,重新为你铺上一次道路。\n\n我不是神,但我是神的代言人。请做出选择吧! + +scenes.guidescene.title=魔绫像素地牢指南书 +scenes.guidescene.pages=11 +scenes.guidescene.title_0=写在前面 +scenes.guidescene.page_0=欢迎来到魔绫的像素地牢,这个地牢Δ基于0.92破碎Δ。\n\n这里是新手必读指南书。\n\n如果你是第一次游玩本地牢,请一定先看看这个指南。\n\nΔ它绝对对你今后游玩有益处。 +scenes.guidescene.title_1=关于难度 +scenes.guidescene.page_1=诚然,难度是有的,不过肯定比不上赫拉克勒斯的十二试炼。 \n\n 事实上它的难度被认为控制在了一个可以接受的水平,如果不适应或感觉太难,很可能是因为没有熟悉它较为独特的机制,你可能需要更细致和灵活的战略战术才能在地牢里无往不利,所以接下来的内容会很好地帮助你。\n\n 放轻松,虽然它的要求有点高,但凡人又不是非要通关不可。 +scenes.guidescene.title_2=鉴定物品 +scenes.guidescene.page_2=无知者无畏,然而更经常无能。 \n\n _药水的颜色与卷轴的符文_与它们的作用在每个地牢中都不一样,在你使用或鉴定它们之前,知识还处于混沌之中。 \n\n 地牢里的装备在_漫长的时间_中也许吸收了力量,但Γ也可能磨损甚至被施下恶毒的诅咒Γ。穿上一件被诅咒的装备会让你陷入不利境地,但也不会立刻宣判你的死亡。\n\n 通过_升级、鉴定以及驱邪_等手段,你可以很容易地规避掉这些风险,有备无患。 +scenes.guidescene.title_3=搜索查寻 +scenes.guidescene.page_3=真相往往不会明摆在那里,尤其是对粗心的人而言。 \n\n 记得随时停下脚步休整或观察周遭,以寻求最佳方案。Γ鲁莽地一头冲进敌阵也许很勇敢,但不明智。 Γ \n\n 不要忘记搜索,地牢里_暗门和陷阱遍布,双击放大镜按钮来发现它们的秘密_。 +scenes.guidescene.title_4=书籍祝福 +scenes.guidescene.page_4=在地牢里面,你总是你看到各种各样的书籍。\n\n-它们记录了_地牢的一些变故和一些骇人听闻的故事。_\n\n-当然,你如果想使用书籍的力量,这就需要一点方法。\n\n-鉴定你的书籍,这样你就可以阅读它们。不同的书籍将会有不同的效果,祝战斗愉快! +scenes.guidescene.title_5=任务系统 +scenes.guidescene.page_5=在地牢里面,你总能遇到形形色色的NPC。\n\n-他们或多或少都会给你一些任务。\n\n_完成任务将会获得一定的奖励,这会让你后续冒险途中能获得更多的益处。_ +scenes.guidescene.title_6=风行水上 +scenes.guidescene.page_6=在你冒险的途中,一些守护神也在保护你。\n\n但由于一些其他因素,一些魔力聚焦的地点无法影响到你。\n\nΓ 注意,同样有一些恶神对你虎视眈眈! Γ +scenes.guidescene.title_7=抢劫商店 +scenes.guidescene.page_7=诚然,抢劫商店是一种不必要手段。\n\n虽然,你抢劫成功可以获得所有东西。\n\n是的,商店可以抢劫,当然,你必须做好充分准备。否则,将会被商人的守卫杀死。祝你好运!!! +scenes.guidescene.title_8=染血金币 +scenes.guidescene.page_8=地牢现在的力量复杂多变,这也导致了地牢的首领可能很强也可能很弱。\n\n为此,我们在寒冰圣域发现的一枚刻有骷髅头的金币,沾染的血渍让这枚金币附着了能改变时空的魔力。抛动金币以扰动地牢的魔力流。通过抛动金币,便可以选择需要的Boss。\n\n特别说明:DM720是在未选择魔女的情况下以20%几率刷出。 +scenes.guidescene.title_9=0层加成 +scenes.guidescene.page_9=当你完成了一些特殊挑战后,0层的四个基座就会追加更多的补给品。\n\n-请小心,挑战非常困难,但一旦开着挑战胜利了是不是很有成就感了,对吧! +scenes.guidescene.title_10=未完待续 +scenes.guidescene.page_10=感谢你阅读这篇指南,它可能并不完善。但应该能帮助你。\n\n同时,这只是上半段的结束。请期待下半段的更新。 + +scenes.thanksscene.code=编码致谢:\n-REN(夜临2作者)\n-Alexstrasza(注解作者)\n-SmuJB(诅咒作者)\n-Tianscar(碳化作者)\n-TrashBoxbodylev(经验作者) +scenes.thanksscene.test=\n\n测试致谢:\n-CodenameE\n-熊猫头\n-迷茫\n-小狐狸\n-摘希\n-ZIOM-ObSir\n-坏猫猫\n-不是史神\n-月鸾\n-口水猫 +scenes.thanksscene.music=\n\n音乐致谢:\n-Prohonor\n-泰拉瑞亚 +scenes.thanksscene.art=\n\n美术致谢:\n-被子\n-冷群怪\n-REN\n-Daniel Clan\n-奈亚子-\nTianScar\n-ObSir\n-Nxhy +scenes.thanksscene.ad=\n\n宣传致谢:\n-那些回忆\n-罗贝里\n-泰勒 +scenes.thanksscene.join=加入魔绫总群 +scenes.thanksscene.link=https://jq.qq.com/?_wv=1027&k=wzMjU0f7 \ No newline at end of file diff --git a/core/src/main/assets/messages/windows/windows_zh.properties b/core/src/main/assets/messages/windows/windows_zh.properties index c52d8143f..948fa47e5 100644 --- a/core/src/main/assets/messages/windows/windows_zh.properties +++ b/core/src/main/assets/messages/windows/windows_zh.properties @@ -2,6 +2,9 @@ windows.wndblacksmith.prompt=好吧,按之前说好的,我得帮你做点事 windows.wndblacksmith.select=选择要重铸的物品 windows.wndblacksmith.reforge=重铸物品 +windows.wndstartgame.title=选择一位英雄 +windows.wndstartgame.start=开始游戏 + windows.wndchallenges.title=挑战 windows.wndchooseability.message=手指还未离开,头顶上的皇冠就开始与你的护甲共鸣,发光、发热,好像坐上你的颅骨就是它的创造使命。皇冠的魔力包覆起你的护甲,摩挲起你的意志,像等待帝王下旨的臣子。陛下,哪项护甲技能更合圣意? diff --git a/core/src/main/assets/mispd.png b/core/src/main/assets/mispd.png new file mode 100644 index 000000000..db9d6aa60 Binary files /dev/null and b/core/src/main/assets/mispd.png differ diff --git a/core/src/main/assets/ptr.png b/core/src/main/assets/ptr.png new file mode 100644 index 000000000..c81046b71 Binary files /dev/null and b/core/src/main/assets/ptr.png differ diff --git a/core/src/main/assets/ren.png b/core/src/main/assets/ren.png new file mode 100644 index 000000000..1b332f582 Binary files /dev/null and b/core/src/main/assets/ren.png differ diff --git a/core/src/main/assets/rt.png b/core/src/main/assets/rt.png new file mode 100644 index 000000000..13e11a813 Binary files /dev/null and b/core/src/main/assets/rt.png differ diff --git a/core/src/main/assets/smujb.png b/core/src/main/assets/smujb.png new file mode 100644 index 000000000..0211d0d2f Binary files /dev/null and b/core/src/main/assets/smujb.png differ diff --git a/core/src/main/assets/sprites/avatars.png b/core/src/main/assets/sprites/avatars.png index b267f9bd2..a1535a170 100644 Binary files a/core/src/main/assets/sprites/avatars.png and b/core/src/main/assets/sprites/avatars.png differ diff --git a/core/src/main/assets/sprites/huntress.png b/core/src/main/assets/sprites/huntress.png index 9b4612afa..0ebbe2c5d 100644 Binary files a/core/src/main/assets/sprites/huntress.png and b/core/src/main/assets/sprites/huntress.png differ diff --git a/core/src/main/assets/sprites/items/items.png b/core/src/main/assets/sprites/items/items.png index 108692012..2cf3712b5 100644 Binary files a/core/src/main/assets/sprites/items/items.png and b/core/src/main/assets/sprites/items/items.png differ diff --git a/core/src/main/assets/sprites/mage.png b/core/src/main/assets/sprites/mage.png index fb48ce3d2..2e609f28b 100644 Binary files a/core/src/main/assets/sprites/mage.png and b/core/src/main/assets/sprites/mage.png differ diff --git a/core/src/main/assets/sprites/petreddragon.png b/core/src/main/assets/sprites/petreddragon.png new file mode 100644 index 000000000..19ec6c352 Binary files /dev/null and b/core/src/main/assets/sprites/petreddragon.png differ diff --git a/core/src/main/assets/sprites/rogue.png b/core/src/main/assets/sprites/rogue.png index f7f400f3f..6fa832fb5 100644 Binary files a/core/src/main/assets/sprites/rogue.png and b/core/src/main/assets/sprites/rogue.png differ diff --git a/core/src/main/assets/sprites/warrior.png b/core/src/main/assets/sprites/warrior.png index d9a5bb715..8129e0094 100644 Binary files a/core/src/main/assets/sprites/warrior.png and b/core/src/main/assets/sprites/warrior.png differ diff --git a/core/src/main/assets/sprites/wengi.png b/core/src/main/assets/sprites/wengi.png new file mode 100644 index 000000000..725df7381 Binary files /dev/null and b/core/src/main/assets/sprites/wengi.png differ diff --git a/core/src/main/assets/tra.png b/core/src/main/assets/tra.png new file mode 100644 index 000000000..ecda4759f Binary files /dev/null and b/core/src/main/assets/tra.png differ diff --git a/core/src/main/assets/ttf.png b/core/src/main/assets/ttf.png new file mode 100644 index 000000000..1e346fa94 Binary files /dev/null and b/core/src/main/assets/ttf.png differ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java index 39cb96721..8682a3b3e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java @@ -234,71 +234,94 @@ public class Assets { public static final String FRAS = "sprites/boss/FireMagicGirl.png"; public static final String NECROREDEX = "sprites/boss/rednecromancer_ex.png"; - - //GENRAL - public static final String ITEMS = "sprites/items/items.png"; + public static final String ITEMS = "sprites/items/items.png"; public static final String ITEM_ICONS = "sprites/item_icons.png"; - public static final String WARRIOR = "sprites/warrior.png"; - public static final String MAGE = "sprites/mage.png"; - public static final String ROGUE = "sprites/rogue.png"; - public static final String HUNTRESS = "sprites/huntress.png"; - public static final String AVATARS = "sprites/avatars.png"; - public static final String PET = "sprites/pet.png"; - public static final String AMULET = "sprites/amulet.png"; + public static final String MGAS = "sprites/icemagicgirl.png"; - public static final String RAT = "sprites/rat.png"; - public static final String BRUTE = "sprites/brute.png"; - public static final String SPINNER = "sprites/spinner.png"; - public static final String DM300 = "sprites/dm300.png"; - public static final String WRAITH = "sprites/wraith.png"; - public static final String UNDEAD = "sprites/undead.png"; - public static final String KING = "sprites/king.png"; - public static final String PIRANHA = "sprites/piranha.png"; - public static final String EYE = "sprites/eye.png"; - public static final String GNOLL = "sprites/gnoll.png"; - public static final String CRAB = "sprites/crab.png"; - public static final String GOO = "sprites/goo.png"; - public static final String SWARM = "sprites/swarm.png"; - public static final String SKELETON = "sprites/skeleton.png"; - public static final String SHAMAN = "sprites/shaman.png"; - public static final String THIEF = "sprites/thief.png"; - public static final String TENGU = "sprites/tengu.png"; - public static final String SHEEP = "sprites/sheep.png"; - public static final String KEEPER = "sprites/shopkeeper.png"; - public static final String BAT = "sprites/bat.png"; + public static final String WARRIOR = "sprites/warrior.png"; + public static final String MAGE = "sprites/mage.png"; + public static final String ROGUE = "sprites/rogue.png"; + public static final String HUNTRESS = "sprites/huntress.png"; + public static final String COMINGSOON = "sprites/slimekingch.png"; + public static final String AVATARS = "sprites/avatars.png"; + public static final String PET = "sprites/pet.png"; + public static final String AMULET = "sprites/amulet.png"; + public static final String JAMULET = "sprites/jamulet.png"; + public static final String COLDRAT = "sprites/coldrat.png"; + public static final String REDSWARM = "sprites/RedSearm.png"; + public static final String REN = "Ren/ren.png"; + public static final String WHITE = "Npcs/White.png"; + + public static final String RAT = "sprites/rat.png"; + public static final String BRUTE = "sprites/brute.png"; + public static final String SPINNER = "sprites/spinner.png"; + public static final String ASDW = "sprites/Viaw.png"; + public static final String ASDWX = "sprites/FireBallMob.png"; + public static final String DM300 = "sprites/dm300.png"; + public static final String DM720 = "sprites/dm720.png"; + public static final String WRAITH = "sprites/wraith.png"; + public static final String UNDEAD = "sprites/undead.png"; + public static final String KING = "sprites/king.png"; + public static final String PIRANHA = "sprites/piranha.png"; + public static final String EYE = "sprites/eye.png"; + public static final String GNOLL = "sprites/gnoll.png"; + public static final String CRAB = "sprites/crab.png"; + public static final String GOO = "sprites/goo.png"; + public static final String SWARM = "sprites/swarm.png"; + public static final String SKELETON = "sprites/skeleton.png"; + public static final String SHAMAN = "sprites/shaman.png"; + public static final String THIEF = "sprites/thief.png"; + public static final String MUDTHIEF = "sprites/thief2.png"; + public static final String TENGU = "sprites/tengu.png"; + public static final String SHEEP = "sprites/sheep.png"; + public static final String KEEPER = "sprites/shopkeeper.png"; + public static final String BAT = "sprites/bat.png"; + public static final String BATEX = "sprites/BrownBat.png"; public static final String ELEMENTAL= "sprites/elemental.png"; - public static final String MONK = "sprites/monk.png"; - public static final String WARLOCK = "sprites/warlock.png"; - public static final String GOLEM = "sprites/golem.png"; - public static final String STATUE = "sprites/statue.png"; - public static final String SUCCUBUS = "sprites/succubus.png"; - public static final String SCORPIO = "sprites/scorpio.png"; - public static final String FISTS = "sprites/yog_fists.png"; - public static final String YOG = "sprites/yog.png"; - public static final String LARVA = "sprites/larva.png"; - public static final String GHOST = "sprites/ghost.png"; - public static final String MAKER = "sprites/wandmaker.png"; - public static final String TROLL = "sprites/blacksmith.png"; - public static final String IMP = "sprites/demon.png"; - public static final String RATKING = "sprites/ratking.png"; + public static final String REDDRAGONPET = "sprites/petreddragon.png"; + public static final String MONK = "sprites/monk.png"; + public static final String MONKDIED = "sprites/monkdied.png"; + public static final String WARLOCK = "sprites/warlock.png"; + public static final String GOLEM = "sprites/golem.png"; + public static final String ICEGOLEM = "sprites/icegolem.png"; + public static final String STATUE = "sprites/statue.png"; + public static final String SUCCUBUS = "sprites/succubus.png"; + public static final String IFE_SCORPIO = "sprites/ife_scriopi.png"; + public static final String SCORPIO = "sprites/scorpio.png"; + public static final String FISTS = "sprites/yog_fists.png"; + public static final String YOG = "sprites/yog.png"; + public static final String LARVA = "sprites/larva.png"; + public static final String GHOST = "sprites/ghost.png"; + public static final String MAKER = "sprites/wandmaker.png"; + public static final String NYZD = "Npcs/nyz.png"; + public static final String TROLL = "sprites/blacksmith.png"; + public static final String IMP = "sprites/demon.png"; + public static final String RATKING = "sprites/ratking.png"; public static final String BEE = "sprites/bee.png"; public static final String MIMIC = "sprites/mimic.png"; public static final String ROT_LASH = "sprites/rot_lasher.png"; public static final String ROT_HEART= "sprites/rot_heart.png"; public static final String GUARD = "sprites/guard.png"; public static final String WARDS = "sprites/wards.png"; - public static final String GUARDIAN = "sprites/guardian.png"; - public static final String SLIME = "sprites/slime.png"; - public static final String SNAKE = "sprites/snake.png"; - public static final String NECRO = "sprites/necromancer.png"; - public static final String GHOUL = "sprites/ghoul.png"; - public static final String RIPPER = "sprites/ripper.png"; - public static final String SPAWNER = "sprites/spawner.png"; - public static final String DM100 = "sprites/dm100.png"; - public static final String PYLON = "sprites/pylon.png"; - public static final String DM200 = "sprites/dm200.png"; - public static final String LOTUS = "sprites/lotus.png"; + public static final String GUARDIAN = "sprites/guardian.png"; + public static final String SLIME = "sprites/slime.png"; + public static final String SNAKE = "sprites/snake.png"; + public static final String NECRO = "sprites/necromancer.png"; + public static final String NECRORED = "sprites/rednecromancer.png"; + + public static final String GHOUL = "sprites/ghoul.png"; + public static final String RIPPER = "sprites/ripper.png"; + public static final String SPAWNER = "sprites/spawner.png"; + public static final String DM100 = "sprites/dm100.png"; + public static final String DM275 = "mobs/dm300special.png"; + public static final String PYLON = "sprites/pylon.png"; + public static final String PYLONCS = "sprites/pylonks.png"; + public static final String CRSTAL = "sprites/crstal.png"; + public static final String DM200 = "sprites/dm200.png"; + public static final String LOTUS = "sprites/lotus.png"; + public static final String CRSTA = "sprites/crstalspawn.png"; + public static final Object NECROBLUE = "sprites/bluenecromancer.png"; public static final String NINJA_LOG= "sprites/ninja_log.png"; public static final String SPIRIT_HAWK= "sprites/spirit_hawk.png"; public static final String RED_SENTRY= "sprites/red_sentry.png"; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FireGhostDead.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FireGhostDead.java new file mode 100644 index 000000000..06c5c7e3c --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/mobs/FireGhostDead.java @@ -0,0 +1,202 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2019 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.actors.mobs; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.Dungeon; +import com.shatteredpixel.shatteredpixeldungeon.actors.Actor; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff; +import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Burning; +import com.shatteredpixel.shatteredpixeldungeon.effects.particles.ShadowParticle; +import com.shatteredpixel.shatteredpixeldungeon.items.Generator; +import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; +import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.FireGhostDeadSprite; +import com.shatteredpixel.shatteredpixeldungeon.utils.GLog; +import com.watabou.noosa.audio.Sample; +import com.watabou.noosa.tweeners.AlphaTweener; +import com.watabou.utils.Bundle; +import com.watabou.utils.Callback; +import com.watabou.utils.Random; + +public class FireGhostDead extends Mob implements Callback { + + private static final float TIME_TO_ZAP = 1f; + + + + { + spriteClass = FireGhostDeadSprite.class; + + HP = HT = 6; + defenseSkill = 4; + + EXP = 3; + maxLvl = -228; + + loot = Generator.Category.POTION; + lootChance = 0.1f; + + properties.add(Property.UNDEAD); + } + private int level; + public void adjustStats( int level ) { + this.level = level; + defenseSkill = attackSkill( null ) * 5; + enemySeen = true; + } + private static final String LEVEL = "level"; + @Override + public void restoreFromBundle( Bundle bundle ) { + super.restoreFromBundle( bundle ); + level = bundle.getInt( LEVEL ); + adjustStats( level ); + } + + private static final float SPAWN_DELAY = 2f; + public static FireGhostDead spawnAt( int pos ) { + if (!Dungeon.level.solid[pos] && Actor.findChar( pos ) == null) { + + FireGhostDead w = new FireGhostDead(); + w.adjustStats( Dungeon.depth ); + w.pos = pos; + w.state = w.HUNTING; + GameScene.add( w, SPAWN_DELAY ); + + w.sprite.alpha( 0 ); + w.sprite.parent.add( new AlphaTweener( w.sprite, 1, 0.5f ) ); + + w.sprite.emitter().burst( ShadowParticle.CURSE, 5 ); + + return w; + } else { + return null; + } + } + + @Override + public int damageRoll() { + return Random.NormalIntRange( 5, 12 ); + } + + @Override + public int attackSkill( Char target ) { + return 12; + } + + @Override + public int drRoll() { + return Random.NormalIntRange(1, 8); + } + + @Override + protected boolean canAttack( Char enemy ) { + return new Ballistica( pos, enemy.pos, Ballistica.MAGIC_BOLT).collisionPos == enemy.pos; + } + + protected boolean doAttack( Char enemy ) { + + if (Dungeon.level.adjacent( pos, enemy.pos )) { + + return super.doAttack( enemy ); + + } else { + + if (sprite != null && (sprite.visible || enemy.sprite.visible)) { + sprite.zap( enemy.pos ); + return false; + } else { + zap(); + return true; + } + } + } + + //used so resistances can differentiate between melee and magical attacks + public static class DarkBolt{} + + private void zap() { + spend( TIME_TO_ZAP ); + + if (hit( this, enemy, true )) { + //TODO would be nice for this to work on ghost/statues too + if (enemy == Dungeon.hero && Random.Int( 2 ) == 0) { + Buff.affect(enemy, Burning.class).reignite(enemy); + Sample.INSTANCE.play( Assets.Sounds.DEBUFF ); + } + + int dmg = Random.NormalIntRange( 2, 4 ); + enemy.damage( dmg, new DarkBolt() ); + + if (enemy == Dungeon.hero && !enemy.isAlive()) { + Dungeon.fail( getClass() ); + GLog.n( Messages.get(this, "frost_kill") ); + } + } else { + enemy.sprite.showStatus( CharSprite.NEUTRAL, enemy.defenseVerb() ); + } + } + + public void onZapComplete() { + zap(); + next(); + } + + @Override + public void call() { + next(); + } + + @Override + public Item createLoot(){ + + // 1/6 chance for healing, scaling to 0 over 8 drops + if (Random.Int(2) == 0 && Random.Int(8) > Dungeon.LimitedDrops.WARLOCK_HP.count ){ + Dungeon.LimitedDrops.WARLOCK_HP.drop(); + return new PotionOfHealing(); + } else { + Item i = Generator.random(Generator.Category.POTION); + int healingTried = 0; + while (i instanceof PotionOfHealing){ + healingTried++; + i = Generator.random(Generator.Category.POTION); + } + + //return the attempted healing potion drops to the pool + if (healingTried > 0){ + for (int j = 0; j < Generator.Category.POTION.classes.length; j++){ + if (Generator.Category.POTION.classes[j] == PotionOfHealing.class){ + Generator.Category.POTION.probs[j] += healingTried; + } + } + } + + return i; + } + + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/MusicImplantSPD.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/MusicImplantSPD.java new file mode 100644 index 000000000..dc148ee69 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/MusicImplantSPD.java @@ -0,0 +1,87 @@ +package com.shatteredpixel.shatteredpixeldungeon.scenes; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.SPDAction; +import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; +import com.watabou.noosa.Game; +import com.watabou.noosa.audio.Music; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.PlatformSupport; + +/* +https://github.com/CatAzreal/Jinkeloid-MISPD/ + */ +public class MusicImplantSPD extends Game { + + //variable constants for specific older versions of shattered, used for data conversion + //versions older than v0.7.5e are no longer supported, and data from them is ignored + + public MusicImplantSPD(PlatformSupport platform ) { + super( sceneClass == null ? TitleScene.class : sceneClass, platform ); + } + + @Override + public void create() { + super.create(); + + updateSystemUI(); + SPDAction.loadBindings(); + + Music.INSTANCE.enable( SPDSettings.music() ); + Music.INSTANCE.volume( SPDSettings.musicVol()* SPDSettings.musicVol()/100f ); + Sample.INSTANCE.enable( SPDSettings.soundFx() ); + Sample.INSTANCE.volume( SPDSettings.SFXVol()* SPDSettings.SFXVol()/100f ); + + Sample.INSTANCE.load( Assets.Sounds.all ); + + } + + public static void switchNoFade(Class c){ + switchNoFade(c, null); + } + + public static void switchNoFade(Class c, SceneChangeCallback callback) { + PixelScene.noFade = true; + switchScene( c, callback ); + } + + @Override + protected void switchScene() { + super.switchScene(); + if (scene instanceof PixelScene){ + ((PixelScene) scene).restoreWindows(); + } + } + + @Override + public void resize( int width, int height ) { + if (width == 0 || height == 0){ + return; + } + + if (scene instanceof PixelScene && + (height != Game.height || width != Game.width)) { + PixelScene.noFade = true; + ((PixelScene) scene).saveWindows(); + } + + super.resize( width, height ); + + updateDisplaySize(); + + } + + @Override + public void destroy(){ + super.destroy(); + GameScene.endActorThread(); + } + + public void updateDisplaySize(){ + platform.updateDisplaySize(); + } + + public static void updateSystemUI() { + platform.updateSystemUI(); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java index 6cc4522ec..449fc46eb 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/NewsScene.java @@ -42,7 +42,6 @@ import com.watabou.noosa.Camera; import com.watabou.noosa.Game; import com.watabou.noosa.NinePatch; import com.watabou.noosa.ui.Component; -import com.watabou.utils.DeviceCompat; import java.util.ArrayList; import java.util.Calendar; @@ -280,7 +279,7 @@ public class NewsScene extends PixelScene { date.scale.set(PixelScene.align(0.5f)); date.hardlight( 0x888888 ); date.measure(); - add(date); + //add(date); } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java index 32e48b577..e70ad411a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/StartScene.java @@ -29,16 +29,17 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroSubClass; import com.shatteredpixel.shatteredpixeldungeon.journal.Journal; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.ui.Archs; +import com.shatteredpixel.shatteredpixeldungeon.ui.Button; import com.shatteredpixel.shatteredpixeldungeon.ui.ExitButton; import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.shatteredpixel.shatteredpixeldungeon.windows.WndGameInProgress; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndStartGame; import com.watabou.noosa.BitmapText; import com.watabou.noosa.Camera; import com.watabou.noosa.Image; import com.watabou.noosa.NinePatch; -import com.shatteredpixel.shatteredpixeldungeon.ui.Button; import java.util.ArrayList; @@ -255,11 +256,10 @@ public class StartScene extends PixelScene { } @Override + //old select scene like good,I don't like new select scene. protected void onClick() { if (newGame) { - GamesInProgress.selectedClass = null; - GamesInProgress.curSlot = slot; - ShatteredPixelDungeon.switchScene(HeroSelectScene.class); + ShatteredPixelDungeon.scene().add( new WndStartGame(slot)); } else { ShatteredPixelDungeon.scene().add( new WndGameInProgress(slot)); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ThanksScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ThanksScene.java new file mode 100644 index 000000000..16ac066ca --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ThanksScene.java @@ -0,0 +1,398 @@ +package com.shatteredpixel.shatteredpixeldungeon.scenes; + +import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.SHPX_COLOR; +import static com.shatteredpixel.shatteredpixeldungeon.ui.Window.WATA_COLOR; + +import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon; +import com.shatteredpixel.shatteredpixeldungeon.effects.Flare; +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.sprites.RedDragonSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.RenSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.TianscarSprite; +import com.shatteredpixel.shatteredpixeldungeon.ui.Archs; +import com.shatteredpixel.shatteredpixeldungeon.ui.ExitButton; +import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; +import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock; +import com.shatteredpixel.shatteredpixeldungeon.ui.ScrollPane; +import com.shatteredpixel.shatteredpixeldungeon.ui.Window; +import com.watabou.input.PointerEvent; +import com.watabou.noosa.Camera; +import com.watabou.noosa.ColorBlock; +import com.watabou.noosa.Game; +import com.watabou.noosa.Group; +import com.watabou.noosa.Image; +import com.watabou.noosa.PointerArea; +import com.watabou.noosa.ui.Component; + +public class ThanksScene extends PixelScene { + + private static final float SCROLL_SPEED = 30f; + public static ScrollPane list; + private float shift = -30; + + @Override + public void create() { + super.create(); + + final float colWidth = 120; + final float fullWidth = colWidth * (landscape() ? 2 : 1); + + int w = Camera.main.width; + int h = Camera.main.height; + + list = new ScrollPane( new Component() ); + add( list ); + + Component content = list.content(); + content.clear(); + + CreditsBlock mispd = new CreditsBlock(true, Window.TITLE_COLOR, + "Magic Ling Pixel Dungeon", + Icons.STAIRS.get(), + "_Start to 2021-2-12_\n\nDev:_JDSA Ling_" + , + null, + null); + mispd.setRect((w - fullWidth)/2f, 120, 120, 0); + content.add(mispd); + + //*** Musics Used *** + + CreditsBlock musicUsed = new CreditsBlock(true, Window.TITLE_COLOR, + "Thanks:\n", + null, + Messages.get(ThanksScene.class,"code")+ Messages.get(ThanksScene.class,"test")+Messages.get(ThanksScene.class,"music")+Messages.get(ThanksScene.class,"art")+ Messages.get(ThanksScene.class,"ad") + , + null, + null); + musicUsed.setRect((w - fullWidth)/2f, mispd.bottom()+6, 120, 0); + content.add(musicUsed); + + CreditsBlock ptr = new CreditsBlock(true, 0x39aae5, + "ThanksScene Base on MISPD", + new Image("mispd.png", 0, 0, 32, 39), + "Developed by: _Jinkeloid_", + null, + null); + ptr.setRect((w - fullWidth)/2f, musicUsed.bottom()+6, 120, 0); + content.add(ptr); + //*** Special Thanks *** + + CreditsBlock specialThanks = new CreditsBlock(true, 0xffffff, + "Original Music By Prohonor", + new Image("ptr.png", 0, 0, 32, 32), + null, + null, + null); + specialThanks.setRect((w - fullWidth)/2f, ptr.bottom()+6, 120, 0); + content.add(specialThanks); + + CreditsBlock specialThanksB = new CreditsBlock(true, 0xbe8e6e, + "Part Music Used Terraria", + new Image("tra.png", 0, 0, 17, 28), + null, + null, + null); + specialThanksB.setRect((w - fullWidth)/2f, specialThanks.bottom()+6, 120, 0); + content.add(specialThanksB); + + //*** Shattered Pixel Dungeon Credits *** + + CreditsBlock shpx = new CreditsBlock(true, SHPX_COLOR, + "All Special Thanks\n\n Shattered Pixel Dungeon", + Icons.SHPX.get(), + "Developed by: _Evan Debenham_\nBased on Pixel Dungeon's open source", + null, + null); + shpx.setRect((w - fullWidth)/2f, specialThanksB.bottom()+6, 120, 0); + content.add(shpx); + + addLine(shpx.top() - 4, content); + + //*** Freesound Credits *** + + CreditsBlock freesound = new CreditsBlock(true, + WATA_COLOR, + "Pixel Dungeon", + Icons.WATA.get(), + "Developed by: _Watabou_\nInspired by Brian Walker's Brogue", + null, + null); + freesound.setRect((Camera.main.width - colWidth)/2f-10, shpx.bottom() + 8, colWidth+20, 0); + content.add(freesound); + + CreditsBlock exp = new CreditsBlock(true, + 0x00ccccc, + "TrashBox Bodylev", + Icons.TALENT.get(), + "Main Dev:Experienced Pixel Dungeon", + null, + null); + exp.setRect((Camera.main.width - colWidth)/2f-10, freesound.bottom() + 8, colWidth+20, 0); + content.add(exp); + + CreditsBlock ren = new CreditsBlock(true, + 0xff00ff, + "莲仁-REN", + new RenSprite(), + "Main Dev:Night Pro 2 Pixel Dungeon\nWhisky Pixel Dungeon", + null, + null); + ren.setRect((Camera.main.width - colWidth)/2f-10, exp.bottom() + 8, colWidth+20, 0); + content.add(ren); + + CreditsBlock reddragon = new CreditsBlock(true, + 0xFF6600, + "Alexstrasza", + new RedDragonSprite(), + "Main Dev:ShatteredPD-DetailedDesc", + null, + null); + reddragon.setRect((Camera.main.width - colWidth)/2f-10, ren.bottom() + 8, colWidth+20, 0); + content.add(reddragon); + + CreditsBlock evan = new CreditsBlock(true, 0xBBBBBB, + "Tianscar", + new TianscarSprite(), + "Main Dev:Carbonized Pixel Dungeon", + "加入碳化总群", + "https://jq.qq.com/?_wv=1027&k=6jAlnlNL"); + if (landscape()){ + evan.setRect(shpx.left(), reddragon.bottom() + 8, colWidth, 0); + } else { + evan.setRect(shpx.left(), reddragon.bottom() + 8, colWidth, 0); + } + content.add(evan); + + //*** Pixel Dungeon Credits *** + CreditsBlock wata = new CreditsBlock(true, + Window.RED_COLOR, + "SmuJB", + new Image("smujb.png", 0, 0, 16, 16), + "Main Dev:Cursed Pixel Dungeon\nHard Sproted Pixel Dungeon\nPoweredPD Pixel Dungeon", + null, + null); + if (landscape()){ + wata.setRect(shpx.left(), evan.bottom() + 8, colWidth, 0); + } else { + wata.setRect(shpx.left(), evan.bottom() + 8, colWidth, 0); + } + content.add(wata); + + CreditsBlock wata2 = new CreditsBlock(true, + Window.TITLE_COLOR, + "Thanks Playing My Dungeon", + Icons.TALENT.get(), + "All the Players wishing you all the best every day!!!\n\n", + "加入QQ魔绫开发总群", + "https://jq.qq.com/?_wv=1027&k=wzMjU0f7"); + if (landscape()){ + wata2.setRect(shpx.left(), wata.bottom() + 20, colWidth, 0); + } else { + wata2.setRect(shpx.left(), wata.bottom() + 20, colWidth, 0); + } + content.add(wata2); + + addLine(wata2.top() - 4, content); + + CreditsBlock wata3 = new CreditsBlock(true, + Window.TITLE_COLOR, + null, + null, + "Join the Pixel Dungeon Server", + "Pixel Dungeon Discord Server", + "https://discord.gg/47bguQtcwZ"); + if (landscape()){ + wata3.setRect(shpx.left(), wata2.bottom() + 18, colWidth, 0); + } else { + wata3.setRect(shpx.left(), wata2.bottom() + 18, colWidth, 0); + } + content.add(wata3); + + //*** Some Words *** + content.add(wata); + + content.setSize( fullWidth, wata.bottom() + 10 ); + + list.setRect( 0, 0, w, wata.bottom() - h/2f ); + list.scrollTo(0, 0); + + Archs archs = new Archs(); + archs.setSize( Camera.main.width, Camera.main.height ); + addToBack( archs ); + + ExitButton btnExit = new ExitButton(); + btnExit.setPos( Camera.main.width - btnExit.width(), 0 ); + add( btnExit ); + + fadeIn(); + } + + @Override + public void update() { + super.update(); + ScrollPane list = ThanksScene.list; + list.disableThumb(); + shift += Game.elapsed * SCROLL_SPEED; + list.scrollTo(0, Math.min(Math.max(shift, 0), list.height())); +// throw new RuntimeException("custom exception"); + } + + @Override + protected void onBackPressed() { + MusicImplantSPD.switchScene(TitleScene.class, new Game.SceneChangeCallback() { + @Override + public void beforeCreate() { + shift = -40; + } + + @Override + public void afterCreate() { + } + }); + } + + private void addLine( float y, Group content ){ + ColorBlock line = new ColorBlock(Camera.main.width, 1, 0xFF333333); + line.y = y; + content.add(line); + } + + private static class CreditsBlock extends Component { + + boolean large; + RenderedTextBlock title; + Image avatar; + Flare flare; + RenderedTextBlock body; + + RenderedTextBlock link; + ColorBlock linkUnderline; + PointerArea linkButton; + + //many elements can be null, but body is assumed to have content. + private CreditsBlock(boolean large, int highlight, String title, Image avatar, String body, String linkText, String linkUrl){ + super(); + + this.large = large; + + if (title != null) { + this.title = PixelScene.renderTextBlock(title, large ? 8 : 6); + if (highlight != -1) this.title.hardlight(highlight); + add(this.title); + } + + if (avatar != null){ + this.avatar = avatar; + add(this.avatar); + } + + if (large && highlight != -1 && this.avatar != null){ + this.flare = new Flare( 7, 24 ).color( highlight, true ).show(this.avatar, 0); + this.flare.angularSpeed = 20; + } + + this.body = PixelScene.renderTextBlock(body, 6); + if (highlight != -1) this.body.setHightlighting(true, highlight); + if (large) this.body.align(RenderedTextBlock.CENTER_ALIGN); + add(this.body); + + if (linkText != null && linkUrl != null){ + + int color = 0xFFFFFFFF; + if (highlight != -1) color = 0xFF000000 | highlight; + this.linkUnderline = new ColorBlock(1, 1, color); + add(this.linkUnderline); + + this.link = PixelScene.renderTextBlock(linkText, 6); + if (highlight != -1) this.link.hardlight(highlight); + add(this.link); + + linkButton = new PointerArea(0, 0, 0, 0){ + @Override + protected void onClick( PointerEvent event ) { + ShatteredPixelDungeon.platform.openURI( linkUrl ); + } + }; + add(linkButton); + } + + } + + @Override + protected void layout() { + super.layout(); + + float topY = top(); + + if (title != null){ + title.maxWidth((int)width()); + title.setPos( x + (width() - title.width())/2f, topY); + topY += title.height() + (large ? 2 : 1); + } + + if (large){ + + if (avatar != null){ + avatar.x = x + (width()-avatar.width())/2f; + avatar.y = topY; + PixelScene.align(avatar); + if (flare != null){ + flare.point(avatar.center()); + } + topY = avatar.y + avatar.height() + 2; + } + + body.maxWidth((int)width()); + body.setPos( x + (width() - body.width())/2f, topY); + topY += body.height() + 2; + + } else { + + if (avatar != null){ + avatar.x = x; + body.maxWidth((int)(width() - avatar.width - 1)); + + if (avatar.height() > body.height()){ + avatar.y = topY; + body.setPos( avatar.x + avatar.width() + 1, topY + (avatar.height() - body.height())/2f); + topY += avatar.height() + 1; + } else { + avatar.y = topY + (body.height() - avatar.height())/2f; + PixelScene.align(avatar); + body.setPos( avatar.x + avatar.width() + 1, topY); + topY += body.height() + 2; + } + + } else { + topY += 1; + body.maxWidth((int)width()); + body.setPos( x, topY); + topY += body.height()+2; + } + + } + + if (link != null){ + if (large) topY += 1; + link.maxWidth((int)width()); + link.setPos( x + (width() - link.width())/2f, topY); + topY += link.height() + 2; + + linkButton.x = link.left()-1; + linkButton.y = link.top()-1; + linkButton.width = link.width()+2; + linkButton.height = link.height()+2; + + linkUnderline.size(link.width(), PixelScene.align(0.49f)); + linkUnderline.x = link.left(); + linkUnderline.y = link.bottom()+1; + + } + + topY -= 2; + + height = Math.max(height, topY - top()); + } + } +} \ No newline at end of file diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java index fafb404e9..9234cb182 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/TitleScene.java @@ -415,7 +415,7 @@ public class TitleScene extends PixelScene { @Override protected void onClick() { - ShatteredPixelDungeon.switchNoFade(SupporterScene.class); + ShatteredPixelDungeon.switchNoFade(ThanksScene.class); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/FireGhostDeadSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/FireGhostDeadSprite.java new file mode 100644 index 000000000..5f5d92839 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/FireGhostDeadSprite.java @@ -0,0 +1,55 @@ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by Fernflower decompiler) +// + +package com.shatteredpixel.shatteredpixeldungeon.sprites; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.FireGhostDead; +import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; +import com.watabou.noosa.TextureFilm; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Callback; + +public class FireGhostDeadSprite extends MobSprite { + public FireGhostDeadSprite() { + this.texture("sprites/wengi.png"); + TextureFilm var1 = new TextureFilm(this.texture, 14, 15); + Integer var2 = 1; + this.idle = new Animation(5, true); + Animation var3 = this.idle; + Integer var4 = 0; + var3.frames(var1, new Object[]{var4, var2}); + this.run = new Animation(10, true); + this.run.frames(var1, new Object[]{var4, var2}); + this.attack = new Animation(10, false); + this.attack.frames(var1, new Object[]{var4, 2, 3}); + this.die = new Animation(8, false); + this.die.frames(var1, new Object[]{var4, 4, 5, 6, 7}); + this.play(this.idle); + } + + public int blood() { + return -33517; + } + + public void zap( int cell ) { + + turnTo( ch.pos , cell ); + play( zap ); + + MagicMissile.boltFromChar( parent, + MagicMissile.FIRE, + this, + cell, + new Callback() { + @Override + public void call() { + ((FireGhostDead)ch).onZapComplete(); + } + } ); + Sample.INSTANCE.play( Assets.Sounds.ZAP ); + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/RedDragonSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/RedDragonSprite.java new file mode 100644 index 000000000..118ba776f --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/RedDragonSprite.java @@ -0,0 +1,85 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2021 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.sprites; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.Char; +import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.FireGhostDead; +import com.shatteredpixel.shatteredpixeldungeon.effects.MagicMissile; +import com.watabou.noosa.MovieClip; +import com.watabou.noosa.TextureFilm; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Callback; + +//Red Dragon +public class RedDragonSprite extends MobSprite { + + public RedDragonSprite() { + super(); + + texture( Assets.Sprites.REDDRAGONPET ); + + TextureFilm frames = new TextureFilm( texture, 16, 16 ); + + idle = new MovieClip.Animation( 3, true ); + idle.frames( frames, 0, 1, 2, 3,4,5 ); + + run = new MovieClip.Animation( 7, true ); + run.frames( frames, 6,7,10,11 ); + + attack = new MovieClip.Animation( 12, false ); + attack.frames( frames, 8,9 ); + + die = new MovieClip.Animation( 12, false ); + die.frames( frames, 12,13,14 ); + + play( idle ); + } + + public void zap( int cell ) { + + turnTo( ch.pos , cell ); + play( zap ); + + MagicMissile.boltFromChar( parent, + MagicMissile.FIRE, + this, + cell, + new Callback() { + @Override + public void call() { + ((FireGhostDead)ch).onZapComplete(); + } + } ); + Sample.INSTANCE.play( Assets.Sounds.ZAP ); + } + + @Override + public int blood() { + return 0xFFFFEA80; + } + + public void link(Char var1) { + super.link(var1); + this.add(State.SHIELDED); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/RenSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/RenSprite.java new file mode 100644 index 000000000..f3e6decc3 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/RenSprite.java @@ -0,0 +1,18 @@ +package com.shatteredpixel.shatteredpixeldungeon.sprites; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.watabou.noosa.TextureFilm; + +public class RenSprite extends MobSprite { + public RenSprite() { + texture( Assets.Sprites.REN ); + TextureFilm var1 = new TextureFilm(this.texture, 12, 14); + this.idle = new Animation(2, true); + this.idle.frames(var1, new Object[]{0, 1, 2, 3}); + this.run = new Animation(10, true); + this.run.frames(var1, new Object[]{0}); + this.die = new Animation(10, false); + this.die.frames(var1, new Object[]{0}); + this.play(this.idle); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/TianscarSprite.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/TianscarSprite.java new file mode 100644 index 000000000..805c6d4c7 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/TianscarSprite.java @@ -0,0 +1,29 @@ +package com.shatteredpixel.shatteredpixeldungeon.sprites; + +import com.watabou.noosa.TextureFilm; + +public class TianscarSprite extends MobSprite { + + public TianscarSprite() { + super(); + + texture("Tianscar.png"); + + TextureFilm frames = new TextureFilm( texture, 16, 16 ); + + idle = new Animation( 2, true ); + idle.frames( frames, 1, 1, 1 ); + + run = new Animation( 10, true ); + run.frames( frames, 6, 7, 8, 9, 10,11 ); + + attack = new Animation( 15, false ); + attack.frames( frames, 2, 3, 4, 5, 0 ); + + die = new Animation( 10, false ); + die.frames( frames, 11, 12, 13, 14 ); + + play( idle ); + } +} + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/ScrollPane.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/ScrollPane.java index 8b2f2be2b..2947990ee 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/ScrollPane.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/ScrollPane.java @@ -36,6 +36,12 @@ public class ScrollPane extends Component { protected static final int THUMB_COLOR = 0xFF7b8073; protected static final float THUMB_ALPHA = 0.5f; + //Seems everyone's happy about the thumb bar just being there? + //Oh,That insteresting! Ling + public void disableThumb(){ + thumb.visible = false; + } + protected PointerController controller; protected Component content; protected ColorBlock thumb; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java index 79f928e72..2d3b33f6a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndStartGame.java @@ -3,7 +3,7 @@ * Copyright (C) 2012-2015 Oleg Dolya * * Shattered Pixel Dungeon - * Copyright (C) 2014-2022 Evan Debenham + * Copyright (C) 2014-2021 Evan Debenham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -45,28 +45,27 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.Window; import com.watabou.noosa.ColorBlock; import com.watabou.noosa.Game; import com.watabou.noosa.Image; -import com.shatteredpixel.shatteredpixeldungeon.ui.Button; import com.watabou.noosa.ui.Component; import com.watabou.utils.DeviceCompat; public class WndStartGame extends Window { - + private static final int WIDTH = 120; - private static final int HEIGHT = 140; + private static final int HEIGHT = 160; public WndStartGame(final int slot){ - + Badges.loadGlobal(); Journal.loadGlobal(); - + RenderedTextBlock title = PixelScene.renderTextBlock(Messages.get(this, "title"), 12 ); title.hardlight(Window.TITLE_COLOR); title.setPos( (WIDTH - title.width())/2f, 3); PixelScene.align(title); add(title); - - float heroBtnSpacing = (WIDTH - 4*HeroBtn.WIDTH)/5f; - + + float heroBtnSpacing = (WIDTH - 5*HeroBtn.WIDTH)/5f; + float curX = heroBtnSpacing; for (HeroClass cl : HeroClass.values()){ HeroBtn button = new HeroBtn(cl); @@ -74,29 +73,29 @@ public class WndStartGame extends Window { curX += HeroBtn.WIDTH + heroBtnSpacing; add(button); } - + ColorBlock separator = new ColorBlock(1, 1, 0xFF222222); separator.size(WIDTH, 1); separator.x = 0; separator.y = title.bottom() + 6 + HeroBtn.HEIGHT; add(separator); - + HeroPane ava = new HeroPane(); ava.setRect(20, separator.y + 2, WIDTH-30, 80); add(ava); - + RedButton start = new RedButton(Messages.get(this, "start")){ @Override protected void onClick() { if (GamesInProgress.selectedClass == null) return; - + super.onClick(); - + GamesInProgress.curSlot = slot; Dungeon.hero = null; ActionIndicator.action = null; InterlevelScene.mode = InterlevelScene.Mode.DESCEND; - + if (SPDSettings.intro()) { SPDSettings.intro( false ); Game.switchScene( IntroScene.class ); @@ -104,7 +103,7 @@ public class WndStartGame extends Window { Game.switchScene( InterlevelScene.class ); } } - + @Override public void update() { if( !visible && GamesInProgress.selectedClass != null){ @@ -116,8 +115,8 @@ public class WndStartGame extends Window { start.visible = false; start.setRect(0, HEIGHT - 20, WIDTH, 20); add(start); - - if (DeviceCompat.isDebug() || Badges.isUnlocked(Badges.Badge.VICTORY)){ + + if (DeviceCompat.isDebug() || Badges.isUnlocked(Badges.Badge.BOSS_SLAIN_1)){ IconButton challengeButton = new IconButton( Icons.get( SPDSettings.challenges() > 0 ? Icons.CHALLENGE_ON :Icons.CHALLENGE_OFF)){ @Override @@ -132,7 +131,7 @@ public class WndStartGame extends Window { } } ); } - + @Override public void update() { if( !visible && GamesInProgress.selectedClass != null){ @@ -144,34 +143,34 @@ public class WndStartGame extends Window { challengeButton.setRect(WIDTH - 20, HEIGHT - 20, 20, 20); challengeButton.visible = false; add(challengeButton); - + } else { Dungeon.challenges = 0; SPDSettings.challenges(0); } - + resize(WIDTH, HEIGHT); - + } - - private static class HeroBtn extends Button { - + + private static class HeroBtn extends IconButton { + private HeroClass cl; - + private Image hero; - + private static final int WIDTH = 24; private static final int HEIGHT = 16; - + HeroBtn ( HeroClass cl ){ super(); - + this.cl = cl; add(hero = new Image(cl.spritesheet(), 0, 90, 12, 15)); - + } - + @Override protected void layout() { super.layout(); @@ -181,7 +180,7 @@ public class WndStartGame extends Window { PixelScene.align(hero); } } - + @Override public void update() { super.update(); @@ -195,11 +194,11 @@ public class WndStartGame extends Window { hero.brightness(1f); } } - + @Override protected void onClick() { super.onClick(); - + if( !cl.isUnlocked() ){ ShatteredPixelDungeon.scene().addToFront( new WndMessage(cl.unlockMsg())); } else { @@ -207,30 +206,31 @@ public class WndStartGame extends Window { } } } - + private class HeroPane extends Component { - + private HeroClass cl; - + private Image avatar; - + private IconButton heroItem; private IconButton heroLoadout; private IconButton heroMisc; private IconButton heroSubclass; - + private IconButton Telnetsc; + private RenderedTextBlock name; - + private static final int BTN_SIZE = 20; - + @Override protected void createChildren() { super.createChildren(); - + avatar = new Image(Assets.Sprites.AVATARS); avatar.scale.set(2f); add(avatar); - + heroItem = new IconButton(){ @Override protected void onClick() { @@ -240,7 +240,7 @@ public class WndStartGame extends Window { }; heroItem.setSize(BTN_SIZE, BTN_SIZE); add(heroItem); - + heroLoadout = new IconButton(){ @Override protected void onClick() { @@ -250,7 +250,7 @@ public class WndStartGame extends Window { }; heroLoadout.setSize(BTN_SIZE, BTN_SIZE); add(heroLoadout); - + heroMisc = new IconButton(){ @Override protected void onClick() { @@ -260,47 +260,58 @@ public class WndStartGame extends Window { }; heroMisc.setSize(BTN_SIZE, BTN_SIZE); add(heroMisc); - + heroSubclass = new IconButton(new ItemSprite(ItemSpriteSheet.MASTERY, null)){ @Override protected void onClick() { if (cl == null) return; String msg = Messages.get(cl, cl.name() + "_desc_subclasses"); for (HeroSubClass sub : cl.subClasses()){ - msg += "\n\n" + sub.shortDesc(); + msg += "\n\n" + sub.desc(); } ShatteredPixelDungeon.scene().addToFront(new WndMessage(msg)); } }; heroSubclass.setSize(BTN_SIZE, BTN_SIZE); add(heroSubclass); - + + Telnetsc = new IconButton(new ItemSprite(ItemSpriteSheet.ARTIFACT_SPELLBOOK, null)){ + @Override + protected void onClick() { + if (cl == null) return; + ShatteredPixelDungeon.scene().addToFront(new WndMessage(Messages.get(cl, cl.name() + "_story"))); + } + }; + Telnetsc.setSize(BTN_SIZE, BTN_SIZE); + add(Telnetsc); + name = PixelScene.renderTextBlock(12); add(name); - + visible = false; } - + @Override protected void layout() { super.layout(); - + avatar.x = x; avatar.y = y + (height - avatar.height() - name.height() - 4)/2f; PixelScene.align(avatar); - + name.setPos( x + (avatar.width() - name.width())/2f, avatar.y + avatar.height() + 3 ); PixelScene.align(name); - + heroItem.setPos(x + width - BTN_SIZE, y); heroLoadout.setPos(x + width - BTN_SIZE, heroItem.bottom()); heroMisc.setPos(x + width - BTN_SIZE, heroLoadout.bottom()); heroSubclass.setPos(x + width - BTN_SIZE, heroMisc.bottom()); + Telnetsc.setPos(x + width - BTN_SIZE, heroSubclass.bottom()); } - + @Override public synchronized void update() { super.update(); @@ -308,9 +319,9 @@ public class WndStartGame extends Window { cl = GamesInProgress.selectedClass; if (cl != null) { avatar.frame(cl.ordinal() * 24, 0, 24, 32); - + name.text(Messages.capitalize(cl.title())); - + switch(cl){ case WARRIOR: heroItem.icon(new ItemSprite(ItemSpriteSheet.SEAL, null)); @@ -325,7 +336,7 @@ public class WndStartGame extends Window { case ROGUE: heroItem.icon(new ItemSprite(ItemSpriteSheet.ARTIFACT_CLOAK, null)); heroLoadout.icon(new ItemSprite(ItemSpriteSheet.DAGGER, null)); - heroMisc.icon(Icons.get(Icons.STAIRS)); + heroMisc.icon(Icons.get(Icons.DEPTH)); break; case HUNTRESS: heroItem.icon(new ItemSprite(ItemSpriteSheet.SPIRIT_BOW, null)); @@ -333,9 +344,9 @@ public class WndStartGame extends Window { heroMisc.icon(new Image(Assets.Environment.TILES_SEWERS, 112, 96, 16, 16 )); break; } - + layout(); - + visible = true; } else { visible = false; diff --git a/services/news/shatteredNews/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/news/ShatteredNews.java b/services/news/shatteredNews/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/news/ShatteredNews.java index 49f19e10b..ab6c403d7 100644 --- a/services/news/shatteredNews/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/news/ShatteredNews.java +++ b/services/news/shatteredNews/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/news/ShatteredNews.java @@ -48,7 +48,7 @@ public class ShatteredNews extends NewsService { if (preferHTTPS) { httpGet.setUrl("https://lingasdj.github.io/MagicLingPixelDungeon_Sing/xml/news.xml"); } else { - httpGet.setUrl("http://lingasdj.github.io/MagicLingPixelDungeon_Sing/xml/news.xml"); + httpGet.setUrl("https://lingasdj.github.io/MagicLingPixelDungeon_Sing/xml/news.xml"); } Gdx.net.sendHttpRequest(httpGet, new Net.HttpResponseListener() { diff --git a/services/updates/debugUpdates/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/updates/DebugUpdates.java b/services/updates/debugUpdates/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/updates/DebugUpdates.java index c49ca2167..bcefa9729 100644 --- a/services/updates/debugUpdates/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/updates/DebugUpdates.java +++ b/services/updates/debugUpdates/src/main/java/com/shatteredpixel/shatteredpixeldungeon/services/updates/DebugUpdates.java @@ -23,7 +23,6 @@ package com.shatteredpixel.shatteredpixeldungeon.services.updates; import com.watabou.noosa.Game; -import com.watabou.utils.DeviceCompat; public class DebugUpdates extends UpdateService { @@ -31,7 +30,7 @@ public class DebugUpdates extends UpdateService { @Override public boolean isUpdateable() { - return false; //turn on to debug update prompts + return true; //turn on to debug update prompts } @Override @@ -49,10 +48,12 @@ public class DebugUpdates extends UpdateService { debugUpdateInfo = new AvailableUpdateData(); debugUpdateInfo.versionCode = Game.versionCode+1; - debugUpdateInfo.URL = "http://www.google.com"; + debugUpdateInfo.URL = "https://github.com/LingASDJ/MagicLing-Pixel-Dungeon/releases"; callback.onUpdateAvailable(debugUpdateInfo); + + } @Override @@ -83,6 +84,6 @@ public class DebugUpdates extends UpdateService { @Override public void openReviewURI() { - Game.platform.openURI("https://www.google.com/"); + //Game.platform.openURI("https://www.google.com/"); } }