From 634aeeb9d58b01f9de6632a014a063ef0c4cf31e Mon Sep 17 00:00:00 2001 From: Chuck Miller Date: Fri, 25 Dec 2009 05:00:31 -0500 Subject: Used the "indent" C formatting program from GNU to do some clean ups The command options used was: -nbad -bap -sc -bl -blf -bli0 -cli4 -cbi0 -di5 -nbc -bls -ip2 -nut -ts4 -bap -i4 -sob -npsl --- src/map/magic-interpreter.h | 343 +++++++++++++++++++++++++++----------------- 1 file changed, 209 insertions(+), 134 deletions(-) (limited to 'src/map/magic-interpreter.h') diff --git a/src/map/magic-interpreter.h b/src/map/magic-interpreter.h index 4324e53..7db7d3e 100644 --- a/src/map/magic-interpreter.h +++ b/src/map/magic-interpreter.h @@ -31,11 +31,9 @@ #include "../common/timer.h" #include "../common/socket.h" -#define SPELLARG_NONE 0 /* No spell parameter */ -#define SPELLARG_PC 1 /* Spell parameter describes pc (defaults to self) */ -#define SPELLARG_STRING 2 /* Spell parameter describes pc (defaults to self) */ - - +#define SPELLARG_NONE 0 /* No spell parameter */ +#define SPELLARG_PC 1 /* Spell parameter describes pc (defaults to self) */ +#define SPELLARG_STRING 2 /* Spell parameter describes pc (defaults to self) */ /* ------ */ /* Values */ @@ -44,7 +42,7 @@ #define TY_UNDEF 0 #define TY_INT 1 #define TY_DIR 2 -#define TY_STRING 3 +#define TY_STRING 3 #define TY_ENTITY 5 #define TY_LOCATION 6 #define TY_AREA 7 @@ -68,9 +66,10 @@ struct area; struct spell; struct invocation; -typedef struct location { - int m; - int x, y; +typedef struct location +{ + int m; + int x, y; } location_t; #define AREA_LOCATION 0 @@ -78,36 +77,47 @@ typedef struct location { #define AREA_RECT 2 #define AREA_BAR 3 -typedef struct area { - union a { +typedef struct area +{ + union a + { location_t a_loc; - struct { location_t loc; int width, depth, dir; } a_bar; - struct { location_t loc; int width, height; } a_rect; - struct area * a_union[2]; + struct + { + location_t loc; + int width, depth, dir; + } a_bar; + struct + { + location_t loc; + int width, height; + } a_rect; + struct area *a_union[2]; } a; - int size; + int size; unsigned char ty; } area_t; -typedef struct val { - union v { - int v_int; +typedef struct val +{ + union v + { + int v_int; char *v_string; - entity_t *v_entity; /* Used ONLY during operation/function invocation; otherwise we use v_int */ + entity_t *v_entity; /* Used ONLY during operation/function invocation; otherwise we use v_int */ area_t *v_area; location_t v_location; - struct invocation *v_invocation; /* Used ONLY during operation/function invocation; otherwise we use v_int */ + struct invocation *v_invocation; /* Used ONLY during operation/function invocation; otherwise we use v_int */ struct spell *v_spell; } v; unsigned char ty; } val_t; - /* ----------- */ /* Expressions */ /* ----------- */ -#define MAX_ARGS 7 /* Max. # of args used in builtin primitive functions */ +#define MAX_ARGS 7 /* Max. # of args used in builtin primitive functions */ #define EXPR_VAL 0 #define EXPR_LOCATION 1 @@ -116,33 +126,54 @@ typedef struct val { #define EXPR_ID 4 #define EXPR_SPELLFIELD 5 -typedef struct e_location { +typedef struct e_location +{ struct expr *m, *x, *y; } e_location_t; -typedef struct e_area { - union a0 { +typedef struct e_area +{ + union a0 + { e_location_t a_loc; - struct { e_location_t loc; struct expr *width, *depth, *dir; } a_bar; - struct { e_location_t loc; struct expr *width, *height; } a_rect; - struct e_area* a_union[2]; + struct + { + e_location_t loc; + struct expr *width, *depth, *dir; + } a_bar; + struct + { + e_location_t loc; + struct expr *width, *height; + } a_rect; + struct e_area *a_union[2]; } a; unsigned char ty; } e_area_t; -typedef struct expr { - union e { +typedef struct expr +{ + union e + { val_t e_val; e_location_t e_location; e_area_t e_area; - struct { int id, line_nr, column; int args_nr; struct expr *args[MAX_ARGS]; } e_funapp; - int e_id; - struct { struct expr *expr; int id; } e_field; + struct + { + int id, line_nr, column; + int args_nr; + struct expr *args[MAX_ARGS]; + } e_funapp; + int e_id; + struct + { + struct expr *expr; + int id; + } e_field; } e; unsigned char ty; } expr_t; - /* ------- */ /* Effects */ /* ------- */ @@ -167,38 +198,64 @@ typedef struct expr { #define FOREACH_FILTER_SPELL 5 #define FOREACH_FILTER_NPC 6 -typedef struct effect { - struct effect* next; - union e0 { - struct { int id; expr_t *expr; } e_assign; - struct { int id; - expr_t *area; - struct effect* body; - unsigned char filter; } e_foreach; - struct { int id; - expr_t *start, *stop; - struct effect *body; } e_for; - struct { expr_t *cond; struct effect *true_branch, *false_branch; } e_if; - expr_t *e_sleep; /* sleep time */ +typedef struct effect +{ + struct effect *next; + union e0 + { + struct + { + int id; + expr_t *expr; + } e_assign; + struct + { + int id; + expr_t *area; + struct effect *body; + unsigned char filter; + } e_foreach; + struct + { + int id; + expr_t *start, *stop; + struct effect *body; + } e_for; + struct + { + expr_t *cond; + struct effect *true_branch, *false_branch; + } e_if; + expr_t *e_sleep; /* sleep time */ unsigned char *e_script; - struct { int id; int args_nr; int line_nr, column; expr_t *args[MAX_ARGS]; } e_op; - struct { int args_nr, *formals; expr_t **actuals; struct effect *body; } e_call; + struct + { + int id; + int args_nr; + int line_nr, column; + expr_t *args[MAX_ARGS]; + } e_op; + struct + { + int args_nr, *formals; + expr_t **actuals; + struct effect *body; + } e_call; } e; unsigned char ty; } effect_t; - /* ---------- */ -/* Components */ +/* Components */ /* ---------- */ -typedef struct component { +typedef struct component +{ struct component *next; - int item_id; - int count; + int item_id; + int count; } component_t; - /* ----------- */ /* Spellguards */ /* ----------- */ @@ -211,47 +268,51 @@ typedef struct component { #define SPELLGUARD_CASTTIME 5 #define SPELLGUARD_EFFECT 6 -typedef struct effect_set { - effect_t *effect, *at_trigger, *at_end; +typedef struct effect_set +{ + effect_t *effect, *at_trigger, *at_end; } effect_set_t; -typedef struct spellguard { +typedef struct spellguard +{ struct spellguard *next; - union s { + union s + { expr_t *s_condition; expr_t *s_mana; expr_t *s_casttime; component_t *s_components; component_t *s_catalysts; - struct spellguard *s_alt; /* either `next' or `s.s_alt' */ + struct spellguard *s_alt; /* either `next' or `s.s_alt' */ effect_set_t s_effect; } s; unsigned char ty; } spellguard_t; - /* ------ */ /* Spells */ /* ------ */ -typedef struct letdef { - int id; +typedef struct letdef +{ + int id; expr_t *expr; } letdef_t; -#define SPELL_FLAG_LOCAL (1 << 0) // spell associated not with caster but with place -#define SPELL_FLAG_SILENT (1 << 1) // spell invocation never uttered -#define SPELL_FLAG_NONMAGIC (1 << 2) // `magic word' only: don't require spellcasting ability +#define SPELL_FLAG_LOCAL (1 << 0) // spell associated not with caster but with place +#define SPELL_FLAG_SILENT (1 << 1) // spell invocation never uttered +#define SPELL_FLAG_NONMAGIC (1 << 2) // `magic word' only: don't require spellcasting ability -typedef struct spell { +typedef struct spell +{ char *name; char *invocation; - int index; // Relative location in the definitions file - int flags; - int arg; - int spellarg_ty; + int index; // Relative location in the definitions file + int flags; + int arg; + int spellarg_ty; - int letdefs_nr; + int letdefs_nr; letdef_t *letdefs; spellguard_t *spellguard; @@ -261,7 +322,8 @@ typedef struct spell { /* Anchors */ /* ------- */ -typedef struct teleport_anchor { +typedef struct teleport_anchor +{ char *name; char *invocation; expr_t *location; @@ -271,22 +333,22 @@ typedef struct teleport_anchor { /* The big config blob */ /* ------------------- */ -typedef struct { - int vars_nr; +typedef struct +{ + int vars_nr; char **var_name; - val_t *vars; /* Initial assignments, if any, or NULL */ + val_t *vars; /* Initial assignments, if any, or NULL */ - int obscure_chance; - int min_casttime; + int obscure_chance; + int min_casttime; - int spells_nr; + int spells_nr; spell_t **spells; - int anchors_nr; /* NEGATIVE iff we have sorted the anchors */ + int anchors_nr; /* NEGATIVE iff we have sorted the anchors */ teleport_anchor_t **anchors; } magic_conf_t; - /* Execution environment */ #define VAR_MIN_CASTTIME 0 @@ -301,7 +363,8 @@ typedef struct { struct magic_config; -typedef struct env { +typedef struct env +{ magic_conf_t *base_env; val_t *vars; } env_t; @@ -312,115 +375,127 @@ typedef struct env { #define CONT_STACK_FOR 1 #define CONT_STACK_PROC 2 -typedef struct cont_activation_record { +typedef struct cont_activation_record +{ effect_t *return_location; - union c { - struct { int id, ty; effect_t *body; int entities_nr; int *entities; int index; } c_foreach; - struct { int id; effect_t *body; int current; int stop; } c_for; - struct { int args_nr, *formals; val_t *old_actuals; } c_proc; + union c + { + struct + { + int id, ty; + effect_t *body; + int entities_nr; + int *entities; + int index; + } c_foreach; + struct + { + int id; + effect_t *body; + int current; + int stop; + } c_for; + struct + { + int args_nr, *formals; + val_t *old_actuals; + } c_proc; } c; unsigned char ty; } cont_activation_record_t; -typedef struct status_change_ref { - int sc_type; - int bl_id; +typedef struct status_change_ref +{ + int sc_type; + int bl_id; } status_change_ref_t; -#define INVOCATION_FLAG_BOUND (1 << 0) /* Bound directly to the caster (i.e., ignore its location) */ -#define INVOCATION_FLAG_ABORTED (1 << 1) /* Used `abort' to terminate */ -#define INVOCATION_FLAG_STOPATTACK (1 << 2) /* On magical attacks: if we run out of steam, stop attacking altogether */ +#define INVOCATION_FLAG_BOUND (1 << 0) /* Bound directly to the caster (i.e., ignore its location) */ +#define INVOCATION_FLAG_ABORTED (1 << 1) /* Used `abort' to terminate */ +#define INVOCATION_FLAG_STOPATTACK (1 << 2) /* On magical attacks: if we run out of steam, stop attacking altogether */ -typedef struct invocation { +typedef struct invocation +{ struct block_list bl; struct invocation *next_invocation; /* used for spells directly associated with a caster: they form a singly-linked list */ - int flags; + int flags; env_t *env; spell_t *spell; - int caster; /* this is the person who originally invoked the spell */ - int subject; /* when this person dies, the spell dies with it */ + int caster; /* this is the person who originally invoked the spell */ + int subject; /* when this person dies, the spell dies with it */ - int timer; /* spell timer, if any */ + int timer; /* spell timer, if any */ - int stack_size; + int stack_size; cont_activation_record_t stack[MAX_STACK_SIZE]; - int script_pos; /* Script position; if nonzero, resume the script we were running. */ + int script_pos; /* Script position; if nonzero, resume the script we were running. */ effect_t *current_effect; - effect_t *trigger_effect; /* If non-NULL, this is used to spawn a cloned effect based on the same environment */ - effect_t *end_effect; /* If non-NULL, this is executed when the spell terminates naturally, e.g. when all status changes have run out or all delays are over. */ + effect_t *trigger_effect; /* If non-NULL, this is used to spawn a cloned effect based on the same environment */ + effect_t *end_effect; /* If non-NULL, this is executed when the spell terminates naturally, e.g. when all status changes have run out or all delays are over. */ /* Status change references: for status change updates, keep track of whom we updated where */ - int status_change_refs_nr; + int status_change_refs_nr; status_change_ref_t *status_change_refs; } invocation_t; - extern magic_conf_t magic_conf; /* Global magic conf */ extern env_t magic_default_env; /* Fake default environment */ - /** * Adds a component selection to a component holder (which may initially be NULL) */ -void -magic_add_component(component_t **component_holder, int id, int count); +void magic_add_component (component_t ** component_holder, int id, int count); - -teleport_anchor_t * -magic_find_anchor(char *name); +teleport_anchor_t *magic_find_anchor (char *name); /** * The parameter `param' must have been dynamically allocated; ownership is transferred to the resultant env_t. */ -env_t * -spell_create_env(magic_conf_t *conf, spell_t *spell, character_t *caster, int spellpower, char *param); +env_t *spell_create_env (magic_conf_t * conf, spell_t * spell, + character_t * caster, int spellpower, char *param); -void -magic_free_env(env_t *env); +void magic_free_env (env_t * env); /** * near_miss is set to nonzero iff the spell only failed due to ephemereal issues (spell delay in effect, out of mana, out of components) */ -effect_set_t * -spell_trigger(spell_t *spell, character_t *caster, env_t *env, int *near_miss); +effect_set_t *spell_trigger (spell_t * spell, character_t * caster, + env_t * env, int *near_miss); -invocation_t * -spell_instantiate(effect_set_t *effect, env_t *env); +invocation_t *spell_instantiate (effect_set_t * effect, env_t * env); /** * Bind a spell to a subject (this is a no-op for `local' spells). */ -void -spell_bind(character_t *subject, invocation_t *invocation); - -int // 1 on failure -spell_unbind(character_t *subject, invocation_t *invocation); +void spell_bind (character_t * subject, invocation_t * invocation); +int // 1 on failure + spell_unbind (character_t * subject, invocation_t * invocation); /** * Clones a spell to run the at_effect field */ -invocation_t * -spell_clone_effect(invocation_t *source); +invocation_t *spell_clone_effect (invocation_t * source); -spell_t * -magic_find_spell(char *invocation); +spell_t *magic_find_spell (char *invocation); /* The following is used only by the parser: */ -typedef struct args_rec { - int args_nr; +typedef struct args_rec +{ + int args_nr; expr_t **args; } args_rec_t; -typedef struct { - char *name; - int args_nr; - int *args; - effect_t *body; +typedef struct +{ + char *name; + int args_nr; + int *args; + effect_t *body; } proc_t; #endif /* !defined (MAGIC_INTERPRETER_H) */ -- cgit v1.2.3-60-g2f50