@@ -4,6 +4,7 @@ import { loopingEvent } from '@engine/plugins';
44import { FIREMAKING_LOGS } from './data' ;
55import { canChain , canLight } from './chance' ;
66import { lightFire } from './light-fire' ;
7+ import { runFiremakingTask } from './firemaking-task' ;
78
89const action : itemOnItemActionHandler = ( details ) => {
910 const { player, usedItem, usedWithItem, usedSlot, usedWithSlot } = details ;
@@ -15,7 +16,6 @@ const action: itemOnItemActionHandler = (details) => {
1516 const log = usedItem . itemId !== itemIds . tinderbox ? usedItem : usedWithItem ;
1617 const removeFromSlot = usedItem . itemId !== itemIds . tinderbox ? usedSlot : usedWithSlot ;
1718 const skillInfo = FIREMAKING_LOGS . find ( l => l . logItem . gameId === log . itemId ) ;
18- const position = player . position ;
1919
2020 if ( ! skillInfo ) {
2121 player . sendMessage ( `Mishandled firemaking log ${ log . itemId } .` ) ;
@@ -30,43 +30,11 @@ const action: itemOnItemActionHandler = (details) => {
3030
3131 if ( player . metadata . lastFire && Date . now ( ) - player . metadata . lastFire < 1200 &&
3232 canChain ( skillInfo . requiredLevel , player . skills . firemaking . level ) ) {
33- lightFire ( player , position , worldItemLog , skillInfo . experienceGained ) ;
33+ lightFire ( player , player . position , worldItemLog , skillInfo . experienceGained ) ;
3434 } else {
3535 player . sendMessage ( `You attempt to light the logs.` ) ;
3636
37- let canLightFire = false ;
38- let elapsedTicks = 0 ;
39- const loop = loopingEvent ( { player } ) ;
40- loop . event . subscribe ( ( ) => {
41- if ( worldItemLog . removed ) {
42- loop . cancel ( ) ;
43- return ;
44- }
45-
46- if ( canLightFire ) {
47- loop . cancel ( ) ;
48- player . busy = true ;
49- setTimeout ( ( ) => lightFire ( player , position , worldItemLog , skillInfo . experienceGained ) , 1200 ) ;
50- return ;
51- }
52-
53- // @TODO check for existing location objects again (in-case one spawned here during this loop)
54- // @TODO check for tinderbox in-case it was removed
55-
56- if ( elapsedTicks === 0 || elapsedTicks % 12 === 0 ) {
57- player . playAnimation ( animationIds . lightingFire ) ;
58- }
59-
60- canLightFire = elapsedTicks > 10 && canLight ( skillInfo . requiredLevel , player . skills . firemaking . level ) ;
61-
62- if ( ! canLightFire && ( elapsedTicks === 0 || elapsedTicks % 4 === 0 ) ) {
63- player . playSound ( soundIds . lightingFire , 10 , 0 ) ;
64- } else if ( canLightFire ) {
65- player . playSound ( soundIds . fireLit , 7 ) ;
66- }
67-
68- elapsedTicks ++ ;
69- } ) ;
37+ runFiremakingTask ( player , worldItemLog , skillInfo ) ;
7038 }
7139} ;
7240
0 commit comments