summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/item_options.conf5
-rw-r--r--npc/craft/options.txt62
2 files changed, 63 insertions, 4 deletions
diff --git a/db/item_options.conf b/db/item_options.conf
index ca734d5c4..750aecfc9 100644
--- a/db/item_options.conf
+++ b/db/item_options.conf
@@ -1094,6 +1094,11 @@ item_options_db: (
Id: 198
Name: "IOPT_SCPROVOKE_BLIND"
Script: <" bonus2(bAddEff,Eff_Blind, getequippedoptioninfo(IT_OPT_VALUE)); ">
+},
+{
+ Id: 199
+ Name: "IOPT_CRITDMG"
+ Script: <" bonus(bCritAtkRate, getequippedoptioninfo(IT_OPT_VALUE)); ">
}
diff --git a/npc/craft/options.txt b/npc/craft/options.txt
index f652a6103..ab5b7dcf7 100644
--- a/npc/craft/options.txt
+++ b/npc/craft/options.txt
@@ -38,14 +38,16 @@ function script csys_Generate {
.@avg=0;
.@stk=0;
+ /////////////////////////////////////////////////////////////
+ // Basic tier
if (.@gid & CRGROUP_BASE) {
.@lvl=CRAFTSYS[CRGROUP_BASE];
if (.@lvl >= 1)
array_push(@csys_attr, VAR_STRAMOUNT);
if (.@lvl >= 2)
- array_push(@csys_attr, VAR_AGIAMOUNT);
- if (.@lvl >= 3)
array_push(@csys_attr, VAR_VITAMOUNT);
+ if (.@lvl >= 3)
+ array_push(@csys_attr, VAR_AGIAMOUNT);
if (.@lvl >= 4)
array_push(@csys_attr, VAR_INTAMOUNT);
if (.@lvl >= 5)
@@ -61,7 +63,9 @@ function script csys_Generate {
.@avg+=.@lvl;
.@stk+=1;
}
- // First tier
+
+ /////////////////////////////////////////////////////////////
+ // First tier
if (.@gid & CRGROUP_ATK) {
.@lvl=CRAFTSYS[CRGROUP_ATK];
if (.@lvl >= 1) {
@@ -127,7 +131,8 @@ function script csys_Generate {
.@stk+=1;
}
- // Second tier
+ /////////////////////////////////////////////////////////////
+ // Second tier
if (.@gid & CRGROUP_REGEN) {
.@lvl=CRAFTSYS[CRGROUP_REGEN];
if (.@lvl >= 1) {
@@ -143,6 +148,55 @@ function script csys_Generate {
.@avg+=.@lvl;
.@stk+=1;
}
+ if (.@gid & CRGROUP_SPEED) {
+ .@lvl=CRAFTSYS[CRGROUP_SPEED];
+ if (.@lvl >= 1) {
+ array_push(@csys_attr, VAR_PLUSASPD);
+ }
+ if (.@lvl >= 3) {
+ array_push(@csys_attr, VAR_PLUSASPDPERCENT);
+ }
+ if (.@lvl >= 5) {
+ array_push(@csys_attr, IOPT_WALKSPEED);
+ }
+ array_push(@csys_penalty, VAR_ATTPOWER);
+ array_push(@csys_penalty, VAR_ATTMPOWER);
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
+ if (.@gid & CRGROUP_DOUBLE) {
+ .@lvl=CRAFTSYS[CRGROUP_DOUBLE];
+ if (.@lvl >= 1) {
+ array_push(@csys_attr, IOPT_CRITDMG);
+ }
+ if (.@lvl >= 5) {
+ array_push(@csys_attr, IOPT_DOUBLEATTACK);
+ }
+ array_push(@csys_penalty, VAR_ATTPOWER);
+ array_push(@csys_penalty, VAR_ATTMPOWER);
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
+ if (.@gid & CRGROUP_MAXPC) {
+ .@lvl=CRAFTSYS[CRGROUP_MAXPC];
+ if (.@lvl >= 1) {
+ array_push(@csys_attr, VAR_MAXHPPERCENT);
+ array_push(@csys_attr, VAR_MAXSPPERCENT);
+ }
+ if (.@lvl >= 5) {
+ array_push(@csys_attr, CLASS_DAMAGE_BOSS_USER);
+ }
+ array_push(@csys_penalty, VAR_ATTPOWER);
+ array_push(@csys_penalty, VAR_ATTMPOWER);
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
// Clear the dummies
array_remove(@csys_attr, DeathPenalty);