summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2012-03-06 21:49:18 +0100
committerBardur Arantsson <bardur@scientician.net>2012-03-29 20:41:39 +0200
commita27236516b0aa8761f70f009c78f4272dc0b735d (patch)
tree857a613c6b47c5b56526bc49580e1f7fe062b0e5
parent11188a21abde2b67cefc38e4579267b9bf72e00e (diff)
Refactor: Remove duplicate code for extracting 'xtra' flags
-rw-r--r--src/object1.c334
1 files changed, 115 insertions, 219 deletions
diff --git a/src/object1.c b/src/object1.c
index ee22d7e7..084f225b 100644
--- a/src/object1.c
+++ b/src/object1.c
@@ -819,11 +819,120 @@ void reset_visuals(void)
}
+/*
+ * Extract "xtra" flags from object.
+ */
+void object_flags_xtra(object_type *o_ptr, u32b *f2, u32b *f3, u32b *esp)
+{
+ switch (o_ptr->xtra1)
+ {
+ case EGO_XTRA_SUSTAIN:
+ {
+ /* Choose a sustain */
+ switch (o_ptr->xtra2 % 6)
+ {
+ case 0:
+ (*f2) |= (TR2_SUST_STR);
+ break;
+ case 1:
+ (*f2) |= (TR2_SUST_INT);
+ break;
+ case 2:
+ (*f2) |= (TR2_SUST_WIS);
+ break;
+ case 3:
+ (*f2) |= (TR2_SUST_DEX);
+ break;
+ case 4:
+ (*f2) |= (TR2_SUST_CON);
+ break;
+ case 5:
+ (*f2) |= (TR2_SUST_CHR);
+ break;
+ }
+
+ break;
+ }
+
+ case EGO_XTRA_POWER:
+ {
+ /* Choose a power */
+ switch (o_ptr->xtra2 % 11)
+ {
+ case 0:
+ (*f2) |= (TR2_RES_BLIND);
+ break;
+ case 1:
+ (*f2) |= (TR2_RES_CONF);
+ break;
+ case 2:
+ (*f2) |= (TR2_RES_SOUND);
+ break;
+ case 3:
+ (*f2) |= (TR2_RES_SHARDS);
+ break;
+ case 4:
+ (*f2) |= (TR2_RES_NETHER);
+ break;
+ case 5:
+ (*f2) |= (TR2_RES_NEXUS);
+ break;
+ case 6:
+ (*f2) |= (TR2_RES_CHAOS);
+ break;
+ case 7:
+ (*f2) |= (TR2_RES_DISEN);
+ break;
+ case 8:
+ (*f2) |= (TR2_RES_POIS);
+ break;
+ case 9:
+ (*f2) |= (TR2_RES_DARK);
+ break;
+ case 10:
+ (*f2) |= (TR2_RES_LITE);
+ break;
+ }
+
+ break;
+ }
+
+ case EGO_XTRA_ABILITY:
+ {
+ /* Choose an ability */
+ switch (o_ptr->xtra2 % 8)
+ {
+ case 0:
+ (*f3) |= (TR3_FEATHER);
+ break;
+ case 1:
+ (*f3) |= (TR3_LITE1);
+ break;
+ case 2:
+ (*f3) |= (TR3_SEE_INVIS);
+ break;
+ case 3:
+ (*esp) |= (ESP_ALL);
+ break;
+ case 4:
+ (*f3) |= (TR3_SLOW_DIGEST);
+ break;
+ case 5:
+ (*f3) |= (TR3_REGEN);
+ break;
+ case 6:
+ (*f2) |= (TR2_FREE_ACT);
+ break;
+ case 7:
+ (*f2) |= (TR2_HOLD_LIFE);
+ break;
+ }
+
+ break;
+ }
-
-
-
-
+ }
+}
/*
@@ -872,113 +981,7 @@ void object_flags(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3, u32b *f4, u3
/* Extra powers */
if (!(o_ptr->art_name))
{
- switch (o_ptr->xtra1)
- {
- case EGO_XTRA_SUSTAIN:
- {
- /* Choose a sustain */
- switch (o_ptr->xtra2 % 6)
- {
- case 0:
- (*f2) |= (TR2_SUST_STR);
- break;
- case 1:
- (*f2) |= (TR2_SUST_INT);
- break;
- case 2:
- (*f2) |= (TR2_SUST_WIS);
- break;
- case 3:
- (*f2) |= (TR2_SUST_DEX);
- break;
- case 4:
- (*f2) |= (TR2_SUST_CON);
- break;
- case 5:
- (*f2) |= (TR2_SUST_CHR);
- break;
- }
-
- break;
- }
-
- case EGO_XTRA_POWER:
- {
- /* Choose a power */
- switch (o_ptr->xtra2 % 11)
- {
- case 0:
- (*f2) |= (TR2_RES_BLIND);
- break;
- case 1:
- (*f2) |= (TR2_RES_CONF);
- break;
- case 2:
- (*f2) |= (TR2_RES_SOUND);
- break;
- case 3:
- (*f2) |= (TR2_RES_SHARDS);
- break;
- case 4:
- (*f2) |= (TR2_RES_NETHER);
- break;
- case 5:
- (*f2) |= (TR2_RES_NEXUS);
- break;
- case 6:
- (*f2) |= (TR2_RES_CHAOS);
- break;
- case 7:
- (*f2) |= (TR2_RES_DISEN);
- break;
- case 8:
- (*f2) |= (TR2_RES_POIS);
- break;
- case 9:
- (*f2) |= (TR2_RES_DARK);
- break;
- case 10:
- (*f2) |= (TR2_RES_LITE);
- break;
- }
-
- break;
- }
-
- case EGO_XTRA_ABILITY:
- {
- /* Choose an ability */
- switch (o_ptr->xtra2 % 8)
- {
- case 0:
- (*f3) |= (TR3_FEATHER);
- break;
- case 1:
- (*f3) |= (TR3_LITE1);
- break;
- case 2:
- (*f3) |= (TR3_SEE_INVIS);
- break;
- case 3:
- (*esp) |= (ESP_ALL);
- break;
- case 4:
- (*f3) |= (TR3_SLOW_DIGEST);
- break;
- case 5:
- (*f3) |= (TR3_REGEN);
- break;
- case 6:
- (*f2) |= (TR2_FREE_ACT);
- break;
- case 7:
- (*f2) |= (TR2_HOLD_LIFE);
- break;
- }
-
- break;
- }
- }
+ object_flags_xtra(o_ptr, f2, f3, esp);
}
}
@@ -1117,114 +1120,7 @@ void object_flags_known(object_type *o_ptr, u32b *f1, u32b *f2, u32b *f3, u32b *
if (!(o_ptr->art_name))
{
- /* Extra powers */
- switch (o_ptr->xtra1)
- {
- case EGO_XTRA_SUSTAIN:
- {
- /* Choose a sustain */
- switch (o_ptr->xtra2 % 6)
- {
- case 0:
- (*f2) |= (TR2_SUST_STR);
- break;
- case 1:
- (*f2) |= (TR2_SUST_INT);
- break;
- case 2:
- (*f2) |= (TR2_SUST_WIS);
- break;
- case 3:
- (*f2) |= (TR2_SUST_DEX);
- break;
- case 4:
- (*f2) |= (TR2_SUST_CON);
- break;
- case 5:
- (*f2) |= (TR2_SUST_CHR);
- break;
- }
-
- break;
- }
-
- case EGO_XTRA_POWER:
- {
- /* Choose a power */
- switch (o_ptr->xtra2 % 11)
- {
- case 0:
- (*f2) |= (TR2_RES_BLIND);
- break;
- case 1:
- (*f2) |= (TR2_RES_CONF);
- break;
- case 2:
- (*f2) |= (TR2_RES_SOUND);
- break;
- case 3:
- (*f2) |= (TR2_RES_SHARDS);
- break;
- case 4:
- (*f2) |= (TR2_RES_NETHER);
- break;
- case 5:
- (*f2) |= (TR2_RES_NEXUS);
- break;
- case 6:
- (*f2) |= (TR2_RES_CHAOS);
- break;
- case 7:
- (*f2) |= (TR2_RES_DISEN);
- break;
- case 8:
- (*f2) |= (TR2_RES_POIS);
- break;
- case 9:
- (*f2) |= (TR2_RES_DARK);
- break;
- case 10:
- (*f2) |= (TR2_RES_LITE);
- break;
- }
-
- break;
- }
-
- case EGO_XTRA_ABILITY:
- {
- /* Choose an ability */
- switch (o_ptr->xtra2 % 8)
- {
- case 0:
- (*f3) |= (TR3_FEATHER);
- break;
- case 1:
- (*f3) |= (TR3_LITE1);
- break;
- case 2:
- (*f3) |= (TR3_SEE_INVIS);
- break;
- case 3:
- (*esp) |= (ESP_ALL);
- break;
- case 4:
- (*f3) |= (TR3_SLOW_DIGEST);
- break;
- case 5:
- (*f3) |= (TR3_REGEN);
- break;
- case 6:
- (*f2) |= (TR2_FREE_ACT);
- break;
- case 7:
- (*f2) |= (TR2_HOLD_LIFE);
- break;
- }
-
- break;
- }
- }
+ object_flags_xtra(o_ptr, f2, f3, esp);
}
/* Hack - Res Chaos -> Res Confusion */