@@ -2,7 +2,7 @@ import { itemOnItemActionHandler, ItemOnItemActionHook, ItemOnWorldItemActionHoo
2
2
import { itemIds } from '@engine/world/config' ;
3
3
import { FIREMAKING_LOGS } from './data' ;
4
4
import { canChain } from './chance' ;
5
- import { lightFire } from './light-fire' ;
5
+ import { canLightFireAtCurrentPosition , lightFire } from './light-fire' ;
6
6
import { runFiremakingTask } from './firemaking-task' ;
7
7
8
8
/**
@@ -11,27 +11,34 @@ import { runFiremakingTask } from './firemaking-task';
11
11
const tinderboxOnLogHandler : itemOnItemActionHandler = ( details ) => {
12
12
const { player, usedItem, usedWithItem, usedSlot, usedWithSlot } = details ;
13
13
14
- if ( player . metadata . lastFire && Date . now ( ) - player . metadata . lastFire < 600 ) {
14
+ if ( player . metadata . lastFire && Date . now ( ) - player . metadata . lastFire < 600 ) {
15
15
return ;
16
16
}
17
17
18
18
const log = usedItem . itemId !== itemIds . tinderbox ? usedItem : usedWithItem ;
19
19
const removeFromSlot = usedItem . itemId !== itemIds . tinderbox ? usedSlot : usedWithSlot ;
20
20
const skillInfo = FIREMAKING_LOGS . find ( l => l . logItem . gameId === log . itemId ) ;
21
21
22
- if ( ! skillInfo ) {
22
+ if ( ! skillInfo ) {
23
23
player . sendMessage ( `Mishandled firemaking log ${ log . itemId } .` ) ;
24
24
return ;
25
25
}
26
26
27
- // @TODO check for existing location objects
28
- // @TODO check firemaking level
27
+ if ( player . skills . firemaking . level < skillInfo . requiredLevel ) {
28
+ player . sendMessage ( `You need a Firemaking level of ${ skillInfo . requiredLevel } to light this log.` ) ;
29
+ return ;
30
+ }
31
+
32
+ if ( ! canLightFireAtCurrentPosition ( player ) ) {
33
+ player . sendMessage ( 'You cannot light a fire here.' ) ;
34
+ return ;
35
+ }
29
36
30
37
player . removeItem ( removeFromSlot ) ;
31
38
const worldItemLog = player . instance . spawnWorldItem ( log , player . position , { owner : player , expires : 300 } ) ;
32
39
33
40
// TODO (jameskmonger) chaining functionality needs documentation, I can't find anything about it online
34
- if ( player . metadata . lastFire && Date . now ( ) - player . metadata . lastFire < 1200 &&
41
+ if ( player . metadata . lastFire && Date . now ( ) - player . metadata . lastFire < 1200 &&
35
42
canChain ( skillInfo . requiredLevel , player . skills . firemaking . level ) ) {
36
43
lightFire ( player , player . position , worldItemLog , skillInfo . experienceGained ) ;
37
44
} else {
0 commit comments