diff options
Diffstat (limited to 'npc/items/alcohol.txt')
-rw-r--r-- | npc/items/alcohol.txt | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/npc/items/alcohol.txt b/npc/items/alcohol.txt index b5d187f67..cfe6258b3 100644 --- a/npc/items/alcohol.txt +++ b/npc/items/alcohol.txt @@ -55,26 +55,22 @@ OnUse: .@bonus=getareausers(.@m$, .@x-10, .@y-10, .@x+10, .@y+10)-1; @taste+=min(@taste*2, .@bonus); - // Put the delay in ms. Each Alcohol point is 10 minutes. + // Alcohol EXP Bonus - ponderate average, so having more VIT doesn't means + // more experience - only more time (be careful when mixing alcohol!) + .@v=remaining_bonus(SC_CASH_PLUSEXP, true); + .@t=remaining_bonus(SC_CASH_PLUSEXP, false)/1000; + + if (.@t) .@val1 = ponderate_avg(@taste, @Alcohol, .@v, .@t); + else .@val1 = @taste; + + // Put the delay in ms. .@delay = remaining_bonus(SC_CASH_PLUSEXP, false); - .@delay += @Alcohol*.@deltatime; - // Alcohol EXP Bonus sums to previous exp bonus - .@val1 = remaining_bonus(SC_CASH_PLUSEXP, true); - .@val1 += @taste; + .@delay = .@t + @Alcohol*.@deltatime; - // Reset EXP Bonus + // Reset EXP Bonus based on the new cumulative delay and average exp bonus sc_end SC_CASH_PLUSEXP; sc_start SC_CASH_PLUSEXP, .@delay, .@val1; - // Same goes for attack speed debuff - // Except malus is recalculated - .@delay = remaining_bonus(SC_ATTHASTE_INFINITY, false)+@Alcohol*.@deltatime; - .@val1 = (ALC_THRESHOLD+@Alcohol)/2; - - // Reset Attack Speed Debuff - sc_end SC_ATTHASTE_INFINITY; - sc_start SC_ATTHASTE_INFINITY, .@delay, -.@val1; - // Recalculate Alcohol Threshold and time ALC_THRESHOLD+=@Alcohol; if (ALC_DELAYTIME < gettimetick(2)) @@ -83,6 +79,13 @@ OnUse: // Debug comment if you need to check stuff //debugmes "%d %d | %d %d | f t ", remaining_bonus(SC_CASH_PLUSEXP, false), remaining_bonus(SC_CASH_PLUSEXP, true), remaining_bonus(SC_ATTHASTE_INFINITY, false), remaining_bonus(SC_ATTHASTE_INFINITY, true); + + // For debuff I'll use inc_sc_bonus utilities (exp gain = atk speed loss) + @min=-remaining_bonus(SC_CASH_PLUSEXP, true); + @max=-remaining_bonus(SC_CASH_PLUSEXP, true); + @type=SC_ATTHASTE_INFINITY; + @delay=@Alcohol*(.@deltatime/1000); + doevent "inc_sc_bonus::OnUse"; close; } |