Skip to content

Commit f55245e

Browse files
Merge pull request #176 from Promises/woodcutting
Better formula for woodcutting and mining
2 parents ab72d0e + 579815f commit f55245e

File tree

6 files changed

+330
-288
lines changed

6 files changed

+330
-288
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { ActionType, RunePlugin } from '@server/plugins/plugin';
2+
import { commandAction } from '@server/world/actor/player/action/input-command-action';
3+
import { openBankInterface } from '@server/plugins/objects/bank/bank-plugin';
4+
5+
const action: commandAction = (details) => {
6+
openBankInterface(details as any);
7+
};
8+
9+
export default new RunePlugin({
10+
type: ActionType.COMMAND,
11+
commands: [ 'bank' ],
12+
action
13+
});

src/world/actor/skills.ts

Lines changed: 49 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -39,29 +39,29 @@ export interface SkillDetail {
3939
}
4040

4141
export const skillDetails: SkillDetail[] = [
42-
{ name: 'Attack', advancementWidgetId: 158 },
43-
{ name: 'Defence', advancementWidgetId: 161 },
44-
{ name: 'Strength', advancementWidgetId: 175 },
45-
{ name: 'Hitpoints', advancementWidgetId: 167 },
46-
{ name: 'Ranged', advancementWidgetId: 171 },
47-
{ name: 'Prayer', advancementWidgetId: 170 },
48-
{ name: 'Magic', advancementWidgetId: 168 },
49-
{ name: 'Cooking', advancementWidgetId: 159 },
50-
{ name: 'Woodcutting', advancementWidgetId: 177 },
51-
{ name: 'Fletching', advancementWidgetId: 165 },
52-
{ name: 'Fishing', advancementWidgetId: 164 },
53-
{ name: 'Firemaking', advancementWidgetId: 163 },
54-
{ name: 'Crafting', advancementWidgetId: 160 },
55-
{ name: 'Smithing', advancementWidgetId: 174 },
56-
{ name: 'Mining', advancementWidgetId: 169 },
57-
{ name: 'Herblore', advancementWidgetId: 166 },
58-
{ name: 'Agility', advancementWidgetId: 157 },
59-
{ name: 'Thieving', advancementWidgetId: 176 },
60-
{ name: 'Slayer', advancementWidgetId: 173 },
61-
{ name: 'Farming', advancementWidgetId: 162 },
62-
{ name: 'Runecrafting', advancementWidgetId: 172 },
42+
{name: 'Attack', advancementWidgetId: 158},
43+
{name: 'Defence', advancementWidgetId: 161},
44+
{name: 'Strength', advancementWidgetId: 175},
45+
{name: 'Hitpoints', advancementWidgetId: 167},
46+
{name: 'Ranged', advancementWidgetId: 171},
47+
{name: 'Prayer', advancementWidgetId: 170},
48+
{name: 'Magic', advancementWidgetId: 168},
49+
{name: 'Cooking', advancementWidgetId: 159},
50+
{name: 'Woodcutting', advancementWidgetId: 177},
51+
{name: 'Fletching', advancementWidgetId: 165},
52+
{name: 'Fishing', advancementWidgetId: 164},
53+
{name: 'Firemaking', advancementWidgetId: 163},
54+
{name: 'Crafting', advancementWidgetId: 160},
55+
{name: 'Smithing', advancementWidgetId: 174},
56+
{name: 'Mining', advancementWidgetId: 169},
57+
{name: 'Herblore', advancementWidgetId: 166},
58+
{name: 'Agility', advancementWidgetId: 157},
59+
{name: 'Thieving', advancementWidgetId: 176},
60+
{name: 'Slayer', advancementWidgetId: 173},
61+
{name: 'Farming', advancementWidgetId: 162},
62+
{name: 'Runecrafting', advancementWidgetId: 172},
6363
null,
64-
{ name: 'Construction' }
64+
{name: 'Construction'}
6565
];
6666

6767
export interface SkillValue {
@@ -135,7 +135,7 @@ export class Skills extends SkillShortcuts {
135135
this[skillName] = new SkillShortcut(this, skillName as SkillName)
136136
);
137137

138-
if(values) {
138+
if (values) {
139139
this._values = values;
140140
} else {
141141
this._values = this.defaultValues();
@@ -148,18 +148,17 @@ export class Skills extends SkillShortcuts {
148148
}
149149

150150
public hasLevel(skill: number | SkillName, level: number, ignoreLevelModifications: boolean = false): boolean {
151-
const s = this.get(skill);
152-
return (ignoreLevelModifications ? s.level : s.modifiedLevel) >= level;
151+
return this.getLevel(skill, ignoreLevelModifications) >= level;
153152
}
154153

155154
public getLevelForExp(exp: number): number {
156155
let points = 0;
157156
let output = 0;
158157

159-
for(let i = 1; i <= 99; i++) {
158+
for (let i = 1; i <= 99; i++) {
160159
points += Math.floor(i + 300 * Math.pow(2, i / 7));
161160
output = Math.floor(points / 4);
162-
if(output >= exp) {
161+
if (output >= exp) {
163162
return i;
164163
}
165164
}
@@ -171,44 +170,44 @@ export class Skills extends SkillShortcuts {
171170
const currentExp = this.get(skill).exp;
172171
const currentLevel = this.getLevelForExp(currentExp);
173172
let finalExp = currentExp + (exp * serverConfig.expRate);
174-
if(finalExp > 200000000) {
173+
if (finalExp > 200000000) {
175174
finalExp = 200000000;
176175
}
177176

178177
const finalLevel = this.getLevelForExp(finalExp);
179178

180179
this.setExp(skill, finalExp);
181180

182-
if(this.actor instanceof Player) {
181+
if (this.actor instanceof Player) {
183182
this.actor.outgoingPackets.updateSkill(this.getSkillId(skill), finalLevel, finalExp);
184183
}
185184

186-
if(currentLevel !== finalLevel) {
185+
if (currentLevel !== finalLevel) {
187186
this.setLevel(skill, finalLevel);
188187

189-
if(this.actor instanceof Player) {
188+
if (this.actor instanceof Player) {
190189
const achievementDetails = skillDetails[this.getSkillId(skill)];
191-
if(!achievementDetails) {
190+
if (!achievementDetails) {
192191
return;
193192
}
194193

195194
this.actor.sendMessage(`Congratulations, you just advanced a ` +
196-
`${ achievementDetails.name.toLowerCase() } level.`);
195+
`${achievementDetails.name.toLowerCase()} level.`);
197196
this.showLevelUpDialogue(skill, finalLevel);
198197
}
199198
}
200199
}
201200

202201
public showLevelUpDialogue(skill: number | SkillName, level: number): void {
203-
if(!(this.actor instanceof Player)) {
202+
if (!(this.actor instanceof Player)) {
204203
return;
205204
}
206205

207206
const player = this.actor as Player;
208207
const achievementDetails = skillDetails[this.getSkillId(skill)];
209208
const widgetId = achievementDetails.advancementWidgetId;
210209

211-
if(!widgetId) {
210+
if (!widgetId) {
212211
return;
213212
}
214213

@@ -219,21 +218,25 @@ export class Skills extends SkillShortcuts {
219218
type: 'CHAT',
220219
closeOnWalk: true,
221220
beforeOpened: () => {
222-
player.modifyWidget(widgetId, { childId: 0,
223-
text: `<col=000080>Congratulations, you just advanced ${ startsWithVowel(skillName) ? 'an' : 'a' } ` +
224-
`${ skillName } level.</col>` });
225-
player.modifyWidget(widgetId, { childId: 1,
226-
text: `Your ${skillName} level is now ${ level }.` });
221+
player.modifyWidget(widgetId, {
222+
childId: 0,
223+
text: `<col=000080>Congratulations, you just advanced ${startsWithVowel(skillName) ? 'an' : 'a'} ` +
224+
`${skillName} level.</col>`
225+
});
226+
player.modifyWidget(widgetId, {
227+
childId: 1,
228+
text: `Your ${skillName} level is now ${level}.`
229+
});
227230
},
228231
afterOpened: () => {
229-
player.playGraphics({ id: gfxIds.levelUpFireworks, delay: 0, height: 125 });
232+
player.playGraphics({id: gfxIds.levelUpFireworks, delay: 0, height: 125});
230233
// @TODO sounds
231234
}
232235
});
233236
}
234237

235-
public getSkillId(skill: number | SkillName) : number {
236-
if(typeof skill === 'number') {
238+
public getSkillId(skill: number | SkillName): number {
239+
if (typeof skill === 'number') {
237240
return skill;
238241
} else {
239242
const skillName = skill.toString().toUpperCase();
@@ -242,7 +245,7 @@ export class Skills extends SkillShortcuts {
242245
}
243246

244247
public get(skill: number | SkillName): SkillValue {
245-
if(typeof skill === 'number') {
248+
if (typeof skill === 'number') {
246249
return this._values[skill];
247250
} else {
248251
const skillName = skill.toString().toUpperCase();
@@ -252,8 +255,8 @@ export class Skills extends SkillShortcuts {
252255

253256
private defaultValues(): SkillValue[] {
254257
const values: SkillValue[] = [];
255-
skillDetails.forEach(s => values.push({ exp: 0, level: 1 }));
256-
values[Skill.HITPOINTS] = { exp: 1154, level: 10 };
258+
skillDetails.forEach(s => values.push({exp: 0, level: 1}));
259+
values[Skill.HITPOINTS] = {exp: 1154, level: 10};
257260
return values;
258261
}
259262

src/world/config/harvest-tool.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ export interface HarvestTool {
55
itemId: number;
66
level: number;
77
animation: number;
8-
pulses: number;
9-
modifier: number;
108
}
119

1210

@@ -31,23 +29,23 @@ export enum Axe {
3129

3230

3331
const Pickaxes: HarvestTool[] = [
34-
{itemId: 1265, level: 1, animation: 625, pulses: 8, modifier: 0},
35-
{itemId: 1267, level: 1, animation: 626, pulses: 7, modifier: 0},
36-
{itemId: 1269, level: 6, animation: 627, pulses: 6, modifier: 0},
37-
{itemId: 1273, level: 21, animation: 629, pulses: 5, modifier: 0},
38-
{itemId: 1271, level: 31, animation: 628, pulses: 4, modifier: 0},
39-
{itemId: 1275, level: 41, animation: 624, pulses: 3, modifier: 0}
32+
{itemId: 1265, level: 1, animation: 625},
33+
{itemId: 1267, level: 1, animation: 626},
34+
{itemId: 1269, level: 6, animation: 627},
35+
{itemId: 1273, level: 21, animation: 629},
36+
{itemId: 1271, level: 31, animation: 628},
37+
{itemId: 1275, level: 41, animation: 624}
4038
];
4139

4240

4341
const Axes: HarvestTool[] = [
44-
{itemId: 1351, level: 1, animation: 879, pulses: 8, modifier: 0},
45-
{itemId: 1349, level: 1, animation: 877, pulses: 7, modifier: 0},
46-
{itemId: 1353, level: 6, animation: 875, pulses: 6, modifier: 0},
47-
{itemId: 1355, level: 21, animation: 871, pulses: 5, modifier: 0},
48-
{itemId: 1357, level: 31, animation: 869, pulses: 4, modifier: 0},
49-
{itemId: 1359, level: 41, animation: 867, pulses: 3, modifier: 0},
50-
{itemId: 6739, level: 61, animation: 2846, pulses: 3, modifier: 10}
42+
{itemId: 1351, level: 1, animation: 879},
43+
{itemId: 1349, level: 1, animation: 877},
44+
{itemId: 1353, level: 6, animation: 875},
45+
{itemId: 1355, level: 21, animation: 871},
46+
{itemId: 1357, level: 31, animation: 869},
47+
{itemId: 1359, level: 41, animation: 867},
48+
{itemId: 6739, level: 61, animation: 2846}
5149
];
5250

5351
/**

0 commit comments

Comments
 (0)