summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/constants.conf4
-rw-r--r--npc/craft/options.txt91
2 files changed, 90 insertions, 5 deletions
diff --git a/db/constants.conf b/db/constants.conf
index 8ff1f1b67..0b40dba1f 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -4376,9 +4376,9 @@ constants_db: {
CRGROUP_SCRESIST: 512
CRGROUP_SCINFLICT: 1024
CRGROUP_MANAUSE: 2048
- CRGROUP_BOSSDEF: 4096
+ CRGROUP_BOSSATK: 4096
// Final tier
- CRGROUP_EXPUP: 8192
+ CRGROUP_FINAL: 8192
comment__: "Emotes"
// TMW2 Emotes
diff --git a/npc/craft/options.txt b/npc/craft/options.txt
index ab5b7dcf7..63757d3d9 100644
--- a/npc/craft/options.txt
+++ b/npc/craft/options.txt
@@ -198,10 +198,95 @@ function script csys_Generate {
.@stk+=1;
}
- // Clear the dummies
- array_remove(@csys_attr, DeathPenalty);
- array_remove(@csys_penalty, DeathPenalty);
+ /////////////////////////////////////////////////////////////
+ // Third tier
+ if (.@gid & CRGROUP_SCRESIST) {
+ .@lvl=CRAFTSYS[CRGROUP_SCRESIST];
+ if (.@lvl >= 1) {
+ array_push(@csys_attr, IOPT_SCRESIST_POISON);
+ }
+ if (.@lvl >= 2) {
+ array_push(@csys_attr, IOPT_SCRESIST_SILENCE);
+ }
+ if (.@lvl >= 3) {
+ array_push(@csys_attr, IOPT_SCRESIST_BLIND);
+ }
+ if (.@lvl >= 4) {
+ array_push(@csys_attr, IOPT_SCRESIST_CURSE);
+ }
+ array_push(@csys_penalty, VAR_ATTPOWER);
+ array_push(@csys_penalty, VAR_ATTMPOWER);
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
+ if (.@gid & CRGROUP_SCINFLICT) {
+ .@lvl=CRAFTSYS[CRGROUP_SCINFLICT];
+ if (.@lvl >= 1) {
+ array_push(@csys_attr, IOPT_SCPROVOKE_POISON);
+ }
+ if (.@lvl >= 2) {
+ array_push(@csys_attr, IOPT_SCPROVOKE_SILENCE);
+ }
+ if (.@lvl >= 3) {
+ array_push(@csys_attr, IOPT_SCPROVOKE_BLIND);
+ }
+ if (.@lvl >= 4) {
+ array_push(@csys_attr, IOPT_SCPROVOKE_CURSE);
+ }
+ array_push(@csys_penalty, VAR_ATTPOWER);
+ array_push(@csys_penalty, VAR_ATTMPOWER);
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
+ if (.@gid & CRGROUP_MANAUSE) {
+ .@lvl=CRAFTSYS[CRGROUP_MANAUSE];
+ if (.@lvl >= 1) {
+ array_push(@csys_attr, SP_DRAIN);
+ }
+ if (.@lvl >= 5) {
+ array_push(@csys_attr, DEC_SP_CONSUMPTION);
+ }
+ array_push(@csys_penalty, VAR_ATTPOWER);
+ array_push(@csys_penalty, VAR_ATTMPOWER);
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
+ if (.@gid & CRGROUP_BOSSATK) {
+ .@lvl=CRAFTSYS[CRGROUP_BOSSATK];
+ if (.@lvl >= 1) {
+ array_push(@csys_attr, HP_DRAIN);
+ }
+ if (.@lvl >= 5) {
+ array_push(@csys_attr, CLASS_DAMAGE_BOSS_TARGET);
+ }
+ array_push(@csys_penalty, VAR_ATTPOWER);
+ array_push(@csys_penalty, VAR_ATTMPOWER);
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
+
+ /////////////////////////////////////////////////////////////
+ // Final tier (needs minimum lv 3)
+ if (.@gid & CRGROUP_FINAL) {
+ .@lvl=CRAFTSYS[CRGROUP_FINAL];
+ if (.@lvl >= 3) {
+ array_push(@csys_attr, IOPT_EXPGAIN);
+ }
+
+ // Update averages
+ .@avg+=.@lvl;
+ .@stk+=1;
+ }
+ ///////////////////////////////
// Return the average level
if (!.@stk)
return 0;