Burthorpe immersion improvements
Implemented the roaming Burthorpe soldiers dialogues, including random Latin insults Implemented the other soldiers/sergeants/archers/guards busy messages. All 10 soldiers in the square now face north towards their sergeant
This commit is contained in:
@@ -2617,7 +2617,7 @@
|
||||
},
|
||||
{
|
||||
"npc_id": "1064",
|
||||
"loc_data": "{2895,3537,0,0,5}-{2894,3537,0,0,5}-{2893,3537,0,0,5}-{2892,3537,0,0,5}-{2891,3537,0,0,3}-{2891,3538,0,0,3}-{2892,3538,0,0,3}-{2893,3538,0,0,3}-{2894,3538,0,0,3}-{2895,3538,0,0,3}"
|
||||
"loc_data": "{2895,3537,0,0,1}-{2894,3537,0,0,1}-{2893,3537,0,0,1}-{2892,3537,0,0,1}-{2891,3537,0,0,1}-{2891,3538,0,0,1}-{2892,3538,0,0,1}-{2893,3538,0,0,1}-{2894,3538,0,0,1}-{2895,3538,0,0,1}"
|
||||
},
|
||||
{
|
||||
"npc_id": "1065",
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package content.region.asgarnia.burthorpe.dialogue
|
||||
|
||||
import core.api.*
|
||||
import core.game.interaction.IntType
|
||||
import core.game.interaction.InteractionListener
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Burthorpe Busy Soldiers Messages
|
||||
* @author ovenbread
|
||||
*
|
||||
* https://www.youtube.com/watch?v=5RfEUmIdH10 for some busy interactions
|
||||
* Covers the Sergeant/TrainingSoldier/EatingSoldier/Archer/Guard cases.
|
||||
* These NPCs do not talk to you as they are busy.
|
||||
*/
|
||||
class BurthorpeBusySoldierListener: InteractionListener {
|
||||
override fun defineListeners() {
|
||||
// For sergeants.
|
||||
on(intArrayOf(NPCs.SERGEANT_1061, NPCs.SERGEANT_1062), IntType.NPC, "talk-to") { player, npc ->
|
||||
sendMessage(player, "The Sergeant is busy training the soldiers.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
// For soldiers training.
|
||||
on(intArrayOf(NPCs.SOLDIER_1063, NPCs.SOLDIER_1064), IntType.NPC, "talk-to") { player, npc ->
|
||||
sendMessage(player, "The soldier is busy training.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
// For soldiers sitting around the fire.
|
||||
on(intArrayOf(NPCs.SOLDIER_1066, NPCs.SOLDIER_1067, NPCs.SOLDIER_1068), IntType.NPC, "talk-to") { player, npc ->
|
||||
sendMessage(player, "The soldier is busy eating.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
// For archers at the castle.
|
||||
on(intArrayOf(NPCs.ARCHER_1073, NPCs.ARCHER_1074), IntType.NPC, "talk-to") { player, npc ->
|
||||
sendMessage(player, "The archer won't talk whilst on duty.")
|
||||
return@on true
|
||||
}
|
||||
|
||||
// For soldiers at the castle.
|
||||
on(intArrayOf(NPCs.GUARD_1076, NPCs.GUARD_1077), IntType.NPC, "talk-to") { player, npc ->
|
||||
sendMessage(player, "The guard won't talk whilst on duty.")
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
}
|
||||
-69
@@ -1,69 +0,0 @@
|
||||
package content.region.asgarnia.burthorpe.dialogue;
|
||||
|
||||
import core.game.dialogue.DialoguePlugin;
|
||||
import core.game.dialogue.FacialExpression;
|
||||
import core.game.node.entity.npc.NPC;
|
||||
import core.plugin.Initializable;
|
||||
import core.game.node.entity.player.Player;
|
||||
|
||||
/**
|
||||
* Represents the burthorpe soldier dialogue plugin.
|
||||
* @author 'Vexia
|
||||
* @version 1.0
|
||||
*/
|
||||
@Initializable
|
||||
public final class BurthorpeSoldierDialogue extends DialoguePlugin {
|
||||
|
||||
/**
|
||||
* Constructs a new {@code BurthorpeSoldierDialogue} {@code Object}.
|
||||
*/
|
||||
public BurthorpeSoldierDialogue() {
|
||||
/**
|
||||
* empty.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new {@code BurthorpeSoldierDialogue} {@code Object}.
|
||||
* @param player the player.
|
||||
*/
|
||||
public BurthorpeSoldierDialogue(Player player) {
|
||||
super(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DialoguePlugin newInstance(Player player) {
|
||||
return new BurthorpeSoldierDialogue(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean open(Object... args) {
|
||||
npc = (NPC) args[0];
|
||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Hi!");
|
||||
stage = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handle(int interfaceId, int buttonId) {
|
||||
switch (stage) {
|
||||
case 0:
|
||||
interpreter.sendDialogues(npc, FacialExpression.HALF_GUILTY, "Vacca foeda.");
|
||||
stage = 1;
|
||||
break;
|
||||
case 1:
|
||||
interpreter.sendDialogues(player, FacialExpression.HALF_GUILTY, "Er...");
|
||||
stage = 2;
|
||||
break;
|
||||
case 2:
|
||||
end();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getIds() {
|
||||
return new int[] { 1065 };
|
||||
}
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
package content.region.asgarnia.burthorpe.dialogue
|
||||
|
||||
import core.game.dialogue.DialoguePlugin
|
||||
import core.game.dialogue.FacialExpression
|
||||
import core.game.node.entity.player.Player
|
||||
import core.plugin.Initializable
|
||||
import core.tools.END_DIALOGUE
|
||||
import core.tools.START_DIALOGUE
|
||||
import org.rs09.consts.NPCs
|
||||
|
||||
/**
|
||||
* Burthorpe Soldier Dialogue
|
||||
* @author 'Vexia
|
||||
* @author ovenbread
|
||||
*
|
||||
* https://www.youtube.com/watch?v=5RfEUmIdH10 for full interaction
|
||||
* https://www.youtube.com/watch?v=ew0wTgv-2Kc for insults
|
||||
*/
|
||||
@Initializable
|
||||
class BurthorpeSoldierDialogue(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
companion object {
|
||||
val latinInsults = arrayOf(
|
||||
"Mihi ignosce. Cum homine de cane debeo congredi.",
|
||||
"Errare humanum est.",
|
||||
"Die dulci freure.",
|
||||
"Carpe Diem!",
|
||||
"Te audire non possum. Musa sapientum fixa est in aure.",
|
||||
"Furnulum pani nolo.",
|
||||
"Fac ut gaudeam.",
|
||||
"Utinam barbari spatium proprium tuum invadant!",
|
||||
"Quantum materiae materietur marmota monax si marmota monax materiam possit materiari?",
|
||||
"Sona si Latine loqueris.",
|
||||
"Raptus Regaliter",
|
||||
"Nemo dat quod non habet.",
|
||||
"Ne auderis delere orbem rigidum meum!",
|
||||
"Da mihi sis bubulae frustum assae, solana tuberosa in modo gallico fricta, ac quassum lactatum coagulatum crassum.",
|
||||
"Cogito ergo sum.",
|
||||
"Vacca foeda.",
|
||||
"Di! Ecce hora! Uxor mea me necabit!",
|
||||
"Latine loqui coactus sum.",
|
||||
"Cave ne ante ullas catapultas ambules.",
|
||||
"Fac ut vivas!",
|
||||
"Noli me vocare, ego te vocabo.",
|
||||
"Meliora cogito.",
|
||||
"Braccae tuae aperiuntur.",
|
||||
"Vescere bracis meis.",
|
||||
"Corripe cervisiam!",
|
||||
);
|
||||
|
||||
val randomStages = arrayOf(10, 20, 30, 40, 50);
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
when (stage) {
|
||||
START_DIALOGUE -> playerl(FacialExpression.FRIENDLY, "Hello!").also { stage++ }
|
||||
1 -> npcl(FacialExpression.ANGRY, latinInsults.random()).also { stage = randomStages.random() }
|
||||
|
||||
10 -> playerl(FacialExpression.THINKING, "What?!").also { stage = END_DIALOGUE }
|
||||
|
||||
20 -> playerl(FacialExpression.THINKING, "Huh?!").also { stage = END_DIALOGUE }
|
||||
|
||||
30 -> playerl(FacialExpression.HALF_GUILTY, "Er...").also { stage = END_DIALOGUE }
|
||||
|
||||
40 -> playerl(FacialExpression.HALF_GUILTY, "OK...").also { stage = END_DIALOGUE }
|
||||
|
||||
50 -> playerl(FacialExpression.THINKING, "Are you insulting me in Latin?").also { stage++ }
|
||||
51 -> npcl(FacialExpression.FRIENDLY, "Yes!").also { stage++ }
|
||||
52 -> playerl(FacialExpression.HALF_GUILTY, "Hmm...").also { stage = END_DIALOGUE }
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
override fun newInstance(player: Player?): DialoguePlugin {
|
||||
return BurthorpeSoldierDialogue(player)
|
||||
}
|
||||
|
||||
override fun getIds(): IntArray {
|
||||
return intArrayOf(NPCs.SOLDIER_1065)
|
||||
}
|
||||
}
|
||||
@@ -34,28 +34,12 @@ public final class BurthorpeOptionPlugin extends OptionHandler {
|
||||
|
||||
@Override
|
||||
public Plugin<Object> newInstance(Object arg) throws Throwable {
|
||||
NPCDefinition.forId(1063).getHandlers().put("option:talk-to", this);// soldier
|
||||
NPCDefinition.forId(1061).getHandlers().put("option:talk-to", this);// sergant
|
||||
NPCDefinition.forId(1066).getHandlers().put("option:talk-to", this);// seated
|
||||
// soldier
|
||||
NPCDefinition.forId(1067).getHandlers().put("option:talk-to", this);// seated
|
||||
// soldier
|
||||
NPCDefinition.forId(1068).getHandlers().put("option:talk-to", this);// seated
|
||||
// soldier
|
||||
NPCDefinition.forId(1064).getHandlers().put("option:talk-to", this);// other
|
||||
// soldiers
|
||||
NPCDefinition.forId(1062).getHandlers().put("option:talk-to", this);// other
|
||||
// sergant
|
||||
SceneryDefinition.forId(7257).getHandlers().put("option:enter", this);// thieving
|
||||
// guide
|
||||
// trapdoor.
|
||||
SceneryDefinition.forId(7258).getHandlers().put("option:enter", this);// thieving
|
||||
// guide
|
||||
// passegeway.
|
||||
NPCDefinition.forId(1073).getHandlers().put("option:talk-to", this);
|
||||
NPCDefinition.forId(1074).getHandlers().put("option:talk-to", this);
|
||||
NPCDefinition.forId(1076).getHandlers().put("option:talk-to", this);
|
||||
NPCDefinition.forId(1077).getHandlers().put("option:talk-to", this);
|
||||
SceneryDefinition.forId(4624).getHandlers().put("option:climb-down", this);
|
||||
SceneryDefinition.forId(4627).getHandlers().put("option:climb-down", this);
|
||||
return this;
|
||||
@@ -89,31 +73,6 @@ public final class BurthorpeOptionPlugin extends OptionHandler {
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "talk-to":
|
||||
switch (id) {
|
||||
case 1064:
|
||||
case 1063:// training soldier.
|
||||
player.getPacketDispatch().sendMessage("The soldier is busy training.");
|
||||
break;
|
||||
case 1062:
|
||||
case 1061:// sergeant
|
||||
player.getPacketDispatch().sendMessage("The Sergeant is busy training the soldiers.");
|
||||
break;
|
||||
case 1066:// eating soldier.
|
||||
case 1067:// eating soldier.
|
||||
case 1068:// eating soldier.
|
||||
player.getPacketDispatch().sendMessage("The soldier is busy eating.");
|
||||
break;
|
||||
case 1073:
|
||||
case 1074:
|
||||
player.getPacketDispatch().sendMessage("The archer won't talk whilst on duty.");
|
||||
break;
|
||||
case 1076:
|
||||
case 1077:
|
||||
player.getPacketDispatch().sendMessage("The soldier won't talk whilst on duty.");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user