summaryrefslogtreecommitdiff
path: root/npc/items/alcohol.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/items/alcohol.txt')
-rw-r--r--npc/items/alcohol.txt44
1 files changed, 29 insertions, 15 deletions
diff --git a/npc/items/alcohol.txt b/npc/items/alcohol.txt
index 81c6a6bd0..ad91da8db 100644
--- a/npc/items/alcohol.txt
+++ b/npc/items/alcohol.txt
@@ -36,23 +36,30 @@
}
OnUse:
- if (@Alcohol <= 0) close;
- // Do you have enough vitality to hold your beer?
- .@vit=readparam(bVit);
- if (@Alcohol+ALC_THRESHOLD > .@vit) {
- dispbottom l("You vomit, you are too drunk for this to have effect anymore.");
- dispbottom l("Raise vitality to be able to drink even more.");
- sc_start SC_CONFUSION, 5000, 0, 10000, SCFLAG_NOAVOID; // Warning, forces user to use @resync!
+ if (@Alcohol <= 0 || @taste <= 0) {
+ Exception("Invalid alcoholic item, deleting without any effect.");
end;
}
+ // Do you have enough vitality to hold your beer?
+ // Skip this check on the first drink
+ if (ALC_THRESHOLD) {
+ .@vit=readparam(bVit);
+ if (@Alcohol+ALC_THRESHOLD > .@vit) {
+ dispbottom l("You vomit, you are too drunk for this to have effect anymore.");
+ dispbottom l("Raise vitality to be able to drink even more.");
+ sc_start SC_CONFUSION, 5000, 0, 10000, SCFLAG_NOAVOID; // Warning, forces user to use @resync!
+ end;
+ }
+ }
.@deltatime=60*1000; // How long (in ms) each Alcohol point works? (max. 100 points)
// Default value is 1 minute per alcohol point - you'll be somber after at most two hours.
// Taste is affected by users near you.
- // Each user raises exp bonus in 1%, capped to the beverage taste
+ // Each user raises exp bonus in 1.5%, capped to the beverage taste
// If you are with many people, drink a better beverage! ;-)
getmapxy(.@m$, .@x, .@y, 0);
- .@bonus=getareausers(.@m$, .@x-10, .@y-10, .@x+10, .@y+10)-1;
+ .@bonus=getareausers(.@m$, .@x-12, .@y-12, .@x+12, .@y+12)-1;
+ .@bonus=.@bonus*15/10;
@taste+=min(@taste, .@bonus);
// Alcohol EXP Bonus - ponderate average, so having more VIT doesn't means
@@ -73,19 +80,26 @@ OnUse:
// Recalculate Alcohol Threshold and time
ALC_THRESHOLD+=@Alcohol;
- if (ALC_DELAYTIME < gettimetick(2))
+ if (ALC_DELAYTIME < gettimetick(2)) {
ALC_DELAYTIME=gettimetick(2);
+ ALC_THRESHOLD=@Alcohol;
+ }
ALC_DELAYTIME+=@Alcohol*.@deltatime;
// Debug comment if you need to check stuff
//debugmes "%d %d | %d %d | f t ", remaining_bonus(SC_OVERLAPEXPUP, false), remaining_bonus(SC_OVERLAPEXPUP, 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_OVERLAPEXPUP, true)*2);
- @max=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2);
- @type=SC_ATTHASTE_INFINITY;
- @delay=@Alcohol*(.@deltatime/1000);
- doevent "inc_sc_bonus::OnUse";
+ .@delay=@Alcohol*(.@deltatime/1000);
+ .@min=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2);
+ .@max=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2);
+ SC_Bonus(.@delay, SC_ATTHASTE_INFINITY, .@min, .@max);
close;
}
+function script ALCReset {
+ if (ALC_DELAYTIME < gettimetick(2))
+ ALC_THRESHOLD=0;
+ end;
+}
+