Compare commits

...

30 Commits

Author SHA1 Message Date
OMGeeky
6f2ba0fe7a naming & accidental change 2025-05-02 22:25:09 +02:00
OMGeeky
06f1a791e3 implement on-miss and on-miss-received item effects
this should allow for something like a shield, that applies an actor condition to the attacker or the player, when it successfully blocks an attack (like a generic taunt for items), but also, when the player misses with his weapon, he could get an effect (for example something like embarrassed if we stay in the direction taunt is going)
2025-05-02 22:22:36 +02:00
Nut.andor
5f97d644e0 Revert "map_indoor_3 (still needs to be reworked)"
This reverts commit 251764802b.
2025-03-22 15:55:15 +01:00
Nut.andor
251764802b map_indoor_3 (still needs to be reworked) 2025-03-22 15:54:58 +01:00
Nut.andor
54f3cd5303 some bugs put to monsters_insects.png 2025-03-16 13:16:18 +01:00
Nut.andor
019f19d1b4 some bugs put to monsters_insects.png 2025-03-16 13:10:27 +01:00
Nut.andor
a474684405 debug teleport #targets 2025-03-13 21:12:10 +01:00
Nut.andor
c926366fd5 debug teleport #targets 2025-03-09 21:59:04 +01:00
Nut.andor
e548a8110e duplicates removed 2025-02-24 17:34:57 +01:00
Nut.andor
476c972416 tel #9 2025-02-18 00:04:33 +01:00
Nut.andor
dfeafef1a9 newb sprites 2025-02-06 16:07:49 +01:00
Nut.andor
71ce482587 newb sprites 2025-02-06 14:58:15 +01:00
Nut.andor
94672e2fc0 debug teleport #targets 2025-02-06 14:58:14 +01:00
Nut.andor
3405b7692c newb sprites 2025-01-16 16:16:31 +01:00
Nut.andor
ed11bf58a3 debug teleport #targets 2025-01-13 04:39:31 +01:00
Nut.andor
f237694d21 broken_1 + entrance_1 2025-01-13 01:37:34 +01:00
Nut.andor
de1f850cfd newb sprites 2025-01-04 20:43:47 +01:00
Nut.andor
1286c0802c debug teleport #targets 2024-12-29 02:41:17 +01:00
Nut.andor
35034b4e9f Merge branch 'pulls/1829009049/82' into AT_Source_Next_Release 2024-12-28 04:21:23 +01:00
Nut.andor
6f52c4b39d italic 2024-12-28 04:08:15 +01:00
Nut.andor
aa2c9c08e0 Actor condition descriptions 2024-12-28 03:09:19 +01:00
Nut.andor
c6e4bc90f9 Merge branch 'pulls/1829009049/81' into AT_Source_Next_Release 2024-12-28 03:07:53 +01:00
Nut.andor
e0053aedd0 lower the prerequisite levels on the internal bleeding for more critical and better critical from 3 to 2 2024-12-28 03:01:17 +01:00
Nut.andor
559ed8a72c Pull Request #82: Actor condition descriptions 2024-12-27 12:58:19 +01:00
Nut.andor
2a7c021572 Newb actorconditions 2024-12-23 01:42:34 +01:00
Nut.andor
9d3f5bfab5 Pull Request #81: lower the prerequisite levels on the internal bleeding for more critical and better critical from 3 to 2 2024-12-20 18:57:49 +01:00
jgemmajr
b505a4ea41 lower the prerequisite levels on the internal bleeding for more critical and better critical from 3 to 2 2024-12-20 12:56:06 -05:00
Nut.andor
94f93391d0 dev version 2024-12-19 00:27:39 +01:00
Nut.andor
297c6fad79 map_cavewall_3 2024-12-19 00:25:48 +01:00
Nut.andor
acdded3d97 next version 2024-12-18 00:44:57 +01:00
28 changed files with 192 additions and 131 deletions

View File

@@ -3,8 +3,8 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gpl.rpg.AndorsTrail"
android:versionCode="79"
android:versionName="0.8.12.1"
android:versionCode="80"
android:versionName="0.8.13dev"
android:installLocation="auto"
>

View File

@@ -24,15 +24,15 @@ public final class AndorsTrailApplication extends Application {
public static final boolean DEVELOPMENT_DEBUGRESOURCES = false;
public static final boolean DEVELOPMENT_FORCE_STARTNEWGAME = false;
public static final boolean DEVELOPMENT_FORCE_CONTINUEGAME = false;
public static final boolean DEVELOPMENT_DEBUGBUTTONS = false;
public static final boolean DEVELOPMENT_DEBUGBUTTONS = true;
public static final boolean DEVELOPMENT_FASTSPEED = false;
public static final boolean DEVELOPMENT_VALIDATEDATA = false;
public static final boolean DEVELOPMENT_DEBUGMESSAGES = false;
public static final String CURRENT_VERSION_DISPLAY = "0.8.12.1";
public static final boolean DEVELOPMENT_VALIDATEDATA = true;
public static final boolean DEVELOPMENT_DEBUGMESSAGES = true;
public static final String CURRENT_VERSION_DISPLAY = "0.8.13dev";
public static final boolean IS_RELEASE_VERSION = !CURRENT_VERSION_DISPLAY.matches(".*[a-d].*");
public static final boolean DEVELOPMENT_INCOMPATIBLE_SAVEGAMES = DEVELOPMENT_DEBUGRESOURCES || DEVELOPMENT_DEBUGBUTTONS || DEVELOPMENT_FASTSPEED || !IS_RELEASE_VERSION;
public static final int DEVELOPMENT_INCOMPATIBLE_SAVEGAME_VERSION = 999;
public static final int CURRENT_VERSION = DEVELOPMENT_INCOMPATIBLE_SAVEGAMES ? DEVELOPMENT_INCOMPATIBLE_SAVEGAME_VERSION : 79;
public static final int CURRENT_VERSION = DEVELOPMENT_INCOMPATIBLE_SAVEGAMES ? DEVELOPMENT_INCOMPATIBLE_SAVEGAME_VERSION : 80;
private final AndorsTrailPreferences preferences = new AndorsTrailPreferences();
private WorldContext world = new WorldContext();

View File

@@ -358,14 +358,14 @@ public final class DebugInterface {
,new DebugButton("#1", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "swamp3", "north", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "lake_shore_road_9", "north", 5, 0);
}
})
,new DebugButton("#2", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "beekeeper1", "south", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "crackshot_hideout3", "South", 0, 0);
}
})
@@ -373,49 +373,49 @@ public final class DebugInterface {
,new DebugButton("#3", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "guynmart", "west2", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "fallhaven_derelict2", "up", 0, 0);
}
})
,new DebugButton("#4", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "waterway5", "south", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "loneford4", "south", 0, 0);
}
})
,new DebugButton("#5", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "island1", "south2", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "waytogalmore1", "entrance2", 0, 0);
}
})
,new DebugButton("#6", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "laerothmanor1", "down2", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_32", "south", 19, 0);
}
})
,new DebugButton("#7", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "final_cave1", "up", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "cabin_norcity_road1", "north", 5, 0);
}
})
,new DebugButton("#8", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "bwmfill3", "north2", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "galmore_86", "west", 0, 5);
}
})
,new DebugButton("#9", new OnClickListener() {
@Override
public void onClick(View arg0) {
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "island2", "down", 0, 0);
controllerContext.movementController.placePlayerAsyncAt(MapObject.MapObjectType.newmap, "elm_2f_2", "west", 5, 0);
}
})

View File

@@ -67,8 +67,10 @@ public final class ItemInfoActivity extends AndorsTrailBaseActivity {
itemType.effects_equip,
itemType.effects_use == null ? null : Collections.singletonList(itemType.effects_use),
itemType.effects_hit == null ? null : Collections.singletonList(itemType.effects_hit),
itemType.effects_miss == null ? null : Collections.singletonList(itemType.effects_miss),
itemType.effects_kill == null ? null : Collections.singletonList(itemType.effects_kill),
itemType.effects_hitReceived == null ? null : Collections.singletonList(itemType.effects_hitReceived),
itemType.effects_missReceived == null ? null : Collections.singletonList(itemType.effects_missReceived),
null,
itemType.isWeapon()
);

View File

@@ -90,8 +90,10 @@ public final class MonsterInfoActivity extends AndorsTrailBaseActivity {
null,
null,
monster.getOnHitEffectsAsList(),
monster.getOnMissEffectsAsList(),
null,
monster.getOnHitReceivedEffectsAsList(),
monster.getOnMissReceivedEffectsAsList(),
monster.getOnDeathEffects(),
false);
hp.update(monster.getMaxHP(), monster.getCurrentHP());

View File

@@ -183,19 +183,25 @@ public final class HeroinfoActivity_Stats extends Fragment {
);
ArrayList<ItemTraits_OnUse> effects_hit = new ArrayList<ItemTraits_OnUse>();
ArrayList<ItemTraits_OnUse> effects_miss = new ArrayList<ItemTraits_OnUse>();
ArrayList<ItemTraits_OnUse> effects_kill = new ArrayList<ItemTraits_OnUse>();
ArrayList<ItemTraits_OnHitReceived> effects_hitReceived = new ArrayList<ItemTraits_OnHitReceived>();
ArrayList<ItemTraits_OnHitReceived> effects_missReceived = new ArrayList<ItemTraits_OnHitReceived>();
for (Inventory.WearSlot slot : Inventory.WearSlot.values()) {
ItemType type = player.inventory.getItemTypeInWearSlot(slot);
if (type == null) continue;
if (type.effects_hit != null) effects_hit.add(type.effects_hit);
if (type.effects_miss != null) effects_miss.add(type.effects_miss);
if (type.effects_kill != null) effects_kill.add(type.effects_kill);
if (type.effects_hitReceived != null) effects_hitReceived.add(type.effects_hitReceived);
if (type.effects_missReceived != null) effects_missReceived.add(type.effects_missReceived);
}
if (effects_hit.isEmpty()) effects_hit = null;
if (effects_miss.isEmpty()) effects_miss = null;
if (effects_kill.isEmpty()) effects_kill = null;
if (effects_hitReceived.isEmpty()) effects_hitReceived = null;
actorinfo_onhiteffects.update(null, null, effects_hit, effects_kill, effects_hitReceived, null, false);
if (effects_missReceived.isEmpty()) effects_missReceived = null;
actorinfo_onhiteffects.update(null, null, effects_hit, effects_miss, effects_kill, effects_hitReceived,effects_missReceived, null, false);
updateStatsTableRow(world.model.statistics.getNumberOfCompletedQuests(world), R.id.heroinfo_gamestats_quests, R.id.heroinfo_gamestats_quests_row);

View File

@@ -595,7 +595,10 @@ public final class CombatController implements VisualEffectCompletedCallback {
private AttackResult attack(final Actor attacker, final Actor target) {
int hitChance = getAttackHitChance(attacker, target);
if (!Constants.roll100(hitChance)) return AttackResult.MISS;
if (!Constants.roll100(hitChance)) {
applyAttackMissStatusEffects(attacker, target);
return AttackResult.MISS;
}
int damage = Constants.rollValue(attacker.getDamagePotential());
boolean isCriticalHit = false;
@@ -629,6 +632,21 @@ public final class CombatController implements VisualEffectCompletedCallback {
}
}
private void applyAttackMissStatusEffects(Actor attacker, Actor target) {
ItemTraits_OnUse[] onMissEffects = attacker.getOnMissEffects();
ItemTraits_OnHitReceived[] onMissReceivedEffects = target.getOnMissReceivedEffects();
if (onMissEffects != null) {
for (ItemTraits_OnUse e : onMissEffects) {
controllers.actorStatsController.applyUseEffect(attacker, target, e);
}
}
if (onMissReceivedEffects != null) {
for (ItemTraits_OnHitReceived e : onMissReceivedEffects) {
controllers.actorStatsController.applyHitReceivedEffect(target, attacker, e);
}
}
}
public void endOfCombatRound() {
world.model.worldData.tickWorldTime();
controllers.gameRoundController.resetRoundTimers();

View File

@@ -195,19 +195,27 @@ public final class ItemController {
public static void recalculateHitEffectsFromWornItems(Player player) {
ArrayList<ItemTraits_OnUse> effects_onHit = null;
ArrayList<ItemTraits_OnUse> effects_onMiss = null;
ArrayList<ItemTraits_OnHitReceived> effects_onHitReceived = null;
ArrayList<ItemTraits_OnHitReceived> effects_onMissReceived = null;
for (Inventory.WearSlot slot : Inventory.WearSlot.values()) {
ItemType type = player.inventory.getItemTypeInWearSlot(slot);
if (type == null) continue;
ItemTraits_OnUse eh = type.effects_hit;
ItemTraits_OnHitReceived ehr = type.effects_hitReceived;
if (eh == null && ehr == null) continue;
ItemTraits_OnUse em = type.effects_miss;
ItemTraits_OnHitReceived emr = type.effects_missReceived;
if (eh == null && ehr == null && em == null && emr == null) continue;
if (effects_onHit == null) effects_onHit = new ArrayList<ItemTraits_OnUse>();
if (eh != null) effects_onHit.add(eh);
if (effects_onMiss == null) effects_onMiss = new ArrayList<ItemTraits_OnUse>();
if (em != null) effects_onMiss.add(em);
if (effects_onHitReceived == null) effects_onHitReceived = new ArrayList<ItemTraits_OnHitReceived>();
if (ehr != null) effects_onHitReceived.add(ehr);
if (effects_onMissReceived == null) effects_onMissReceived = new ArrayList<ItemTraits_OnHitReceived>();
if (emr != null) effects_onMissReceived.add(emr);
}
if (effects_onHit != null) {
@@ -217,6 +225,13 @@ public final class ItemController {
} else {
player.onHitEffects = null;
}
if (effects_onMiss != null) {
ItemTraits_OnUse[] effects_ = new ItemTraits_OnUse[effects_onMiss.size()];
effects_ = effects_onMiss.toArray(effects_);
player.onMissEffects = effects_;
} else {
player.onMissEffects = null;
}
if (effects_onHitReceived != null) {
ItemTraits_OnHitReceived[] effects_ = new ItemTraits_OnHitReceived[effects_onHitReceived.size()];
@@ -225,6 +240,13 @@ public final class ItemController {
} else {
player.onHitReceivedEffects = null;
}
if (effects_onMissReceived != null) {
ItemTraits_OnHitReceived[] effects_ = new ItemTraits_OnHitReceived[effects_onMissReceived.size()];
effects_ = effects_onMissReceived.toArray(effects_);
player.onMissReceivedEffects = effects_;
} else {
player.onMissReceivedEffects = null;
}
}
public void consumeNonItemLoot(Loot loot) {

View File

@@ -187,12 +187,12 @@ public final class SkillCollection {
initializeSkill(new SkillInfo(SkillID.resistanceBlood, MAX_LEVEL_RESISTANCE, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, null, position++));
initializeSkill(new SkillInfo(SkillID.shadowBless, 1, SkillInfo.LevelUpType.onlyByQuests, SkillCategory.immunity, null, position++));
initializeSkill(new SkillInfo(SkillID.crit1, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.criticals, new SkillLevelRequirement[] {
SkillLevelRequirement.requireOtherSkill(SkillID.moreCriticals, 3)
,SkillLevelRequirement.requireOtherSkill(SkillID.betterCriticals, 3)
SkillLevelRequirement.requireOtherSkill(SkillID.moreCriticals, 2)
,SkillLevelRequirement.requireOtherSkill(SkillID.betterCriticals, 2)
}, position++));
initializeSkill(new SkillInfo(SkillID.crit2, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.criticals, new SkillLevelRequirement[] {
SkillLevelRequirement.requireOtherSkill(SkillID.moreCriticals, 6)
,SkillLevelRequirement.requireOtherSkill(SkillID.betterCriticals, 6)
SkillLevelRequirement.requireOtherSkill(SkillID.moreCriticals, 4)
,SkillLevelRequirement.requireOtherSkill(SkillID.betterCriticals, 4)
,SkillLevelRequirement.requireOtherSkill(SkillID.crit1, 1)
}, position++));
initializeSkill(new SkillInfo(SkillID.rejuvenation, 1, SkillInfo.LevelUpType.alwaysShown, SkillCategory.immunity, new SkillLevelRequirement[] {

View File

@@ -35,7 +35,9 @@ public class Actor {
public int blockChance;
public int damageResistance;
public ItemTraits_OnUse[] onHitEffects;
public ItemTraits_OnUse[] onMissEffects;
public ItemTraits_OnHitReceived[] onHitReceivedEffects;
public ItemTraits_OnHitReceived[] onMissReceivedEffects;
public ItemTraits_OnUse onDeathEffects;
public boolean hasVFXRunning = false;
public long vfxStartTime = 0;
@@ -69,8 +71,12 @@ public class Actor {
public int getDamageResistance() { return damageResistance; }
public ItemTraits_OnUse[] getOnHitEffects() { return onHitEffects; }
public List<ItemTraits_OnUse> getOnHitEffectsAsList() { return onHitEffects == null ? null : Arrays.asList(onHitEffects); }
public ItemTraits_OnUse[] getOnMissEffects() { return onMissEffects; }
public List<ItemTraits_OnUse> getOnMissEffectsAsList() { return onMissEffects == null ? null : Arrays.asList(onMissEffects); }
public ItemTraits_OnHitReceived[] getOnHitReceivedEffects() { return onHitReceivedEffects; }
public List<ItemTraits_OnHitReceived> getOnHitReceivedEffectsAsList() { return onHitReceivedEffects == null ? null : Arrays.asList(onHitReceivedEffects); }
public ItemTraits_OnHitReceived[] getOnMissReceivedEffects() { return onMissReceivedEffects; }
public List<ItemTraits_OnHitReceived> getOnMissReceivedEffectsAsList() { return onMissReceivedEffects == null ? null : Arrays.asList(onMissReceivedEffects); }
public ItemTraits_OnUse getOnDeathEffects() { return onDeathEffects; }
public boolean hasCriticalSkillEffect() { return getCriticalSkill() != 0; }

View File

@@ -33,8 +33,10 @@ public final class ItemType {
public final ItemTraits_OnEquip effects_equip;
public final ItemTraits_OnUse effects_use;
public final ItemTraits_OnUse effects_hit;
public final ItemTraits_OnUse effects_miss;
public final ItemTraits_OnUse effects_kill;
public final ItemTraits_OnHitReceived effects_hitReceived;
public final ItemTraits_OnHitReceived effects_missReceived;
public ItemType(
String id
@@ -48,8 +50,10 @@ public final class ItemType {
, ItemTraits_OnEquip effects_equip
, ItemTraits_OnUse effects_use
, ItemTraits_OnUse effects_hit
, ItemTraits_OnUse effects_miss
, ItemTraits_OnUse effects_kill
, ItemTraits_OnHitReceived effects_hitReceived
, ItemTraits_OnHitReceived effects_missReceived
) {
this.id = id;
this.iconID = iconID;
@@ -63,8 +67,10 @@ public final class ItemType {
this.effects_equip = effects_equip;
this.effects_use = effects_use;
this.effects_hit = effects_hit;
this.effects_miss = effects_miss;
this.effects_kill = effects_kill;
this.effects_hitReceived = effects_hitReceived;
this.effects_missReceived = effects_missReceived;
this.hasPersonalizedName = name.contains(Constants.PLACEHOLDER_PLAYERNAME);
}

View File

@@ -263,6 +263,7 @@ public final class ResourceLoader {
final Size sz7x4 = new Size(7, 4);
final Size sz8x3 = new Size(8, 3);
final Size sz16x8 = new Size(16, 8);
final Size sz16x10 = new Size(16, 10);
final Size sz20x12 = new Size(20, 12);
final Size mapTileSize = new Size(16, 8);
final Size sz8x8 = new Size(8, 8);
@@ -282,6 +283,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.actorconditions_1, "actorconditions_1", new Size(14, 8), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.actorconditions_2, "actorconditions_2", sz3x1, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.actorconditions_japozero, "actorconditions_japozero", new Size(16, 4), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.actorconditions_newb, "actorconditions_newb", new Size(20, 1), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.actorconditions_omi1, "actorconditions_omi1", sz2x1, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.actorconditions_omi2, "actorconditions_omi2", sz5x1, sz1x1, mTileSize);
/*INSERT_ACTORCONDITIONS_TILESETS_HERE*/
@@ -330,7 +332,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.monsters_eye4, "monsters_eye4", sz1x1, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_ghost1, "monsters_ghost1", sz1x1, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_hydra1, "monsters_hydra1", sz1x1, sz2x2, mTileSize);
loader.prepareTileset(R.drawable.monsters_insects, "monsters_insects", sz6x1, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_insects, "monsters_insects", sz16x8, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_johny, "monsters_johny", sz20x12, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_karvis1, "monsters_karvis1", sz2x1, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_karvis2, "monsters_karvis2", new Size(9, 1), sz1x1, mTileSize);
@@ -345,7 +347,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.monsters_misc, "monsters_misc", new Size(13, 1), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_newb_1, "monsters_newb_1", new Size(40, 34), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_newb_2, "monsters_newb_2", new Size(8, 2), sz1x2, mTileSize);
loader.prepareTileset(R.drawable.monsters_newb_3, "monsters_newb_3", new Size(10, 2), sz2x2, mTileSize);
loader.prepareTileset(R.drawable.monsters_newb_3, "monsters_newb_3", new Size(10, 10), sz2x2, mTileSize);
loader.prepareTileset(R.drawable.monsters_newb_4, "monsters_newb_4", new Size(4, 1), sz2x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_rats, "monsters_rats", new Size(5, 1), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.monsters_redshrike1, "monsters_redshrike1", sz7x1, sz1x1, mTileSize);
@@ -385,7 +387,7 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.monsters_cats, "monsters_cats", new Size(10, 2), sz1x1, mTileSize);
/*INSERT_NPCS_TILESETS_HERE*/
loader.prepareTileset(R.drawable.map_bed_1, "map_bed_1", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_bed_1, "map_bed_1", sz16x10, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_boats_1, "map_boats_1", new Size(16, 9), sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_border_1, "map_border_1", mapTileSize, sz1x1, mTileSize);
loader.prepareTileset(R.drawable.map_bridge_1, "map_bridge_1", mapTileSize, sz1x1, mTileSize);

View File

@@ -41,9 +41,11 @@ public final class ItemTypeParser extends JsonCollectionParserFor<ItemType> {
final ItemTraits_OnEquip equipEffect = itemTraitsParser.parseItemTraits_OnEquip(o.optJSONObject(JsonFieldNames.ItemType.equipEffect));
final ItemTraits_OnUse useEffect = itemTraitsParser.parseItemTraits_OnUse(o.optJSONObject(JsonFieldNames.ItemType.useEffect));
final ItemTraits_OnUse hitEffect = itemTraitsParser.parseItemTraits_OnUse(o.optJSONObject(JsonFieldNames.ItemType.hitEffect));
final ItemTraits_OnUse missEffect = itemTraitsParser.parseItemTraits_OnUse(o.optJSONObject(JsonFieldNames.ItemType.missEffect));
final ItemTraits_OnUse killEffect = itemTraitsParser.parseItemTraits_OnUse(o.optJSONObject(JsonFieldNames.ItemType.killEffect));
final ItemTraits_OnHitReceived hitReceivedEffect = itemTraitsParser.parseItemTraits_OnHitReceived(o.optJSONObject(JsonFieldNames.ItemType.hitReceivedEffect));
final ItemTraits_OnHitReceived missReceivedEffect = itemTraitsParser.parseItemTraits_OnHitReceived(o.optJSONObject(JsonFieldNames.ItemType.missReceivedEffect));
final int baseMarketCost = o.optInt(JsonFieldNames.ItemType.baseMarketCost);
final boolean hasManualPrice = o.optInt(JsonFieldNames.ItemType.hasManualPrice, 0) > 0;
final ItemType itemType = new ItemType(
@@ -58,8 +60,10 @@ public final class ItemTypeParser extends JsonCollectionParserFor<ItemType> {
, equipEffect
, useEffect
, hitEffect
, missEffect
, killEffect
, hitReceivedEffect
, missReceivedEffect
);
return new Pair<String, ItemType>(id, itemType);
}

View File

@@ -167,8 +167,10 @@ public final class JsonFieldNames {
public static final String equipEffect = "equipEffect";
public static final String useEffect = "useEffect";
public static final String hitEffect = "hitEffect";
public static final String missEffect = "missEffect";
public static final String killEffect = "killEffect";
public static final String hitReceivedEffect = "hitReceivedEffect";
public static final String missReceivedEffect = "missReceivedEffect";
}

View File

@@ -20,13 +20,17 @@ public final class ItemEffectsView extends LinearLayout {
private final ActorConditionEffectList itemeffect_onequip_conditions;
private final ItemEffectsView_OnUse itemeffect_onuse;
private final ItemEffectsView_OnUse itemeffect_onhit;
private final ItemEffectsView_OnUse itemeffect_onmiss;
private final ItemEffectsView_OnUse itemeffect_onkill;
private final ItemEffectsView_OnHitReceived itemeffect_onhitreceived;
private final ItemEffectsView_OnHitReceived itemeffect_onmissreceived;
private final ItemEffectsView_OnDeath itemeffect_ondeath;
private final TextView itemeffect_onuse_title;
private final TextView itemeffect_onhit_title;
private final TextView itemeffect_onmiss_title;
private final TextView itemeffect_onkill_title;
private final TextView itemeffect_onhitreceived_title;
private final TextView itemeffect_onmissreceived_title;
private final TextView itemeffect_ondeath_title;
public ItemEffectsView(Context context, AttributeSet attr) {
@@ -41,13 +45,17 @@ public final class ItemEffectsView extends LinearLayout {
itemeffect_onuse = (ItemEffectsView_OnUse) findViewById(R.id.itemeffect_onuse);
itemeffect_onhit = (ItemEffectsView_OnUse) findViewById(R.id.itemeffect_onhit);
itemeffect_onmiss = (ItemEffectsView_OnUse) findViewById(R.id.itemeffect_onmiss);
itemeffect_onkill = (ItemEffectsView_OnUse) findViewById(R.id.itemeffect_onkill);
itemeffect_onhitreceived = (ItemEffectsView_OnHitReceived) findViewById(R.id.itemeffect_onhitreceived);
itemeffect_onmissreceived = (ItemEffectsView_OnHitReceived) findViewById(R.id.itemeffect_onmissreceived);
itemeffect_ondeath = (ItemEffectsView_OnDeath) findViewById(R.id.itemeffect_ondeath);
itemeffect_onuse_title = (TextView) findViewById(R.id.itemeffect_onuse_title);
itemeffect_onhit_title = (TextView) findViewById(R.id.itemeffect_onhit_title);
itemeffect_onmiss_title = (TextView) findViewById(R.id.itemeffect_onmiss_title);
itemeffect_onkill_title = (TextView) findViewById(R.id.itemeffect_onkill_title);
itemeffect_onhitreceived_title = (TextView) findViewById(R.id.itemeffect_onhitreceived_title);
itemeffect_onmissreceived_title = (TextView) findViewById(R.id.itemeffect_onmissreceived_title);
itemeffect_ondeath_title = (TextView) findViewById(R.id.itemeffect_ondeath_title);
}
@@ -55,8 +63,10 @@ public final class ItemEffectsView extends LinearLayout {
ItemTraits_OnEquip effects_equip,
Collection<ItemTraits_OnUse> effects_use,
Collection<ItemTraits_OnUse> effects_hit,
Collection<ItemTraits_OnUse> effects_miss,
Collection<ItemTraits_OnUse> effects_kill,
Collection<ItemTraits_OnHitReceived> effects_hitreceived,
Collection<ItemTraits_OnHitReceived> effects_missreceived,
ItemTraits_OnUse effects_death,
boolean isWeapon
) {
@@ -90,6 +100,12 @@ public final class ItemEffectsView extends LinearLayout {
} else {
itemeffect_onhit_title.setVisibility(View.GONE);
}
itemeffect_onmiss.update(effects_miss);
if (effects_miss != null) {
itemeffect_onmiss_title.setVisibility(View.VISIBLE);
} else {
itemeffect_onmiss_title.setVisibility(View.GONE);
}
itemeffect_onkill.update(effects_kill);
if (effects_kill != null) {
@@ -104,6 +120,12 @@ public final class ItemEffectsView extends LinearLayout {
} else {
itemeffect_onhitreceived_title.setVisibility(View.GONE);
}
itemeffect_onmissreceived.update(effects_missreceived);
if (effects_missreceived != null) {
itemeffect_onmissreceived_title.setVisibility(View.VISIBLE);
} else {
itemeffect_onmissreceived_title.setVisibility(View.GONE);
}
itemeffect_ondeath.update(effects_death);
if (effects_death != null) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 KiB

After

Width:  |  Height:  |  Size: 839 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 905 KiB

After

Width:  |  Height:  |  Size: 968 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 137 KiB

View File

@@ -28,7 +28,8 @@
android:id="@+id/actorconditioninfo_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/section_margin" />
android:layout_marginBottom="@dimen/section_margin"
android:textStyle="italic" />
<TextView
android:id="@+id/actorconditioninfo_category"

View File

@@ -12,19 +12,19 @@
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.AbilityModifierInfoView
android:id="@+id/itemeffect_onequip_abilitymodifierinfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.AbilityModifierInfoView
android:id="@+id/itemeffect_onequip_abilitymodifierinfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.ActorConditionEffectList
android:id="@+id/itemeffect_onequip_conditions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.ActorConditionEffectList
android:id="@+id/itemeffect_onequip_conditions"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<TextView
android:text="@string/iteminfo_effect_works_when_used"
@@ -32,12 +32,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnUse
android:id="@+id/itemeffect_onuse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnUse
android:id="@+id/itemeffect_onuse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<TextView
android:text="@string/iteminfo_effect_works_when_hitting_target"
@@ -45,12 +45,25 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnUse
android:id="@+id/itemeffect_onhit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnUse
android:id="@+id/itemeffect_onhit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<TextView
android:text="@string/iteminfo_effect_works_when_missing_target"
android:id="@+id/itemeffect_onmiss_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnUse
android:id="@+id/itemeffect_onmiss"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<TextView
android:text="@string/iteminfo_effect_works_when_killing_target"
@@ -58,12 +71,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnUse
android:id="@+id/itemeffect_onkill"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnUse
android:id="@+id/itemeffect_onkill"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<TextView
android:text="@string/iteminfo_effect_works_when_hit_by_attacker"
@@ -71,23 +84,36 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnHitReceived
android:id="@+id/itemeffect_onhitreceived"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnHitReceived
android:id="@+id/itemeffect_onhitreceived"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<TextView
android:text="@string/iteminfo_effect_works_when_missed_by_attacker"
android:id="@+id/itemeffect_onmissreceived_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnHitReceived
android:id="@+id/itemeffect_onmissreceived"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<TextView
android:text="@string/iteminfo_effect_works_when_killed_by_attacker"
android:id="@+id/itemeffect_ondeath_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnDeath
android:id="@+id/itemeffect_ondeath"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
<com.gpl.rpg.AndorsTrail.view.ItemEffectsView_OnDeath
android:id="@+id/itemeffect_ondeath"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
/>
</merge>

View File

@@ -3603,65 +3603,5 @@
"mapName":"waytogalmore0"
}
]
},
{
"id":"gal_chk_h3",
"rewards":[
{
"rewardType":"questProgress",
"rewardID":"sutdover_hidden",
"value":7
},
{
"rewardType":"removeQuestProgress",
"rewardID":"sutdover_hidden",
"value":8
},
{
"rewardType":"removeSpawnArea",
"rewardID":"reindeer",
"mapName":"crossglen"
}
]
},
{
"id":"gal_chk_h4",
"rewards":[
{
"rewardType":"removeQuestProgress",
"rewardID":"sutdover_hidden",
"value":7
},
{
"rewardType":"questProgress",
"rewardID":"sutdover_hidden",
"value":8
},
{
"rewardType":"spawnAll",
"rewardID":"reindeer",
"mapName":"crossglen"
}
]
},
{
"id":"gal_chk_h9",
"rewards":[
{
"rewardType":"removeQuestProgress",
"rewardID":"sutdover_hidden",
"value":7
},
{
"rewardType":"removeQuestProgress",
"rewardID":"sutdover_hidden",
"value":8
},
{
"rewardType":"removeSpawnArea",
"rewardID":"reindeer",
"mapName":"crossglen"
}
]
}
]

View File

@@ -348,10 +348,12 @@
<string name="iteminfo_effect_works_on_target">On target</string>
<string name="iteminfo_effect_works_on_attacker">On attacker</string>
<string name="iteminfo_effect_works_when_hitting_target">When hitting target</string>
<string name="iteminfo_effect_works_when_missing_target">When missing target</string>
<string name="iteminfo_effect_works_when_killing_target">On every kill</string>
<string name="iteminfo_effect_works_when_used">When used</string>
<string name="iteminfo_effect_works_when_equipped">When equipped</string>
<string name="iteminfo_effect_works_when_hit_by_attacker">When hit by attacker</string>
<string name="iteminfo_effect_works_when_missed_by_attacker">When missed by attacker</string>
<string name="iteminfo_effect_works_when_killed_by_attacker">When killed by attacker</string>
<string name="iteminfo_effect_decrease_current_hp">Drains %1$s HP</string>