v3.0.1: removed code for pre-v2.2.0 blacksmith quest
This commit is contained in:
@@ -1330,13 +1330,6 @@ actors.mobs.npcs.blacksmith.cant_enter_old=That area is not accessible on this r
|
|||||||
actors.mobs.npcs.blacksmith.def_verb=blocked
|
actors.mobs.npcs.blacksmith.def_verb=blocked
|
||||||
actors.mobs.npcs.blacksmith.desc=This troll blacksmith looks like all trolls look: he is tall and lean, and his skin resembles stone in both color and texture. The troll blacksmith is tinkering with disproportionally small tools.
|
actors.mobs.npcs.blacksmith.desc=This troll blacksmith looks like all trolls look: he is tall and lean, and his skin resembles stone in both color and texture. The troll blacksmith is tinkering with disproportionally small tools.
|
||||||
|
|
||||||
##old blacksmith quest dialogue from pre-v2.2.0
|
|
||||||
actors.mobs.npcs.blacksmith.gold_1=Hey human! Wanna be useful, eh? Take dis pickaxe and mine me some _dark gold ore, 15 pieces_ should be enough. What do you mean, how am I gonna pay? You greedy...\nOk, ok, I don't have money to pay, but I can do some smithin' for you. Consider yourself lucky, I'm the only blacksmith around.
|
|
||||||
actors.mobs.npcs.blacksmith.blood_1=Hey human! Wanna be useful, eh? Take dis pickaxe and _kill a bat_ wit' it, I need its blood on the head. What do you mean, how am I gonna pay? You greedy...\nOk, ok, I don't have money to pay, but I can do some smithin' for you. Consider yourself lucky, I'm the only blacksmith around.
|
|
||||||
actors.mobs.npcs.blacksmith.gold_2=Dark gold ore. 15 pieces. Seriously, is it dat hard?
|
|
||||||
actors.mobs.npcs.blacksmith.blood_2=I said I need bat blood on the pickaxe. Chop chop!
|
|
||||||
actors.mobs.npcs.blacksmith.completed=Oh, you have returned... Better late dan never.
|
|
||||||
|
|
||||||
actors.mobs.npcs.ghost.name=sad ghost
|
actors.mobs.npcs.ghost.name=sad ghost
|
||||||
actors.mobs.npcs.ghost.rat_1=Hello %s... Once I was like you - strong and confident... But I was slain by a foul beast... I can't leave this place... Not until I have my revenge... Slay the _fetid rat,_ that has taken my life...\n\nIt stalks this floor... Spreading filth everywhere... _Beware its cloud of stink and corrosive bite, the acid dissolves in water..._
|
actors.mobs.npcs.ghost.rat_1=Hello %s... Once I was like you - strong and confident... But I was slain by a foul beast... I can't leave this place... Not until I have my revenge... Slay the _fetid rat,_ that has taken my life...\n\nIt stalks this floor... Spreading filth everywhere... _Beware its cloud of stink and corrosive bite, the acid dissolves in water..._
|
||||||
actors.mobs.npcs.ghost.rat_2=Please... Help me... Slay the abomination...\n\n_Fight it near water... Avoid the stench..._
|
actors.mobs.npcs.ghost.rat_2=Please... Help me... Slay the abomination...\n\n_Fight it near water... Avoid the stench..._
|
||||||
|
|||||||
@@ -885,8 +885,6 @@ items.quest.metalshard.name=cursed metal shard
|
|||||||
items.quest.metalshard.desc=A shard of rusted cursed metal, which broke off DM-300 as it was destroyed. You can feel an inactive malevolent magic within it.\n\nIt does nothing on its own, but it might be useful when combined with certain scrolls, or a bomb. At the very least it should convert into a decent amount of energy.
|
items.quest.metalshard.desc=A shard of rusted cursed metal, which broke off DM-300 as it was destroyed. You can feel an inactive malevolent magic within it.\n\nIt does nothing on its own, but it might be useful when combined with certain scrolls, or a bomb. At the very least it should convert into a decent amount of energy.
|
||||||
|
|
||||||
items.quest.pickaxe.name=pickaxe
|
items.quest.pickaxe.name=pickaxe
|
||||||
items.quest.pickaxe.ac_mine=MINE
|
|
||||||
items.quest.pickaxe.no_vein=There is no dark gold vein near you to mine.
|
|
||||||
items.quest.pickaxe.ability_name=pierce
|
items.quest.pickaxe.ability_name=pierce
|
||||||
items.quest.pickaxe.ability_desc=The Duelist can _pierce_ an enemy with a pickaxe. This is guaranteed to hit, applies vulnerable for 3 turns, and deals _%1$d-%2$d damage_ to enemies with rigid skin.
|
items.quest.pickaxe.ability_desc=The Duelist can _pierce_ an enemy with a pickaxe. This is guaranteed to hit, applies vulnerable for 3 turns, and deals _%1$d-%2$d damage_ to enemies with rigid skin.
|
||||||
items.quest.pickaxe.upgrade_ability_stat_name=Ability Damage
|
items.quest.pickaxe.upgrade_ability_stat_name=Ability Damage
|
||||||
|
|||||||
@@ -89,28 +89,21 @@ public class Blacksmith extends NPC {
|
|||||||
String msg1 = "";
|
String msg1 = "";
|
||||||
String msg2 = "";
|
String msg2 = "";
|
||||||
|
|
||||||
if (Quest.type == Quest.OLD){
|
switch (Dungeon.hero.heroClass){
|
||||||
//pre-v2.2.0 saves
|
case WARRIOR: msg1 += Messages.get(Blacksmith.this, "intro_quest_warrior"); break;
|
||||||
msg1 = Quest.alternative ? Messages.get(Blacksmith.this, "blood_1") : Messages.get(Blacksmith.this, "gold_1");
|
case MAGE: msg1 += Messages.get(Blacksmith.this, "intro_quest_mage"); break;
|
||||||
} else {
|
case ROGUE: msg1 += Messages.get(Blacksmith.this, "intro_quest_rogue"); break;
|
||||||
|
case HUNTRESS: msg1 += Messages.get(Blacksmith.this, "intro_quest_huntress"); break;
|
||||||
|
case DUELIST: msg1 += Messages.get(Blacksmith.this, "intro_quest_duelist"); break;
|
||||||
|
case CLERIC: msg1 += Messages.get(Blacksmith.this, "intro_quest_cleric"); break;
|
||||||
|
}
|
||||||
|
|
||||||
switch (Dungeon.hero.heroClass){
|
msg1 += "\n\n" + Messages.get(Blacksmith.this, "intro_quest_start");
|
||||||
case WARRIOR: msg1 += Messages.get(Blacksmith.this, "intro_quest_warrior"); break;
|
|
||||||
case MAGE: msg1 += Messages.get(Blacksmith.this, "intro_quest_mage"); break;
|
|
||||||
case ROGUE: msg1 += Messages.get(Blacksmith.this, "intro_quest_rogue"); break;
|
|
||||||
case HUNTRESS: msg1 += Messages.get(Blacksmith.this, "intro_quest_huntress"); break;
|
|
||||||
case DUELIST: msg1 += Messages.get(Blacksmith.this, "intro_quest_duelist"); break;
|
|
||||||
case CLERIC: msg1 += Messages.get(Blacksmith.this, "intro_quest_cleric"); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
msg1 += "\n\n" + Messages.get(Blacksmith.this, "intro_quest_start");
|
|
||||||
|
|
||||||
switch (Quest.type){
|
|
||||||
case Quest.CRYSTAL: msg2 += Messages.get(Blacksmith.this, "intro_quest_crystal"); break;
|
|
||||||
case Quest.GNOLL: msg2 += Messages.get(Blacksmith.this, "intro_quest_gnoll"); break;
|
|
||||||
case Quest.FUNGI: msg2 += Messages.get(Blacksmith.this, "intro_quest_fungi"); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
switch (Quest.type){
|
||||||
|
case Quest.CRYSTAL: msg2 += Messages.get(Blacksmith.this, "intro_quest_crystal"); break;
|
||||||
|
case Quest.GNOLL: msg2 += Messages.get(Blacksmith.this, "intro_quest_gnoll"); break;
|
||||||
|
case Quest.FUNGI: msg2 += Messages.get(Blacksmith.this, "intro_quest_fungi"); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
final String msg1Final = msg1;
|
final String msg1Final = msg1;
|
||||||
@@ -144,73 +137,13 @@ public class Blacksmith extends NPC {
|
|||||||
|
|
||||||
} else if (!Quest.completed) {
|
} else if (!Quest.completed) {
|
||||||
|
|
||||||
if (Quest.type == Quest.OLD) {
|
String msg = Messages.get(this, "reminder") + "\n\n";
|
||||||
if (Quest.alternative) {
|
switch (Quest.type){
|
||||||
|
case Quest.CRYSTAL: msg += Messages.get(Blacksmith.this, "reminder_crystal"); break;
|
||||||
Pickaxe pick = Dungeon.hero.belongings.getItem(Pickaxe.class);
|
case Quest.GNOLL: msg += Messages.get(Blacksmith.this, "reminder_gnoll"); break;
|
||||||
if (pick == null) {
|
case Quest.FUNGI: msg += Messages.get(Blacksmith.this, "reminder_fungi"); break;
|
||||||
tell(Messages.get(this, "lost_pick"));
|
|
||||||
} else if (!pick.bloodStained) {
|
|
||||||
tell(Messages.get(this, "blood_2"));
|
|
||||||
} else {
|
|
||||||
if (pick.isEquipped(Dungeon.hero)) {
|
|
||||||
boolean wasCursed = pick.cursed;
|
|
||||||
pick.cursed = false; //so that it can always be removed
|
|
||||||
pick.doUnequip(Dungeon.hero, false);
|
|
||||||
pick.cursed = wasCursed;
|
|
||||||
}
|
|
||||||
pick.detach(Dungeon.hero.belongings.backpack);
|
|
||||||
Quest.pickaxe = pick;
|
|
||||||
tell(Messages.get(this, "completed"));
|
|
||||||
|
|
||||||
Quest.completed = true;
|
|
||||||
Statistics.questScores[2] = 3000;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
Pickaxe pick = Dungeon.hero.belongings.getItem(Pickaxe.class);
|
|
||||||
DarkGold gold = Dungeon.hero.belongings.getItem(DarkGold.class);
|
|
||||||
if (pick == null) {
|
|
||||||
tell(Messages.get(this, "lost_pick"));
|
|
||||||
} else if (gold == null || gold.quantity() < 15) {
|
|
||||||
tell(Messages.get(this, "gold_2"));
|
|
||||||
} else {
|
|
||||||
if (pick.isEquipped(Dungeon.hero)) {
|
|
||||||
boolean wasCursed = pick.cursed;
|
|
||||||
pick.cursed = false; //so that it can always be removed
|
|
||||||
pick.doUnequip(Dungeon.hero, false);
|
|
||||||
pick.cursed = wasCursed;
|
|
||||||
}
|
|
||||||
pick.detach(Dungeon.hero.belongings.backpack);
|
|
||||||
Quest.pickaxe = pick;
|
|
||||||
gold.detachAll(Dungeon.hero.belongings.backpack);
|
|
||||||
tell(Messages.get(this, "completed"));
|
|
||||||
|
|
||||||
Quest.completed = true;
|
|
||||||
Statistics.questScores[2] = 3000;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
|
|
||||||
String msg = Messages.get(this, "reminder") + "\n\n";
|
|
||||||
switch (Quest.type){
|
|
||||||
case Quest.CRYSTAL: msg += Messages.get(Blacksmith.this, "reminder_crystal"); break;
|
|
||||||
case Quest.GNOLL: msg += Messages.get(Blacksmith.this, "reminder_gnoll"); break;
|
|
||||||
case Quest.FUNGI: msg += Messages.get(Blacksmith.this, "reminder_fungi"); break;
|
|
||||||
}
|
|
||||||
tell(msg);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
} else if (Quest.type == Quest.OLD && Quest.reforges == 0) {
|
tell(msg);
|
||||||
|
|
||||||
Game.runOnRenderThread(new Callback() {
|
|
||||||
@Override
|
|
||||||
public void call() {
|
|
||||||
GameScene.show( new WndBlacksmith.WndReforge( Blacksmith.this, null ) );
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
} else if (Quest.rewardsAvailable()) {
|
} else if (Quest.rewardsAvailable()) {
|
||||||
|
|
||||||
@@ -267,12 +200,9 @@ public class Blacksmith extends NPC {
|
|||||||
public static class Quest {
|
public static class Quest {
|
||||||
|
|
||||||
private static int type = 0;
|
private static int type = 0;
|
||||||
public static final int OLD = 0;
|
|
||||||
public static final int CRYSTAL = 1;
|
public static final int CRYSTAL = 1;
|
||||||
public static final int GNOLL = 2;
|
public static final int GNOLL = 2;
|
||||||
public static final int FUNGI = 3; //The fungi quest is not implemented, only exists partially in code
|
public static final int FUNGI = 3; //The fungi quest is not implemented, only exists partially in code
|
||||||
//pre-v2.2.0
|
|
||||||
private static boolean alternative; //false for mining gold, true for bat blood
|
|
||||||
|
|
||||||
//quest state information
|
//quest state information
|
||||||
private static boolean spawned;
|
private static boolean spawned;
|
||||||
@@ -284,7 +214,7 @@ public class Blacksmith extends NPC {
|
|||||||
//reward tracking. Stores remaining favor, the pickaxe, and how many of each reward has been chosen
|
//reward tracking. Stores remaining favor, the pickaxe, and how many of each reward has been chosen
|
||||||
public static int favor;
|
public static int favor;
|
||||||
public static Item pickaxe;
|
public static Item pickaxe;
|
||||||
public static int reforges; //also used by the pre-v2.2.0 version of the quest
|
public static int reforges;
|
||||||
public static int hardens;
|
public static int hardens;
|
||||||
public static int upgrades;
|
public static int upgrades;
|
||||||
public static int smiths;
|
public static int smiths;
|
||||||
@@ -296,7 +226,6 @@ public class Blacksmith extends NPC {
|
|||||||
|
|
||||||
public static void reset() {
|
public static void reset() {
|
||||||
type = 0;
|
type = 0;
|
||||||
alternative = false;
|
|
||||||
|
|
||||||
spawned = false;
|
spawned = false;
|
||||||
given = false;
|
given = false;
|
||||||
@@ -345,7 +274,6 @@ public class Blacksmith extends NPC {
|
|||||||
|
|
||||||
if (spawned) {
|
if (spawned) {
|
||||||
node.put( TYPE, type );
|
node.put( TYPE, type );
|
||||||
node.put( ALTERNATIVE, alternative );
|
|
||||||
|
|
||||||
node.put( GIVEN, given );
|
node.put( GIVEN, given );
|
||||||
node.put( STARTED, started );
|
node.put( STARTED, started );
|
||||||
@@ -377,7 +305,6 @@ public class Blacksmith extends NPC {
|
|||||||
|
|
||||||
if (!node.isNull() && (spawned = node.getBoolean( SPAWNED ))) {
|
if (!node.isNull() && (spawned = node.getBoolean( SPAWNED ))) {
|
||||||
type = node.getInt(TYPE);
|
type = node.getInt(TYPE);
|
||||||
alternative = node.getBoolean( ALTERNATIVE );
|
|
||||||
|
|
||||||
given = node.getBoolean( GIVEN );
|
given = node.getBoolean( GIVEN );
|
||||||
started = node.getBoolean( STARTED );
|
started = node.getBoolean( STARTED );
|
||||||
@@ -390,12 +317,7 @@ public class Blacksmith extends NPC {
|
|||||||
} else {
|
} else {
|
||||||
pickaxe = null;
|
pickaxe = null;
|
||||||
}
|
}
|
||||||
if (node.contains("reforged")){
|
reforges = node.getInt( REFORGES );
|
||||||
//pre-v2.2.0 saves
|
|
||||||
reforges = node.getBoolean( "reforged" ) ? 1 : 0;
|
|
||||||
} else {
|
|
||||||
reforges = node.getInt( REFORGES );
|
|
||||||
}
|
|
||||||
hardens = node.getInt( HARDENS );
|
hardens = node.getInt( HARDENS );
|
||||||
upgrades = node.getInt( UPGRADES );
|
upgrades = node.getInt( UPGRADES );
|
||||||
smiths = node.getInt( SMITHS );
|
smiths = node.getInt( SMITHS );
|
||||||
@@ -421,7 +343,6 @@ public class Blacksmith extends NPC {
|
|||||||
|
|
||||||
//Currently cannot roll the fungi quest, as it is not fully implemented
|
//Currently cannot roll the fungi quest, as it is not fully implemented
|
||||||
type = Random.IntRange(1, 2);
|
type = Random.IntRange(1, 2);
|
||||||
alternative = false;
|
|
||||||
|
|
||||||
given = false;
|
given = false;
|
||||||
generateRewards( true );
|
generateRewards( true );
|
||||||
@@ -540,17 +461,5 @@ public class Blacksmith extends NPC {
|
|||||||
|| (pickaxe != null && Statistics.questScores[2] >= 2500);
|
|| (pickaxe != null && Statistics.questScores[2] >= 2500);
|
||||||
}
|
}
|
||||||
|
|
||||||
//if the blacksmith is generated pre-v2.2.0, and the player never spawned a mining test floor
|
|
||||||
public static boolean oldQuestMineBlocked(){
|
|
||||||
return type == OLD && !Dungeon.levelHasBeenGenerated(Dungeon.depth, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean oldBloodQuest(){
|
|
||||||
return type == OLD && alternative;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean oldMiningQuest(){
|
|
||||||
return type == OLD && !alternative;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,42 +29,24 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Invisibility;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Vulnerable;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Bat;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Bee;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Bee;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Crab;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Crab;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Scorpio;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Scorpio;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Spinner;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Spinner;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Swarm;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Swarm;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Blacksmith;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.CellEmitter;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.MiningLevel;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.MiningLevel;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite.Glowing;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.AttackIndicator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
import com.watabou.noosa.audio.Sample;
|
import com.watabou.noosa.audio.Sample;
|
||||||
import com.watabou.utils.Bundle;
|
|
||||||
import com.watabou.utils.Callback;
|
import com.watabou.utils.Callback;
|
||||||
import com.watabou.utils.PathFinder;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
//various code in here supports old blacksmith quest logic from before v2.2.0
|
|
||||||
public class Pickaxe extends MeleeWeapon {
|
public class Pickaxe extends MeleeWeapon {
|
||||||
|
|
||||||
public static final String AC_MINE = "MINE";
|
|
||||||
|
|
||||||
public static final float TIME_TO_MINE = 2;
|
|
||||||
|
|
||||||
private static final Glowing BLOODY = new Glowing( 0x550000 );
|
|
||||||
|
|
||||||
{
|
{
|
||||||
image = ItemSpriteSheet.PICKAXE;
|
image = ItemSpriteSheet.PICKAXE;
|
||||||
|
|
||||||
@@ -75,8 +57,6 @@ public class Pickaxe extends MeleeWeapon {
|
|||||||
|
|
||||||
tier = 2;
|
tier = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean bloodStained = false;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int STRReq(int lvl) {
|
public int STRReq(int lvl) {
|
||||||
@@ -86,108 +66,18 @@ public class Pickaxe extends MeleeWeapon {
|
|||||||
@Override
|
@Override
|
||||||
public ArrayList<String> actions( Hero hero ) {
|
public ArrayList<String> actions( Hero hero ) {
|
||||||
ArrayList<String> actions = super.actions( hero );
|
ArrayList<String> actions = super.actions( hero );
|
||||||
if (Blacksmith.Quest.oldMiningQuest()) {
|
|
||||||
actions.add(AC_MINE);
|
|
||||||
}
|
|
||||||
if (Dungeon.level instanceof MiningLevel){
|
if (Dungeon.level instanceof MiningLevel){
|
||||||
actions.remove(AC_DROP);
|
actions.remove(AC_DROP);
|
||||||
actions.remove(AC_THROW);
|
actions.remove(AC_THROW);
|
||||||
}
|
}
|
||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute( final Hero hero, String action ) {
|
|
||||||
|
|
||||||
super.execute( hero, action );
|
|
||||||
|
|
||||||
if (action.equals(AC_MINE)) {
|
|
||||||
|
|
||||||
if (Dungeon.depth < 11 || Dungeon.depth > 15) {
|
|
||||||
GLog.w( Messages.get(this, "no_vein") );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < PathFinder.NEIGHBOURS8.length; i++) {
|
|
||||||
|
|
||||||
final int pos = hero.pos + PathFinder.NEIGHBOURS8[i];
|
|
||||||
if (Dungeon.level.map[pos] == Terrain.WALL_DECO) {
|
|
||||||
|
|
||||||
hero.spend( TIME_TO_MINE );
|
|
||||||
hero.busy();
|
|
||||||
|
|
||||||
hero.sprite.attack( pos, new Callback() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void call() {
|
|
||||||
|
|
||||||
CellEmitter.center( pos ).burst( Speck.factory( Speck.STAR ), 7 );
|
|
||||||
Sample.INSTANCE.play( Assets.Sounds.EVOKE );
|
|
||||||
|
|
||||||
Level.set( pos, Terrain.WALL );
|
|
||||||
GameScene.updateMap( pos );
|
|
||||||
|
|
||||||
DarkGold gold = new DarkGold();
|
|
||||||
if (gold.doPickUp( Dungeon.hero )) {
|
|
||||||
GLog.i( Messages.capitalize(Messages.get(Dungeon.hero, "you_now_have", gold.name())) );
|
|
||||||
} else {
|
|
||||||
Dungeon.level.drop( gold, hero.pos ).sprite.drop();
|
|
||||||
}
|
|
||||||
|
|
||||||
hero.onOperateComplete();
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
GLog.w( Messages.get(this, "no_vein") );
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int proc( Char attacker, Char defender, int damage ) {
|
|
||||||
if (Blacksmith.Quest.oldBloodQuest() && !bloodStained && defender instanceof Bat) {
|
|
||||||
Actor.add(new Actor() {
|
|
||||||
|
|
||||||
{
|
|
||||||
actPriority = VFX_PRIO;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean act() {
|
|
||||||
if (!defender.isAlive()){
|
|
||||||
bloodStained = true;
|
|
||||||
updateQuickslot();
|
|
||||||
}
|
|
||||||
|
|
||||||
Actor.remove(this);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return super.proc( attacker, defender, damage );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean keptThroughLostInventory() {
|
public boolean keptThroughLostInventory() {
|
||||||
//pickaxe is always kept when it's needed for the mining level
|
//pickaxe is always kept when it's needed for the mining level
|
||||||
return super.keptThroughLostInventory() || Dungeon.level instanceof MiningLevel;
|
return super.keptThroughLostInventory() || Dungeon.level instanceof MiningLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String defaultAction() {
|
|
||||||
if (Dungeon.hero.heroClass == HeroClass.DUELIST && isEquipped(Dungeon.hero)){
|
|
||||||
return AC_ABILITY;
|
|
||||||
} else if (Blacksmith.Quest.oldMiningQuest()) {
|
|
||||||
return AC_MINE;
|
|
||||||
} else {
|
|
||||||
return super.defaultAction();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String targetingPrompt() {
|
public String targetingPrompt() {
|
||||||
return Messages.get(this, "prompt");
|
return Messages.get(this, "prompt");
|
||||||
@@ -254,29 +144,4 @@ public class Pickaxe extends MeleeWeapon {
|
|||||||
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
|
return augment.damageFactor(min(level)+dmgBoost) + "-" + augment.damageFactor(max(level)+dmgBoost);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String BLOODSTAINED = "bloodStained";
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void storeInBundle( Bundle bundle ) {
|
|
||||||
super.storeInBundle( bundle );
|
|
||||||
|
|
||||||
bundle.put( BLOODSTAINED, bloodStained );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void restoreFromBundle( Bundle bundle ) {
|
|
||||||
super.restoreFromBundle( bundle );
|
|
||||||
|
|
||||||
bloodStained = bundle.getBoolean( BLOODSTAINED );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Glowing glowing() {
|
|
||||||
if (super.glowing() == null) {
|
|
||||||
return bloodStained ? BLOODY : null;
|
|
||||||
} else {
|
|
||||||
return super.glowing();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public class CavesLevel extends RegularLevel {
|
|||||||
@Override
|
@Override
|
||||||
public boolean activateTransition(Hero hero, LevelTransition transition) {
|
public boolean activateTransition(Hero hero, LevelTransition transition) {
|
||||||
if (transition.type == LevelTransition.Type.BRANCH_EXIT
|
if (transition.type == LevelTransition.Type.BRANCH_EXIT
|
||||||
&& (!Blacksmith.Quest.given() || Blacksmith.Quest.oldQuestMineBlocked() || Blacksmith.Quest.completed() || !Blacksmith.Quest.started())) {
|
&& (!Blacksmith.Quest.given() || Blacksmith.Quest.completed() || !Blacksmith.Quest.started())) {
|
||||||
|
|
||||||
Blacksmith smith = null;
|
Blacksmith smith = null;
|
||||||
for (Char c : Actor.chars()){
|
for (Char c : Actor.chars()){
|
||||||
@@ -126,11 +126,9 @@ public class CavesLevel extends RegularLevel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Blacksmith.Quest.oldQuestMineBlocked()){
|
if (smith == null || !Blacksmith.Quest.given() || Blacksmith.Quest.completed()) {
|
||||||
GLog.w(Messages.get(Blacksmith.class, "cant_enter_old"));
|
|
||||||
} else if (smith == null || !Blacksmith.Quest.given() || Blacksmith.Quest.completed()) {
|
|
||||||
GLog.w(Messages.get(Blacksmith.class, "entrance_blocked"));
|
GLog.w(Messages.get(Blacksmith.class, "entrance_blocked"));
|
||||||
} else if (!Blacksmith.Quest.started() && Blacksmith.Quest.Type() != Blacksmith.Quest.OLD){
|
} else {
|
||||||
final Pickaxe pick = hero.belongings.getItem(Pickaxe.class);
|
final Pickaxe pick = hero.belongings.getItem(Pickaxe.class);
|
||||||
Game.runOnRenderThread(new Callback() {
|
Game.runOnRenderThread(new Callback() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ public class MiningLevel extends CavesLevel {
|
|||||||
@Override
|
@Override
|
||||||
public boolean activateTransition(Hero hero, LevelTransition transition) {
|
public boolean activateTransition(Hero hero, LevelTransition transition) {
|
||||||
if (transition.type == LevelTransition.Type.BRANCH_ENTRANCE
|
if (transition.type == LevelTransition.Type.BRANCH_ENTRANCE
|
||||||
&& !Blacksmith.Quest.completed() && Blacksmith.Quest.Type() != Blacksmith.Quest.OLD) {
|
&& !Blacksmith.Quest.completed()) {
|
||||||
|
|
||||||
if (hero.belongings.getItem(Pickaxe.class) == null){
|
if (hero.belongings.getItem(Pickaxe.class) == null){
|
||||||
Game.runOnRenderThread(new Callback() {
|
Game.runOnRenderThread(new Callback() {
|
||||||
|
|||||||
Reference in New Issue
Block a user