forked from 2009Scape/Server
Add sound effects for chivalry, piety, potionmaking, and pouchmaking.
This commit is contained in:
parent
e7515d404b
commit
a91fc0e7ca
8 changed files with 52 additions and 5 deletions
|
|
@ -204,6 +204,7 @@ public final class CS2Script extends Linkable {
|
|||
Object[] aobj = script.arguments;
|
||||
int j = ((Integer) aobj[0]).intValue();
|
||||
AssembledMethod currentMethod = ItemDefinition.getMethodByID(j);
|
||||
// System.out.printf("Method id: %d\n", j);
|
||||
if (null == currentMethod)
|
||||
return;
|
||||
ItemDefinition.scriptHeapCounter = 0;
|
||||
|
|
@ -270,7 +271,7 @@ public final class CS2Script extends Linkable {
|
|||
if (maxIterations < j2)
|
||||
throw new RuntimeException("Script exceeded max iterations");
|
||||
int opcode = instructions[++programCounter];
|
||||
//System.out.println("Instruction: " + programCounter + ". opcode is: " + opcode);
|
||||
// System.out.println("Instruction: " + programCounter + ". opcode is: " + opcode);
|
||||
if (opcode < 100) {
|
||||
if (opcode == CS2AsmOpcodes.PUSH_INT.getOp()) {
|
||||
ItemDefinition.intsStack[iStackCounter++] = instructionOperands[programCounter];
|
||||
|
|
@ -333,6 +334,7 @@ public final class CS2Script extends Linkable {
|
|||
if (opcode == 25) {
|
||||
int j3 = instructionOperands[programCounter];
|
||||
ItemDefinition.intsStack[iStackCounter++] = NPCDefinition.method1484(j3);
|
||||
// System.out.printf("varp lookup: %s %s\n", j3, ItemDefinition.intsStack[iStackCounter-1]);
|
||||
continue;
|
||||
}
|
||||
if (opcode == 27) {
|
||||
|
|
@ -964,6 +966,7 @@ public final class CS2Script extends Linkable {
|
|||
if (opcode == 3306) { //Another Skill update listener (spams 10? Possible TOTAL hp)
|
||||
int j9 = ItemDefinition.intsStack[--iStackCounter];
|
||||
ItemDefinition.intsStack[iStackCounter++] = Class3_Sub20.anIntArray2480[j9];
|
||||
//System.out.printf("3306 -> %s: %s\n", j9, ItemDefinition.intsStack[iStackCounter - 1]);
|
||||
continue;
|
||||
}
|
||||
if (3307 == opcode) { //Hover tooltip for Skill Interface, total xp for selected skill
|
||||
|
|
|
|||
|
|
@ -28,13 +28,33 @@ public class DumpingTools {
|
|||
//DumpToRuneStarCompatible("binaryScripts"); // Requires making the folder first. Probably the most useful one.
|
||||
}
|
||||
|
||||
public static String FriendlyOpcodeName(int i, int opcode, int arg) {
|
||||
switch(opcode) {
|
||||
case 0: return String.format("push_int %d (%08x)", arg, arg);
|
||||
case 6: return String.format("jmp +%d (%04d)", arg, i + 1 + arg);
|
||||
case 7: return String.format("bne +%d (%04d)", arg, i + 1 + arg);
|
||||
case 8: return String.format("be +%d (%04d)", arg, i + 1 + arg);
|
||||
case 9: return String.format("bgt +%d (%04d)", arg, i + 1 + arg);
|
||||
case 10: return String.format("blt +%d (%04d)", arg, i + 1 + arg);
|
||||
case 21: return String.format("ret %d", arg);
|
||||
case 25: return String.format("fetch_varbit %d", arg);
|
||||
case 33: return String.format("push_arg %d", arg);
|
||||
case 3305: return String.format("getcurrentlevel %d", arg);
|
||||
case 3306: return String.format("getstaticlevel %d", arg);
|
||||
case 3200: return String.format("playsfx %d", arg);
|
||||
default: return String.format("unknown (%d: %d)", opcode, arg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DumpOpcodesToTextFile(String outputFile, int methodID) {
|
||||
try {
|
||||
AssembledMethod a = ItemDefinition.getMethodByID(methodID);
|
||||
FileWriter myWriter = new FileWriter(outputFile);
|
||||
myWriter.write("Opcodes for Method" + methodID + ":\n");
|
||||
for (int opcode : a.assemblyInstructions) {
|
||||
myWriter.write(opcode + "\n");
|
||||
for (int i = 0; i < a.assemblyInstructions.length; i++) {
|
||||
int opcode = a.assemblyInstructions[i];
|
||||
int arg = a.instructionOperands[i];
|
||||
myWriter.write(String.format("%04d: %s\n", i, FriendlyOpcodeName(i, opcode, arg)));
|
||||
}
|
||||
myWriter.close();
|
||||
} catch (IOException e) {
|
||||
|
|
|
|||
|
|
@ -242,6 +242,16 @@ object DeveloperConsole {
|
|||
println("Error. Displays error message on login, account creation. Use: errormsg #")
|
||||
}
|
||||
}
|
||||
"dumpscript" -> {
|
||||
if (argSize == 2) {
|
||||
val i = clientCommand[1].toIntOrNull()
|
||||
if(i != null) {
|
||||
DumpingTools.DumpOpcodesToTextFile("script_${i}.cs2", i)
|
||||
}
|
||||
} else {
|
||||
println("Error. Dumps a cs2 script. Use: dumpscript #")
|
||||
}
|
||||
}
|
||||
"playsound" -> {
|
||||
if (argSize == 4) {
|
||||
val soundID = if (clientCommand[1].toIntOrNull() == null) 0 else clientCommand[1].toInt()
|
||||
|
|
|
|||
|
|
@ -43,6 +43,10 @@ public final class Prayer {
|
|||
*/
|
||||
public Prayer(Player player) {
|
||||
this.player = player;
|
||||
|
||||
// 1050 is checked client-side for making piety/chivalry disallowed sfx, likely due to the minigame requirement.
|
||||
// Set it here unconditionally until the minigame is implemented.
|
||||
player.varpManager.get(1050).setVarbit(1, 8);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@ public enum PrayerType {
|
|||
RETRIBUTION(46, 12, 98, 47, PrayerCategory.LIGHT_BROWN, PrayerCategory.MAGENTA, new Audio(10000)),
|
||||
REDEMPTION(49, 6, 99, 49, PrayerCategory.LIGHT_BROWN, PrayerCategory.MAGENTA, new Audio(2678)),
|
||||
SMITE(52, 2, 100, 51, PrayerCategory.LIGHT_BROWN, PrayerCategory.MAGENTA, new Audio(2685)),
|
||||
CHIVALRY(60, 2, 1052, 55, PrayerCategory.PINK, 1000,65, new SkillBonus(Skills.DEFENCE, 0.2), new SkillBonus(Skills.STRENGTH, 0.18), new SkillBonus(Skills.ATTACK, 0.15)),
|
||||
PIETY(70, 2, 1053, 57, PrayerCategory.PINK, 1000, 70 , new SkillBonus(Skills.DEFENCE, 0.25), new SkillBonus(Skills.STRENGTH, 0.23), new SkillBonus(Skills.ATTACK, 0.2));
|
||||
CHIVALRY(60, 2, 1052, 55, PrayerCategory.PINK, 3826, 65, new SkillBonus(Skills.DEFENCE, 0.2), new SkillBonus(Skills.STRENGTH, 0.18), new SkillBonus(Skills.ATTACK, 0.15)),
|
||||
PIETY(70, 2, 1053, 57, PrayerCategory.PINK, 3825, 70, new SkillBonus(Skills.DEFENCE, 0.25), new SkillBonus(Skills.STRENGTH, 0.23), new SkillBonus(Skills.ATTACK, 0.2));
|
||||
|
||||
/**
|
||||
* Represents the a cache of objects related to prayers in order to decide
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ public final class HerblorePulse extends SkillPulse<Item> {
|
|||
final Item item = potion.getProduct();
|
||||
player.getInventory().add(item);
|
||||
player.getPacketDispatch().sendMessage("You put the" + StringUtils.formatDisplayName(potion.getIngredient().getName().toLowerCase().replace("clean", "")) + " leaf into the vial of water.");
|
||||
player.getAudioManager().send(2608);
|
||||
if (cycles++ == 3) {
|
||||
player.animate(ANIMATION);
|
||||
cycles = 0;
|
||||
|
|
@ -133,6 +134,7 @@ public final class HerblorePulse extends SkillPulse<Item> {
|
|||
player.getInventory().add(item);
|
||||
player.getSkills().addExperience(Skills.HERBLORE, potion.getExperience(), true);
|
||||
player.getPacketDispatch().sendMessage("You mix the " + potion.getIngredient().getName().toLowerCase() + " into your potion.");
|
||||
player.getAudioManager().send(2608);
|
||||
player.animate(ANIMATION);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ public final class SummoningCreator {
|
|||
if (getDelay() == 1) {
|
||||
setDelay(4);
|
||||
player.getPacketDispatch().sendSceneryAnimation(object, Animation.create(8509));
|
||||
player.getAudioManager().send(4164); // 4277 also sounds the same
|
||||
return false;
|
||||
}
|
||||
player.getPacketDispatch().sendSceneryAnimation(object, Animation.create(8510));
|
||||
|
|
|
|||
|
|
@ -312,6 +312,13 @@ class MiscCommandSet : CommandSet(Command.Privilege.ADMIN){
|
|||
notify(player, "${VarbitDefinition.forObjectID(SceneryDefinition.forId(objectID).varbitID).configId}")
|
||||
}
|
||||
|
||||
define("define_varbit"){ player, args ->
|
||||
if(args.size < 2) {
|
||||
reject(player, "Syntax: ::define_varbit varbitId")
|
||||
}
|
||||
val varbitID = args[1].toInt()
|
||||
notify(player, "${varbitID}: ${VarbitDefinition.forId(varbitID, 0)}")
|
||||
}
|
||||
define("togglexp",Command.Privilege.STANDARD){ player, args ->
|
||||
val enabled = player.varpManager.get(2501).getVarbit(0)?.value == 1
|
||||
player.varpManager.get(2501).setVarbit(0,if(enabled) 0 else 1).send(player)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue