ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/genkeywords
Revision: 1.19
Committed: Thu Apr 28 12:11:04 2011 UTC (13 years, 1 month ago) by elmex
Branch: MAIN
Changes since 1.18: +1 -0 lines
Log Message:
added is_quad flag.

File Contents

# User Rev Content
1 root 1.1 #!/opt/bin/perl
2    
3 root 1.12 #
4     # This file is part of Deliantra, the Roguelike Realtime MMORPG.
5     #
6     # Copyright (©) 2005,2006,2007,2008,2009 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
7     #
8     # Deliantra is free software: you can redistribute it and/or modify it under
9     # the terms of the Affero GNU General Public License as published by the
10     # Free Software Foundation, either version 3 of the License, or (at your
11     # option) any later version.
12     #
13     # This program is distributed in the hope that it will be useful,
14     # but WITHOUT ANY WARRANTY; without even the implied warranty of
15     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16     # GNU General Public License for more details.
17     #
18     # You should have received a copy of the Affero GNU General Public License
19     # and the GNU General Public License along with this program. If not, see
20     # <http://www.gnu.org/licenses/>.
21     #
22     # The authors can be reached via e-mail to <support@deliantra.net>
23     #
24    
25 root 1.1 my %ARG = @ARGV;
26    
27     use List::Util;
28    
29     # todo: gather dynamically
30     my @kw = qw(
31     no_pass
32     walk_on
33     walk_off
34     fly_on
35     fly_off
36     flying
37    
38 root 1.3 gender
39 root 1.10 hintmode
40 root 1.1 attack_skill
41     ranged_skill
42    
43     ac
44     activate_on_push
45     activate_on_release
46     alive
47     anim_speed
48     animation
49     applied
50     arch
51     armour
52     attach
53     attack_movement
54     attacktype
55     auto_apply
56     been_applied
57     berserk
58     blocksview
59     body_range
60     body_arm
61     body_torso
62     body_head
63     body_neck
64     body_skill
65     body_finger
66     body_shoulder
67     body_foot
68     body_hand
69     body_wrist
70     body_waist
71     body_shield
72     body_combat
73     can_apply
74     can_cast_spell
75     can_roll
76     can_see_in_dark
77     can_use_armour
78     can_use_bow
79     can_use_horn
80     can_use_range
81     can_use_ring
82     can_use_rod
83     can_use_scroll
84     can_use_shield
85     can_use_skill
86     can_use_wand
87     can_use_weapon
88     carrying
89     casting_time
90     cha
91     changing
92     client_type
93     con
94     confused
95     connected
96     container
97     cursed
98     custom_name
99     dam
100     dam_modifier
101     damned
102     destroy_on_death
103     dex
104     direction
105     duration
106     duration_modifier
107     editable
108     editor_folder
109     elevation
110     end
111     endlore
112     endmsg
113     exp
114     expmul
115     face
116     food
117     friendly
118     gen_sp_armour
119     generator
120     glow_radius
121     grace
122     has_ready_bow
123     has_ready_scroll
124     has_ready_skill
125     has_ready_weapon
126     has_ready_range
127     hitback
128     hp
129     identified
130     immune
131     inherit
132     int
133     inv_locked
134     invisible
135     is_animated
136     is_blind
137     is_buildable
138     is_cauldron
139     is_dust
140     is_floor
141     is_hilly
142     is_lightable
143     is_thrown
144     is_turnable
145     is_used_up
146     is_water
147     is_wooded
148     item_power
149     known_cursed
150     known_magical
151     last_eat
152     last_grace
153     last_heal
154     last_sp
155     level
156     lifesave
157     lore
158     luck
159     magic
160     make_invisible
161     material
162     materialname
163     maxgrace
164     maxhp
165     maxsp
166     monster
167     more
168     move_allow
169     move_block
170     move_off
171     move_on
172     move_slow
173     move_slow_penalty
174     move_state
175     move_type
176     msg
177     name
178     name_pl
179     neutral
180     no_attack
181     no_damage
182     no_drop
183     no_magic
184     no_pick
185     no_skill_ident
186     no_steal
187     no_strength
188     nrof
189     obj_original
190     object
191     oid
192     one_hit
193     only_attack
194     other_arch
195     overlay_floor
196 root 1.8 owner
197 root 1.1 path_attuned
198     path_denied
199     path_repelled
200     perm_exp
201     pick_up
202     player_sold
203     pow
204     precious
205     protected
206 elmex 1.19 is_quad
207 root 1.1 race
208     random_move
209     random_movement
210 root 1.14 random_speed
211 root 1.1 randomitems
212     range
213     range_modifier
214     reflect_missile
215     reflect_spell
216     reflecting
217     resist_acid
218     resist_blind
219     resist_cancellation
220     resist_chaos
221     resist_cold
222     resist_confusion
223     resist_counterspell
224     resist_death
225     resist_deplete
226     resist_disease
227     resist_drain
228     resist_electricity
229     resist_fear
230     resist_fire
231     resist_ghosthit
232     resist_godpower
233     resist_holyword
234     resist_internal
235     resist_life_stealing
236     resist_magic
237     resist_paralyze
238     resist_physical
239     resist_poison
240     resist_slow
241     resist_turn_undead
242     resist_weaponmagic
243     run_away
244     scared
245     see_anywhere
246     see_invisible
247     skill
248     slaying
249     sleep
250     slow_move
251 root 1.5 sound
252 root 1.7 sound_destroy
253 root 1.1 smoothlevel
254     sp
255     speed
256     speed_left
257 root 1.14 sl
258 root 1.1 splitting
259     stand_still
260     startequip
261     state
262     stealth
263     str
264     subtype
265 root 1.9 tag
266 root 1.1 tear_down
267     title
268     treasure_env
269     type
270     unaggressive
271     undead
272     unique
273     unpaid
274     use_content_on_gen
275     uuid
276     value
277     vulnerable
278     wc
279     weapontype
280     weight
281     will_apply
282     wis
283     x
284     xrays
285     y
286    
287     maplore
288     endmaplore
289     enter_x
290     enter_y
291     width
292     height
293     reset_timeout
294     reset_time
295     swap_time
296     difficulty
297     darkness
298     fixed_resettime
299     per_player
300     per_party
301 root 1.2 no_reset
302 root 1.1 region
303     shopitems
304     shopgreed
305     shopmin
306     shopmax
307     shoprace
308     outdoor
309     tile_path_1
310     tile_path_2
311     tile_path_3
312     tile_path_4
313 root 1.18 tile_path_5
314     tile_path_6
315 root 1.1
316     file_format_version
317    
318     map
319     savebed_map
320     bed_x
321     bed_y
322     password
323     bowtype
324     petmode
325     gen_hp
326     gen_sp
327     gen_grace
328     listening
329     peaceful
330     digestion
331     pickup
332     outputs_sync
333     outputs_count
334     usekeys
335     unapply
336     weapon_sp
337     weapon_sp_left
338     lev_array
339     endplst
340    
341     visibility
342     magicmap
343    
344     parent
345     longname
346     jail_map
347     jail_x
348     jail_y
349     portal_map
350     fallback
351     nomore
352    
353     chance
354     mods
355     diff
356     saves
357     description
358     density
359     damage
360    
361     anim
362     mina
363     facings
364     player
365    
366     allowed
367     keycode
368     trans
369     yield
370     ingred
371     cauldron
372    
373     Str
374     Dex
375     Con
376     Wis
377     Cha
378     Int
379     Pow
380    
381     treasure
382     treasureone
383     list
384     change_name
385     change_title
386     change_slaying
387     yes
388     no
389 root 1.15
390     max_level
391 root 1.16
392     authour
393     size
394     index
395 root 1.1 );
396    
397     open GPERF, "|-", "exec $ARG{GPERF} -m50 >kw_hash.h"
398     or die "$ARGV{GPERF}: $!";
399    
400     print GPERF <<EOF;
401     %language=C++
402     %enum
403     %define class-name kw_lex
404     %define lookup-function-name match
405     %struct-type
406     %compare-strncmp
407     %delimiters=,
408     struct keyword_idx { const char *name; enum keyword index; };
409     %%
410     EOF
411    
412     for (@kw) {
413     printf GPERF "%s,%s\n", $_, "KW_$_";
414     }
415    
416     print GPERF <<EOF;
417     %%
418     extern const char *const keyword_str [] = {
419     "<EOF>",
420     "<ERROR>",
421     EOF
422    
423     for (@kw) {
424     printf GPERF " \"%s\",\n", $_;
425     }
426    
427     print GPERF "};\n";
428    
429     printf GPERF "\nextern const unsigned char keyword_len [] = { 5, 7, %s };\n\n",
430     join ", ", map length, @kw;
431    
432     close GPERF
433     or die "$ARG{GPERF}: failed to run";
434    
435     open KW, ">", "keyword.h";
436    
437     print KW <<EOF;
438     //
439     // AUTOGENERATED: this is a generated file
440     // edit include/genkeywords instead
441     //
442    
443     #ifndef KW_H__
444     #define KW_H__
445    
446     enum keyword {
447     KW_NULL = 0,
448     KW_EOF = 0,
449     KW_ERROR,
450     EOF
451    
452     for (@kw) {
453     printf KW " %s,\n", "KW_$_",
454     }
455    
456     print KW <<EOF;
457     NUM_KEYWORD,
458     };
459    
460     extern const char *const keyword_str [];
461     extern const unsigned char keyword_len [];
462    
463     EOF
464    
465     printf KW "#define MAX_KEYWORD_LEN %d\n", List::Util::max map length, @kw;
466    
467     print KW <<EOF;
468    
469     #endif
470    
471     EOF
472