Closed AnonymeMeow closed 7 months ago
原来的 EntityMaid.aiStep() 调用的 this.schedulePos.tick(this) 每40刻会调用一次 this.restrictTo(maid) ,而这个方法无论女仆是否在Home模式都会将女仆的 RESTRICT_RADIUS 设置成Home模式下当前时间工作状态对应的活动范围半径( MAID_xxx_RADIUS ),导致 MAID_NON_HOME_RANGE 不起作用。也就是说,当 MAID_xxx_RADIUS(WORK/IDLE/SLEEP) 设置得很大时,无论 MAID_NON_HOME_RANGE 是多少女仆都不会近距离跟随主人。
EntityMaid.aiStep()
this.schedulePos.tick(this)
this.restrictTo(maid)
RESTRICT_RADIUS
MAID_xxx_RADIUS
MAID_NON_HOME_RANGE
MAID_xxx_RADIUS(WORK/IDLE/SLEEP)
而且在非Home模式下原来的 this.schedulePos.tick(this) 在每次调用 this.restrictTo(maid) 之后因为女仆在非Home模式下 maid.isWithinRestriction() 必为 true 而立即返回,因此在非Home模式下 this.schedulePos.tick(this) 的作用就是调用了一次多余的 this.restrictTo(maid) 。那么在判断tick数是否为40的倍数的时候再判断一下女仆是否在Home模式下就可以解决这个问题了。
maid.isWithinRestriction()
true
这样修还是有一点问题,Maid在被load的时候还是会调用SchedulePos.restrictTo,因此把判断是否在Home模式移到restrictTo函数里面。
非常感谢,原来是在这一块出了问题
原来的
EntityMaid.aiStep()
调用的this.schedulePos.tick(this)
每40刻会调用一次this.restrictTo(maid)
,而这个方法无论女仆是否在Home模式都会将女仆的RESTRICT_RADIUS
设置成Home模式下当前时间工作状态对应的活动范围半径(MAID_xxx_RADIUS
),导致MAID_NON_HOME_RANGE
不起作用。也就是说,当MAID_xxx_RADIUS(WORK/IDLE/SLEEP)
设置得很大时,无论MAID_NON_HOME_RANGE
是多少女仆都不会近距离跟随主人。而且在非Home模式下原来的
this.schedulePos.tick(this)
在每次调用this.restrictTo(maid)
之后因为女仆在非Home模式下maid.isWithinRestriction()
必为true
而立即返回,因此在非Home模式下this.schedulePos.tick(this)
的作用就是调用了一次多余的this.restrictTo(maid)
。那么在判断tick数是否为40的倍数的时候再判断一下女仆是否在Home模式下就可以解决这个问题了。