Skip to content

Commit c357510

Browse files
committed
mining now supports essence and gem mining
1 parent 1afd59e commit c357510

File tree

4 files changed

+55
-12
lines changed

4 files changed

+55
-12
lines changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,16 @@ The server runs on the 435 revision of the game, which was a game update made on
109109
* Formula for success :heavy_check_mark:
110110
* Chopping Trees :heavy_check_mark:
111111
* Axes :heavy_check_mark:
112-
* Birds nests :x:
112+
* Birds nests :heavy_check_mark:
113113
* Stump ids :yellow_square:
114+
* Canoes :x:
114115
* Mining
115116
* Formula for success :heavy_check_mark:
116117
* Mining ores :heavy_check_mark:
117118
* Pickaxes :heavy_check_mark:
118-
* Random gems :x:
119-
* Gem ores :x:
120-
* Essence mining :x:
119+
* Random gems :heavy_check_mark:
120+
* Gem ores :heavy_check_mark:
121+
* Essence mining :heavy_check_mark:
121122
* Empty Rock ids :yellow_square:
122123
* Crafting
123124
* Spinning wheel :heavy_check_mark:

src/world/config/harvestable-object.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ export enum Ore {
106106
GOLD,
107107
MITHIL,
108108
ADAMANT,
109-
RUNITE
109+
RUNITE,
110+
RUNE_ESS,
111+
GEM
110112
}
111113

112114

@@ -223,6 +225,16 @@ const Ores: IHarvestable[] = [
223225
respawnHigh: 1200,
224226
baseChance: -10,
225227
break: 100
228+
},
229+
{
230+
objects: new Map<number, number>([[2111, 450]]), // Gem rocks
231+
itemId: 1625,
232+
level: 40,
233+
experience: 65.0,
234+
respawnLow: 200,
235+
respawnHigh: 400,
236+
baseChance: 30,
237+
break: 100
226238
}
227239
];
228240

src/world/skill-util/harvest-roll.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,24 @@ export function rollGemType(): Item {
3636
}
3737
return {itemId: itemId, amount: 1};
3838
}
39+
40+
export function rollGemRockResult(): Item {
41+
const roll = randomBetween(0, 127);
42+
let itemId;
43+
if (roll < 60) {
44+
itemId = 1625; // Uncut Opal
45+
} else if (roll < 90) {
46+
itemId = 1627; // Uncut Jade
47+
} else if (roll < 105) {
48+
itemId = 1629; // uncut topaz
49+
} else if (roll < 114) {
50+
itemId = 1623; // uncut sapphire
51+
} else if (roll < 119) {
52+
itemId = 1621; // uncut emerald
53+
} else if (roll < 124) {
54+
itemId = 1619; // uncut ruby
55+
} else {
56+
itemId = 1617; // uncut diamond
57+
}
58+
return {itemId: itemId, amount: 1};
59+
}

src/world/skill-util/harvest-skill.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { ObjectActionDetails } from '@server/world/actor/player/action/object-ac
1010
import { colors } from '@server/util/colors';
1111
import { checkForGemBoost } from '@server/world/skill-util/glory-boost';
1212
import { colorText } from '@server/util/strings';
13-
import { rollBirdsNestType, rollGemType } from '@server/world/skill-util/harvest-roll';
13+
import { rollBirdsNestType, rollGemRockResult, rollGemType } from '@server/world/skill-util/harvest-roll';
1414

1515
export function canInitiateHarvest(player: Player, target: IHarvestable, skill: Skill): undefined | HarvestTool {
1616
if (!target) {
@@ -19,7 +19,7 @@ export function canInitiateHarvest(player: Player, target: IHarvestable, skill:
1919
player.sendMessage('There is current no ore available in this rock.');
2020
break;
2121
default:
22-
player.sendMessage(colorText("HARVEST SKILL ERROR, PLEASE CONTACT DEVELOPERS", colors.red));
22+
player.sendMessage(colorText('HARVEST SKILL ERROR, PLEASE CONTACT DEVELOPERS', colors.red));
2323
break;
2424

2525

@@ -81,7 +81,15 @@ export function canInitiateHarvest(player: Player, target: IHarvestable, skill:
8181
}
8282

8383
export function handleHarvesting(details: ObjectActionDetails, tool: HarvestTool, target: IHarvestable, skill: Skill): void {
84-
let targetName: string = cache.itemDefinitions.get(target.itemId).name.toLowerCase();
84+
let itemToAdd = target.itemId;
85+
if (itemToAdd === 1436 && details.player.skills.hasLevel(Skill.MINING, 30)) {
86+
itemToAdd = 7936;
87+
}
88+
if (details.object.objectId === 2111 && details.player.skills.hasLevel(Skill.MINING, 30)) {
89+
itemToAdd = rollGemRockResult().itemId;
90+
}
91+
let targetName: string = cache.itemDefinitions.get(itemToAdd).name.toLowerCase();
92+
8593
switch (skill) {
8694
case Skill.MINING:
8795
targetName = targetName.replace(' ore', '');
@@ -113,7 +121,6 @@ export function handleHarvesting(details: ObjectActionDetails, tool: HarvestTool
113121
toolLevel = 2;
114122
}
115123
const percentNeeded = target.baseChance + toolLevel + details.player.skills.values[skill].level;
116-
details.player.sendMessage(`roll: ${successChance}, needed: ${percentNeeded}`);
117124
if (successChance <= percentNeeded) {
118125
if (details.player.inventory.hasSpace()) {
119126
let randomLoot = false;
@@ -123,15 +130,15 @@ export function handleHarvesting(details: ObjectActionDetails, tool: HarvestTool
123130
roll = randomBetween(1, checkForGemBoost(details.player));
124131
if (roll === 1) {
125132
randomLoot = true;
126-
details.player.sendMessage(colorText("You found a rare gem.", colors.red));
133+
details.player.sendMessage(colorText('You found a rare gem.', colors.red));
127134
details.player.giveItem(rollGemType());
128135
}
129136
break;
130137
case Skill.WOODCUTTING:
131138
roll = randomBetween(1, 256);
132139
if (roll === 1) {
133140
randomLoot = true;
134-
details.player.sendMessage(colorText("A bird's nest falls out of the tree.", colors.red));
141+
details.player.sendMessage(colorText('A bird\'s nest falls out of the tree.', colors.red));
135142
world.spawnWorldItem(rollBirdsNestType(), details.player.position, details.player, 300);
136143
}
137144
break;
@@ -145,7 +152,9 @@ export function handleHarvesting(details: ObjectActionDetails, tool: HarvestTool
145152
details.player.sendMessage(`You manage to chop some ${targetName}.`);
146153
break;
147154
}
148-
details.player.giveItem(target.itemId);
155+
156+
details.player.giveItem(itemToAdd);
157+
149158
}
150159
details.player.skills.addExp(skill, target.experience);
151160
if (randomBetween(0, 100) <= target.break) {

0 commit comments

Comments
 (0)