You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I experiment this week-end on your RPG module. I thought that mixing what I had worked in my previous project with your LIMITED_AMMO_WEAPON would be interesting.
As it is, this template allows the use of ammo, but once the ammo is spent, the weapon is useless. Behold, the RELOADABLE_AMMO_WEAPON template and its associated command, which now allows rogues to resplenish their quivers, and special agents to reload their handguns.
Feel free to use the code in any way, shape, or form.
lang.verbs.reload = "Reload";
commands.push(
new Cmd('Reload', {
regex:/^(?:reload) (.+)$/,
rules:[cmdRules.isHeld, cmdRules.testManipulate],
objects:[
{scope:parser.isHeld, multiple:true},
],
script:function(objects) {
const weapon = objects[0][0];
if (!weapon.ammoName) {
msg("{nv:item:do:true} not have any valid ammunition.", {item: weapon});
return world.FAILED;
}
const ammo = w[weapon.ammoName];
const ammoHeld = ammo.countAtLoc("me");
if (ammoHeld == 0) {
msg("{pv:player:do:true} not have any {nm:item} on you.", {item: ammo});
return world.FAILED;
}
const quantityToFill = weapon.capacity - weapon.ammo;
if (ammoHeld >= quantityToFill) {
ammo.countableLocs['me'] -= quantityToFill;
weapon.ammo = weapon.capacity;
msg("{pv:player:do:true} use {show:quantity} {nm:ammo} to reload {nm:weapon}.", {weapon: weapon, ammo: ammo, quantity: quantityToFill})
} else {
ammo.countableLocs['me'] = false;
weapon.ammo += ammoHeld;
msg("{pv:player:do:true} use your {show:quantity} remaining {nm:ammo} to reload {nm:weapon}.", {weapon: weapon, ammo: ammo, quantity: ammoHeld})
}
return world.SUCCESS
},
})
)
const RELOADABLE_AMMO_WEAPON = function(damage, ammo){
const res = Object.assign({}, LIMITED_AMMO_WEAPON(damage, ammo))
res.capacity=ammo;
res.ammoName = false;
res.afterCreation = function(o) {
//o.oldRpgOnCreation(o)
o.verbFunctions.push(function(o, verbList) {
if (o.isAtLoc(player)) {
verbList.push(lang.verbs.reload)
}
})
}
return res;
}
createItem("handgun", RELOADABLE_AMMO_WEAPON("1d3+3", 6), {
loc: "me",
synonyms: ['gun', 'pistol'],
examine: "a nifty gun. It has {show:handgun:ammo} ammunition",
ammoName: "handgunAmmo",
});
createItem("handgunAmmo", COUNTABLE({me: 7}), {
regex:/^(\d+ )?(handgun round|rounds)?$/,
alias: "handgun round",
examine: "ammunition for the gun.",
});
The text was updated successfully, but these errors were encountered:
Hello Pix,
I experiment this week-end on your RPG module. I thought that mixing what I had worked in my previous project with your LIMITED_AMMO_WEAPON would be interesting.
As it is, this template allows the use of ammo, but once the ammo is spent, the weapon is useless. Behold, the RELOADABLE_AMMO_WEAPON template and its associated command, which now allows rogues to resplenish their quivers, and special agents to reload their handguns.
Feel free to use the code in any way, shape, or form.
The text was updated successfully, but these errors were encountered: