Skip to content

Commit 3682726

Browse files
committed
Fixing various bugs in different plugins that had developed over time
1 parent e5afa17 commit 3682726

File tree

10 files changed

+69
-61
lines changed

10 files changed

+69
-61
lines changed

src/engine/config/npc-config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { filestore } from '@server/game/game-server';
44
import _ from 'lodash';
55
import { NpcConfig } from '@runejs/filestore';
66
import { logger } from '@runejs/core';
7-
import { QuestRequirement } from '@engine/action/action-pipeline';
7+
import { QuestRequirement } from '@engine/action';
88

99

1010
export interface NpcSkills {

src/engine/world/actor/actor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -699,11 +699,11 @@ export abstract class Actor {
699699
}
700700

701701
public get isPlayer(): boolean {
702-
return false;
702+
return this.type === 'player';
703703
}
704704

705705
public get isNpc(): boolean {
706-
return false;
706+
return this.type === 'npc';
707707
}
708708

709709
public get bonuses(): { offensive: OffensiveBonuses, defensive: DefensiveBonuses, skill: SkillBonuses } {

src/plugins/buttons/magic-attack.plugin.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { Player } from '@engine/world/actor/player/player';
2-
import { TaskExecutor } from '@engine/action/action-pipeline';
3-
import { MagicOnNPCActionHook, MagicOnNPCAction } from '@engine/action';
1+
import { Player } from '@engine/world/actor';
2+
import { TaskExecutor, MagicOnNPCActionHook, MagicOnNPCAction } from '@engine/action';
43
import { logger } from '@runejs/core';
54
import { loopingEvent } from '@engine/plugins';
65

src/plugins/buttons/magic-teleports.plugin.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
import { ButtonAction, buttonActionHandler, ButtonActionHook } from '@engine/action';
1+
import { ButtonAction, ButtonActionHook, TaskExecutor } from '@engine/action';
22
import { Player } from '@engine/world/actor/player/player';
33
import { Position } from '@engine/world/position';
44
import { animationIds } from '@engine/world/config/animation-ids';
55
import { soundIds } from '@engine/world/config/sound-ids';
66
import { gfxIds } from '@engine/world/config/gfx-ids';
7-
import { TaskExecutor } from '@engine/action/action-pipeline';
8-
import { loopingEvent } from '@engine/plugins';
97

108
enum Teleports {
119
Home = 591,

src/plugins/buttons/prayer.plugin.ts

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
1-
import { Player } from '@engine/world/actor/player/player';
2-
import { Position } from '@engine/world/position';
3-
import { animationIds } from '@engine/world/config/animation-ids';
4-
import { soundIds } from '@engine/world/config/sound-ids';
5-
import { gfxIds } from '@engine/world/config/gfx-ids';
6-
import { TaskExecutor } from '@engine/action/action-pipeline';
7-
import { widgetButtonIds } from '../skills/smithing/smelting-constants';
8-
import { logger } from '@runejs/core';
9-
import { PrayerAction, PrayerActionHook } from '@engine/action';
10-
import { widgets } from '@engine/config/config-handler';
11-
import { Prayer } from '../../engine/world/actor/prayer';
12-
import { EffectType } from '../../engine/world/actor/effect';
13-
import { prayers } from '../../engine/world/config/prayers';
14-
import { loopingEvent } from '@engine/plugins';
1+
import { TaskExecutor, PrayerAction, PrayerActionHook } from '@engine/action';
2+
import { widgets } from '@engine/config';
3+
import { prayers } from '@engine/world/config';
154
const buttonIds: number[] = [
165
0, // Home Teleport
176
1,

src/plugins/combat/combat.old.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { NpcInteractionAction, npcInteractionActionHandler } from '@engine/action/pipe/npc-interaction.action';
21
import { Actor } from '@engine/world/actor/actor';
32
import { Player } from '@engine/world/actor/player/player';
43
import { lastValueFrom, timer } from 'rxjs';
@@ -9,8 +8,6 @@ import { Npc } from '@engine/world/actor/npc';
98
import { itemIds } from '@engine/world/config/item-ids';
109
import { soundIds } from '@engine/world/config/sound-ids';
1110
import { findNpc } from '@engine/config/config-handler';
12-
import { TaskExecutor } from '../../engine/action/hook';
13-
import { wait } from '../../engine/world/task';
1411
import { activeWorld } from '@engine/world';
1512

1613

@@ -117,8 +114,10 @@ class Combat {
117114
activeWorld.playLocationSound(defender.position, defender instanceof Player ? soundIds.npc.human.playerDefence :
118115
soundIds.npc.human.maleDefence, 5);
119116

120-
const defenderState: 'alive' | 'dead' = defender.damage(actualHit);
117+
defender.damage(actualHit);
118+
const defenderState: 'alive' | 'dead' = 'alive';
121119

120+
// @ts-ignore
122121
if (defenderState === 'dead') {
123122
// @TODO death sounds
124123
this.processDeath(defender, attacker);
@@ -157,7 +156,7 @@ class Combat {
157156
instance = victim.instance;
158157
}
159158

160-
instance.spawnWorldItem(itemIds.bones, deathPosition,
159+
instance.spawnWorldItem(itemIds.bones.normal, deathPosition,
161160
{ owner: this.assailant instanceof Player ? this.assailant : undefined, expires: 300 });
162161
}
163162

src/plugins/combat/combat.plugin.ts

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,5 @@
1-
import { NpcInteractionAction, npcInteractionActionHandler } from '@engine/action';
2-
import { Actor } from '@engine/world/actor/actor';
3-
import { Player } from '@engine/world/actor/player/player';
4-
import { lastValueFrom, timer } from 'rxjs';
5-
import { World } from '@engine/world';
6-
import { filter, take } from 'rxjs/operators';
7-
import { animationIds } from '@engine/world/config/animation-ids';
8-
import { Npc } from '@engine/world/actor/npc';
9-
import { itemIds } from '@engine/world/config/item-ids';
10-
import { soundIds } from '@engine/world/config/sound-ids';
11-
import { findNpc } from '@engine/config/config-handler';
12-
import EventEmitter from 'events';
13-
import { logger } from '@runejs/core';
14-
import { TaskExecutor } from '@engine/action/action-pipeline';
15-
import { wait } from '../../engine/world/task';
16-
import { Behavior, BehaviorType } from '../../engine/world/actor/behaviors/behavior';
17-
import { activeWorld } from '@engine/world';
1+
import { NpcInteractionAction, TaskExecutor } from '@engine/action';
2+
import { BehaviorType } from '@engine/world/actor/behaviors';
183

194

205
//Kicking off combat - all subsequent action will be handed off to behaviors

src/plugins/skills/firemaking.plugin.ts

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,55 @@ import { soundIds } from '@engine/world/config/sound-ids';
99
import { animationIds } from '@engine/world/config/animation-ids';
1010
import { LandscapeObject } from '@runejs/filestore';
1111
import { loopingEvent } from '@engine/plugins';
12+
import { findItem, ItemDetails } from '@engine/config';
1213

1314

14-
const logs = [
15+
interface Burnable {
16+
logItem: ItemDetails;
17+
requiredLevel: number;
18+
experienceGained: number;
19+
}
20+
21+
const logs: Burnable[] = [
1522
{
16-
logId: itemIds.logs,
23+
logItem: findItem('rs:logs'),
1724
requiredLevel: 1,
18-
burnExp: 40
25+
experienceGained: 40
26+
},
27+
{
28+
logItem: findItem('rs:oak_logs'),
29+
requiredLevel: 15,
30+
experienceGained: 60
31+
},
32+
{
33+
logItem: findItem('rs:willow_logs'),
34+
requiredLevel: 30,
35+
experienceGained: 90
36+
},
37+
{
38+
logItem: findItem('rs:teak_logs'),
39+
requiredLevel: 35,
40+
experienceGained: 105
41+
},
42+
{
43+
logItem: findItem('rs:maple_logs'),
44+
requiredLevel: 45,
45+
experienceGained: 135
46+
},
47+
{
48+
logItem: findItem('rs:mahogany_logs'),
49+
requiredLevel: 50,
50+
experienceGained: 157.5
51+
},
52+
{
53+
logItem: findItem('rs:yew_logs'),
54+
requiredLevel: 60,
55+
experienceGained: 202.5
56+
},
57+
{
58+
logItem: findItem('rs:magic_logs'),
59+
requiredLevel: 75,
60+
experienceGained: 303.8
1961
}
2062
];
2163

@@ -78,7 +120,7 @@ const action: itemOnItemActionHandler = (details) => {
78120

79121
const log = usedItem.itemId !== itemIds.tinderbox ? usedItem : usedWithItem;
80122
const removeFromSlot = usedItem.itemId !== itemIds.tinderbox ? usedSlot : usedWithSlot;
81-
const skillInfo = logs.find(l => l.logId === log.itemId);
123+
const skillInfo = logs.find(l => l.logItem.gameId === log.itemId);
82124
const position = player.position;
83125

84126
if(!skillInfo) {
@@ -94,7 +136,7 @@ const action: itemOnItemActionHandler = (details) => {
94136

95137
if(player.metadata['lastFire'] && Date.now() - player.metadata['lastFire'] < 1200 &&
96138
canChain(skillInfo.requiredLevel, player.skills.firemaking.level)) {
97-
lightFire(player, position, worldItemLog, skillInfo.burnExp);
139+
lightFire(player, position, worldItemLog, skillInfo.experienceGained);
98140
} else {
99141
player.sendMessage(`You attempt to light the logs.`);
100142

@@ -110,7 +152,7 @@ const action: itemOnItemActionHandler = (details) => {
110152
if(canLightFire) {
111153
loop.cancel();
112154
player.metadata.busy = true;
113-
setTimeout(() => lightFire(player, position, worldItemLog, skillInfo.burnExp), 1200);
155+
setTimeout(() => lightFire(player, position, worldItemLog, skillInfo.experienceGained), 1200);
114156
return;
115157
}
116158

@@ -139,7 +181,7 @@ export default {
139181
hooks: [
140182
{
141183
type: 'item_on_item',
142-
items: logs.map(log => ({ item1: itemIds.tinderbox, item2: log.logId })),
184+
items: logs.map(log => ({ item1: itemIds.tinderbox, item2: log.logItem.gameId })),
143185
handler: action
144186
}
145187
]

src/plugins/skills/smithing/forging.plugin.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
import { itemOnObjectActionHandler, ItemOnObjectActionHook } from '@engine/action';
1+
import {
2+
itemOnObjectActionHandler, ItemOnObjectActionHook, ItemInteractionAction, ItemInteractionActionHook, TaskExecutor
3+
} from '@engine/action';
24
import { widgets } from '@engine/config/config-handler';
35
import { Skill } from '@engine/world/actor/skills';
46
import { anvilIds, bars, smithables, widgetItems } from '@plugins/skills/smithing/forging-constants';
57
import { itemIds } from '@engine/world/config/item-ids';
68
import { Smithable } from '@plugins/skills/smithing/forging-types';
7-
import {
8-
ItemInteractionAction,
9-
ItemInteractionActionHook
10-
} from '@engine/action';
119
import { Player } from '@engine/world/actor/player/player';
1210
import { findItem } from '@engine/config/config-handler';
13-
import { TaskExecutor } from '@engine/action/action-pipeline';
1411
import { Position } from '@engine/world/position';
1512

1613
/**

src/plugins/skills/woodcutting/woodcutting.plugin.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
ObjectInteractionAction,
3-
ObjectInteractionActionHook
3+
ObjectInteractionActionHook,
4+
TaskExecutor
45
} from '@engine/action';
56
import { Skill } from '@engine/world/actor/skills';
67
import { canInitiateHarvest } from '@engine/world/skill-util/harvest-skill';
@@ -11,9 +12,7 @@ import { colors } from '@engine/util/colors';
1112
import { rollBirdsNestType } from '@engine/world/skill-util/harvest-roll';
1213
import { soundIds } from '@engine/world/config/sound-ids';
1314
import { Axe, getAxe, HarvestTool } from '@engine/world/config/harvest-tool';
14-
import { TaskExecutor } from '@engine/action/action-pipeline';
1515
import { findItem } from '@engine/config/config-handler';
16-
import { Player } from '@engine/world/actor';
1716
import { activeWorld } from '@engine/world';
1817

1918

0 commit comments

Comments
 (0)