mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2026-08-01 14:39:13 -06:00
Added admin command ::infinitespecialmove [true|false] for infinite summoning familiar special move energy
Providing no argument to admin commands ::infinitespecial and ::allowaggro now toggles the value instead of rejecting
This commit is contained in:
parent
e611b1780b
commit
a643299b0c
2 changed files with 67 additions and 21 deletions
|
|
@ -82,6 +82,8 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
|||
* The amount of special points left.
|
||||
*/
|
||||
protected int specialPoints = 60;
|
||||
|
||||
public static final String INFINITE_SPECIAL_MOVE_ATTRIBUTE = "infinite-special-move";
|
||||
|
||||
/**
|
||||
* The pouch id.
|
||||
|
|
@ -494,7 +496,9 @@ public abstract class Familiar extends NPC implements Plugin<Object> {
|
|||
owner.getInventory().remove(new Item(scroll.getItemId()));
|
||||
playAudio(owner, Sounds.SPELL_4161);
|
||||
visualizeSpecialMove();
|
||||
updateSpecialPoints(specialCost);
|
||||
if (!owner.getAttribute(INFINITE_SPECIAL_MOVE_ATTRIBUTE, false)) {
|
||||
updateSpecialPoints(specialCost);
|
||||
}
|
||||
owner.getSkills().addExperience(Skills.SUMMONING, scroll.getExperience(), true);
|
||||
}
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package core.game.system.command.sets
|
||||
|
||||
import content.global.handlers.iface.*
|
||||
import content.global.skill.summoning.familiar.Familiar
|
||||
import content.global.skill.cooking.fermenting.BrewGrowth
|
||||
import content.global.skill.farming.timers.*
|
||||
import content.minigame.fishingtrawler.TrawlerLoot
|
||||
|
|
@ -40,6 +41,27 @@ import java.awt.HeadlessException
|
|||
import java.awt.Toolkit
|
||||
import java.awt.datatransfer.StringSelection
|
||||
|
||||
private const val INFINITE_SPECIAL_ATTRIBUTE = "infinite-special"
|
||||
private const val ALLOW_ADMIN_AGGRESSION_ATTRIBUTE = "/save:allow_admin_aggression"
|
||||
|
||||
private fun resolveBooleanToggle(player: Player, args: Array<String>, attribute: String): Boolean? {
|
||||
return when {
|
||||
args.size < 2 -> !player.getAttribute(attribute, false)
|
||||
args[1].equals("true", ignoreCase = true) -> true
|
||||
args[1].equals("false", ignoreCase = true) -> false
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
private fun setBooleanAttribute(player: Player, attribute: String, enabled: Boolean, label: String) {
|
||||
if (enabled) {
|
||||
setAttribute(player, attribute, true)
|
||||
} else {
|
||||
removeAttribute(player, attribute)
|
||||
}
|
||||
sendMessage(player, "$label is now ${if (enabled) "enabled" else "disabled"}.")
|
||||
}
|
||||
|
||||
@Initializable
|
||||
class MiscCommandSet : CommandSet(Privilege.ADMIN){
|
||||
override fun defineCommands() {
|
||||
|
|
@ -662,29 +684,49 @@ class MiscCommandSet : CommandSet(Privilege.ADMIN){
|
|||
notify(player,"No parent NPC found.")
|
||||
}
|
||||
}
|
||||
define("infinitespecial", Privilege.ADMIN, "::infinitespecial <true|false>", "Turns the infinite special-attack flag on or off for your player."){ player, args ->
|
||||
val usageStr = "Usage: ::infinitespecial true|false"
|
||||
if(args.size < 2){
|
||||
reject(player, usageStr)
|
||||
}
|
||||
when(args[1]){
|
||||
"true" -> player.setAttribute("infinite-special", true)
|
||||
"false" -> player.removeAttribute("infinite-special")
|
||||
else -> reject(player, usageStr)
|
||||
}
|
||||
}
|
||||
define("allowaggro", Privilege.ADMIN, "allowaggro true | false", "Toggle NPCs aggroing on you") { player, args ->
|
||||
val usageStr = "Usage: ::allowaggro true | false"
|
||||
if(args.size < 2) {
|
||||
notify(player, "Allow admin aggression is currently ${player.getAttribute("/save:allow_admin_aggression", false)}")
|
||||
define(
|
||||
"infinitespecial",
|
||||
Privilege.ADMIN,
|
||||
"::infinitespecial [true|false]",
|
||||
"Toggles infinite special attack energy for your player (special-attack flag)."
|
||||
) { player, args ->
|
||||
val enabled = resolveBooleanToggle(player, args, INFINITE_SPECIAL_ATTRIBUTE)
|
||||
if (enabled == null) {
|
||||
reject(player, "Usage: ::infinitespecial [true|false]")
|
||||
return@define
|
||||
}
|
||||
when(args[1]) {
|
||||
"true" -> player.setAttribute("/save:allow_admin_aggression", true)
|
||||
"false" -> player.setAttribute("/save:allow_admin_aggression", false)
|
||||
else -> reject(player, usageStr)
|
||||
setBooleanAttribute(player, INFINITE_SPECIAL_ATTRIBUTE, enabled, "Infinite special attack")
|
||||
}
|
||||
define(
|
||||
"infinitespecialmove",
|
||||
Privilege.ADMIN,
|
||||
"::infinitespecialmove [true|false]",
|
||||
"Toggles infinite Summoning familiar special move points for your player."
|
||||
) { player, args ->
|
||||
val enabled = resolveBooleanToggle(player, args, Familiar.INFINITE_SPECIAL_MOVE_ATTRIBUTE)
|
||||
if (enabled == null) {
|
||||
reject(player, "Usage: ::infinitespecialmove [true|false]")
|
||||
return@define
|
||||
}
|
||||
notify(player, "Setting aggro ${args[1]}")
|
||||
setBooleanAttribute(
|
||||
player,
|
||||
Familiar.INFINITE_SPECIAL_MOVE_ATTRIBUTE,
|
||||
enabled,
|
||||
"Infinite familiar special move energy"
|
||||
)
|
||||
}
|
||||
define(
|
||||
"allowaggro",
|
||||
Privilege.ADMIN,
|
||||
"::allowaggro [true|false]",
|
||||
"Toggles NPCs aggroing on you as an admin."
|
||||
) { player, args ->
|
||||
val enabled = resolveBooleanToggle(player, args, ALLOW_ADMIN_AGGRESSION_ATTRIBUTE)
|
||||
if (enabled == null) {
|
||||
reject(player, "Usage: ::allowaggro [true|false]")
|
||||
return@define
|
||||
}
|
||||
setBooleanAttribute(player, ALLOW_ADMIN_AGGRESSION_ATTRIBUTE, enabled, "Admin NPC aggression")
|
||||
}
|
||||
|
||||
define("rules", Privilege.STANDARD, "", "Shows the rules."){ player, _ ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue