summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/externs.h1
-rw-r--r--src/lua_bind.c7
-rw-r--r--src/spells2.c3
-rw-r--r--src/spells3.c31
4 files changed, 26 insertions, 16 deletions
diff --git a/src/externs.h b/src/externs.h
index b041f960..1b8b0377 100644
--- a/src/externs.h
+++ b/src/externs.h
@@ -2380,7 +2380,6 @@ extern s16b add_new_power(cptr name, cptr desc, cptr gain, cptr lose, byte le
extern void find_position(int y, int x, int *yy, int *xx);
extern s16b add_new_gods(char *name);
-extern int get_lua_int(cptr name);
extern int get_lua_list_size(cptr list_name);
extern bool_ get_com_lua(cptr promtp, int *com);
diff --git a/src/lua_bind.c b/src/lua_bind.c
index adf0dd1e..f3c53b87 100644
--- a/src/lua_bind.c
+++ b/src/lua_bind.c
@@ -396,13 +396,6 @@ char lua_msg_box(cptr title)
-int get_lua_int(cptr name)
-{
- char buf[128];
- sprintf(buf, "return %s", name);
- return exec_lua(buf);
-}
-
int get_lua_list_size(cptr list_var)
{
char buf[128];
diff --git a/src/spells2.c b/src/spells2.c
index 8df782a4..cdd3af66 100644
--- a/src/spells2.c
+++ b/src/spells2.c
@@ -8385,9 +8385,8 @@ void channel_the_elements(int y, int x, int level)
case FEAT_SAND:
{
- int type, dur, FIERYAURA;
+ int type, dur;
- FIERYAURA = get_lua_int("FIERYAURA");
type = (get_level(FIERYAURA, 50, 1) >= 8) ? SHIELD_GREAT_FIRE : SHIELD_FIRE;
dur = randint(20) + level + get_skill(SKILL_AIR);
diff --git a/src/spells3.c b/src/spells3.c
index e6da0cf9..bb67ac61 100644
--- a/src/spells3.c
+++ b/src/spells3.c
@@ -1491,6 +1491,29 @@ static eff_type *geomancy_find_effect(eff_type effs[], int feat)
return NULL;
}
+static u32b dir_to_eff_flags(int dir)
+{
+ assert(dir >= 1);
+ assert(dir <= 9);
+
+ switch (dir)
+ {
+ case 1: return EFF_DIR1;
+ case 2: return EFF_DIR2;
+ case 3: return EFF_DIR3;
+ case 4: return EFF_DIR4;
+ case 5: return 0;
+ case 6: return EFF_DIR6;
+ case 7: return EFF_DIR7;
+ case 8: return EFF_DIR8;
+ case 9: return EFF_DIR9;
+ default:
+ assert(FALSE);
+ }
+ /* Default */
+ return 0;
+}
+
casting_result geomancy_elemental_wave(int item)
{
int dir = 0, y = 0, x = 0;
@@ -1531,11 +1554,7 @@ casting_result geomancy_elemental_wave(int item)
else
{
s16b typ = eff_ptr->low_effect;
- char buf[16];
- s32b EFF_DIR;
-
- sprintf(buf, "EFF_DIR%d", dir);
- EFF_DIR = get_lua_int(buf);
+ u32b dir_flag = dir_to_eff_flags(dir);
if (get_level_s(ELEMENTAL_WAVE, 50) >= 20)
{
@@ -1549,7 +1568,7 @@ casting_result geomancy_elemental_wave(int item)
eff_ptr->damage,
0,
6 + get_level_s(ELEMENTAL_WAVE, 20),
- EFF_WAVE + EFF_LAST + EFF_DIR);
+ EFF_WAVE + EFF_LAST + dir_flag);
return CAST_OBVIOUS;
}