diff --git a/AndorsTrail/res/raw/conversationlist_debug.json b/AndorsTrail/res/raw/conversationlist_debug.json
index cb1c03c00..ead482671 100644
--- a/AndorsTrail/res/raw/conversationlist_debug.json
+++ b/AndorsTrail/res/raw/conversationlist_debug.json
@@ -265,5 +265,116 @@
"mapName":"debugmap"
}
]
- }
+ },
+ {
+ "id":"chaotic_rewarder_0",
+ "message":"What do you want ?",
+ "replies":[
+ {
+ "text":"Apply condition",
+ "nextPhraseID":"chaotic_rewarder_1"
+ },
+ {
+ "text":"Clear condition",
+ "nextPhraseID":"chaotic_rewarder_2"
+ },
+ {
+ "text":"Give 5 rounds of immunity",
+ "nextPhraseID":"chaotic_rewarder_3"
+ },
+ {
+ "text":"Infinite immunity",
+ "nextPhraseID":"chaotic_rewarder_4"
+ },
+ {
+ "text":"Apply condition forever",
+ "nextPhraseID":"chaotic_rewarder_5"
+ }
+ ]
+ },
+ {
+ "id":"chaotic_rewarder_1",
+ "message":"Applied.",
+ "replies":[
+ {
+ "text":"N",
+ "nextPhraseID":"chaotic_rewarder_0"
+ }
+ ],
+ "rewards":[
+ {
+ "rewardType":"actorCondition",
+ "rewardID":"chaotic_grip",
+ "value":5
+ }
+ ]
+ },
+ {
+ "id":"chaotic_rewarder_2",
+ "message":"Cleared.",
+ "replies":[
+ {
+ "text":"N",
+ "nextPhraseID":"chaotic_rewarder_0"
+ }
+ ],
+ "rewards":[
+ {
+ "rewardType":"actorCondition",
+ "rewardID":"chaotic_grip",
+ "value":-99
+ }
+ ]
+ },
+ {
+ "id":"chaotic_rewarder_3",
+ "message":"5 rounds immune!",
+ "replies":[
+ {
+ "text":"N",
+ "nextPhraseID":"chaotic_rewarder_0"
+ }
+ ],
+ "rewards":[
+ {
+ "rewardType":"actorConditionImmunity",
+ "rewardID":"chaotic_grip",
+ "value":5
+ }
+ ]
+ },
+ {
+ "id":"chaotic_rewarder_4",
+ "message":"Immune forever !",
+ "replies":[
+ {
+ "text":"N",
+ "nextPhraseID":"chaotic_rewarder_0"
+ }
+ ],
+ "rewards":[
+ {
+ "rewardType":"actorConditionImmunity",
+ "rewardID":"chaotic_grip",
+ "value":999
+ }
+ ]
+ },
+ {
+ "id":"chaotic_rewarder_5",
+ "message":"Punished forever !",
+ "replies":[
+ {
+ "text":"N",
+ "nextPhraseID":"chaotic_rewarder_0"
+ }
+ ],
+ "rewards":[
+ {
+ "rewardType":"actorCondition",
+ "rewardID":"chaotic_grip",
+ "value":999
+ }
+ ]
+ }
]
diff --git a/AndorsTrail/res/raw/itemlist_debug.json b/AndorsTrail/res/raw/itemlist_debug.json
index c101e5d03..3e88c13e6 100644
--- a/AndorsTrail/res/raw/itemlist_debug.json
+++ b/AndorsTrail/res/raw/itemlist_debug.json
@@ -139,5 +139,37 @@
"max": 1
}
}
+ },
+ {
+ "id": "chaotic_penalty",
+ "iconID": "items_weapons:61",
+ "name": "Chaotic Penalty",
+ "category": "lsword",
+ "displaytype": "extraordinary",
+ "hasManualPrice": 1,
+ "baseMarketCost": 0,
+ "equipEffect": {
+ "increaseMaxAP": 2,
+ "increaseAttackCost": 7,
+ "increaseAttackChance": 25,
+ "increaseCriticalSkill": 10,
+ "setCriticalMultiplier": 2,
+ "increaseAttackDamage": {
+ "min": 5,
+ "max": 9
+ },
+ "addedConditions":[
+ {
+ "condition":"chaotic_grip",
+ "magnitude": 1
+ }
+ ]
+ },
+ "killEffect": {
+ "increaseCurrentHP": {
+ "min": 1,
+ "max": 1
+ }
+ }
}
]
diff --git a/AndorsTrail/res/raw/monsterlist_debug.json b/AndorsTrail/res/raw/monsterlist_debug.json
index fd5fdf344..81dcb97d8 100644
--- a/AndorsTrail/res/raw/monsterlist_debug.json
+++ b/AndorsTrail/res/raw/monsterlist_debug.json
@@ -124,5 +124,12 @@
"min": 1,
"max": 2
}
- }
+ },
+ {
+ "id":"chaotic_rewarder",
+ "name":"Chaotic Rewarder",
+ "iconID":"monsters_men2:5",
+ "spawnGroup":"chaotic_rewarder",
+ "phraseID":"chaotic_rewarder_0"
+ }
]
diff --git a/AndorsTrail/res/xml/debugmap.tmx b/AndorsTrail/res/xml/debugmap.tmx
index 224582cc9..04fabee08 100644
--- a/AndorsTrail/res/xml/debugmap.tmx
+++ b/AndorsTrail/res/xml/debugmap.tmx
@@ -226,6 +226,11 @@
+
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java
index 4652ba14a..f9a8aec25 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ConversationController.java
@@ -79,6 +79,9 @@ public final class ConversationController {
case actorCondition:
addActorConditionReward(player, effect.effectID, effect.value, result);
break;
+ case actorConditionImmunity:
+ addActorConditionImmunityReward(player, effect.effectID, effect.value, result);
+ break;
case skillIncrease:
addSkillReward(player, SkillCollection.SkillID.valueOf(effect.effectID), result);
break;
@@ -207,7 +210,20 @@ public final class ConversationController {
int magnitude = 1;
int duration = value;
if (value == ActorCondition.DURATION_FOREVER) duration = ActorCondition.DURATION_FOREVER;
- else if (value == ActorCondition.MAGNITUDE_REMOVE_ALL) magnitude = ActorCondition.MAGNITUDE_REMOVE_ALL;
+ else if (value == ActorCondition.MAGNITUDE_REMOVE_ALL) {
+ duration = ActorCondition.DURATION_NONE;
+ magnitude = ActorCondition.MAGNITUDE_REMOVE_ALL;
+ }
+
+ ActorConditionType conditionType = world.actorConditionsTypes.getActorConditionType(conditionTypeID);
+ ActorConditionEffect e = new ActorConditionEffect(conditionType, magnitude, duration, always);
+ controllers.actorStatsController.applyActorCondition(player, e);
+ result.actorConditions.add(e);
+ }
+
+ private void addActorConditionImmunityReward(Player player, String conditionTypeID, int value, ScriptEffectResult result) {
+ int duration = value;
+ int magnitude = ActorCondition.MAGNITUDE_REMOVE_ALL;
ActorConditionType conditionType = world.actorConditionsTypes.getActorConditionType(conditionTypeID);
ActorConditionEffect e = new ActorConditionEffect(conditionType, magnitude, duration, always);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java
index 583cf51c9..1cffcff6a 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/script/ScriptEffect.java
@@ -6,6 +6,7 @@ public final class ScriptEffect {
, dropList
, skillIncrease
, actorCondition
+ , actorConditionImmunity
, alignmentChange
, giveItem
, createTimer