1 | /* alchemy.c */ |
1 | /* alchemy.c */ |
|
|
2 | int need_identify (const object *obj); |
|
|
3 | int apply_shop_mat (object *shop_mat, object *op); |
|
|
4 | const char *cost_string_from_value(sint64 cost, int approx); |
|
|
5 | void pay_player (object *pl, sint64 amount); |
|
|
6 | sint64 pay_player_arch (object *pl, const char *arch, sint64 amount); |
2 | void attempt_do_alchemy(object *caster, object *cauldron); |
7 | void attempt_do_alchemy(object *caster, object *cauldron); |
3 | int content_recipe_value(object *op); |
8 | int content_recipe_value(object *op); |
4 | int numb_ob_inside(object *op); |
9 | int numb_ob_inside(object *op); |
5 | object *attempt_recipe(object *caster, object *cauldron, int ability, recipe *rp, int nbatches); |
10 | object *attempt_recipe(object *caster, object *cauldron, int ability, recipe *rp, int nbatches); |
6 | void adjust_product(object *item, int lvl, int yield); |
11 | void adjust_product(object *item, int lvl, int yield); |
… | |
… | |
36 | int unapply_for_ob(object *who, object *op, int aflags); |
41 | int unapply_for_ob(object *who, object *op, int aflags); |
37 | int can_apply_object(object *who, object *op); |
42 | int can_apply_object(object *who, object *op); |
38 | int apply_special(object *who, object *op, int aflags); |
43 | int apply_special(object *who, object *op, int aflags); |
39 | int monster_apply_special(object *who, object *op, int aflags); |
44 | int monster_apply_special(object *who, object *op, int aflags); |
40 | int auto_apply(object *op); |
45 | int auto_apply(object *op); |
41 | void fix_auto_apply(mapstruct *m); |
46 | void fix_auto_apply(maptile *m); |
42 | void eat_special_food(object *who, object *food); |
47 | void eat_special_food(object *who, object *food); |
43 | void apply_lighter(object *who, object *lighter); |
48 | void apply_lighter(object *who, object *lighter); |
44 | void scroll_failure(object *op, int failure, int power); |
49 | void scroll_failure(object *op, int failure, int power); |
45 | void apply_changes_to_player(object *pl, object *change); |
50 | void apply_changes_to_player(object *pl, object *change); |
46 | void apply_item_transformer(object *pl, object *transformer); |
51 | void apply_item_transformer(object *pl, object *transformer); |
… | |
… | |
196 | int command_usekeys(object *op, char *params); |
201 | int command_usekeys(object *op, char *params); |
197 | int command_resistances(object *op, char *params); |
202 | int command_resistances(object *op, char *params); |
198 | int command_help(object *op, char *params); |
203 | int command_help(object *op, char *params); |
199 | int onoff_value(const char *line); |
204 | int onoff_value(const char *line); |
200 | int command_quit(object *op, char *params); |
205 | int command_quit(object *op, char *params); |
201 | int command_suicide(object *op, char *params); |
|
|
202 | int command_real_quit(object *op, char *params); |
206 | int command_real_quit(object *op, char *params); |
203 | int command_explore(object *op, char *params); |
207 | int command_explore(object *op, char *params); |
204 | int command_sound(object *op, char *params); |
208 | int command_sound(object *op, char *params); |
205 | void receive_player_name(object *op, char k); |
209 | void receive_player_name(object *op, char k); |
206 | void receive_player_password(object *op, char k); |
210 | void receive_player_password(object *op, char k); |
… | |
… | |
257 | int command_pickup(object *op, char *params); |
261 | int command_pickup(object *op, char *params); |
258 | void set_pickup_mode(object *op, int i); |
262 | void set_pickup_mode(object *op, int i); |
259 | int command_search_items(object *op, char *params); |
263 | int command_search_items(object *op, char *params); |
260 | int command_rename_item(object *op, char *params); |
264 | int command_rename_item(object *op, char *params); |
261 | /* c_party.c */ |
265 | /* c_party.c */ |
|
|
266 | int same_party(partylist *a, partylist *b); |
262 | partylist *get_firstparty(void); |
267 | partylist *get_firstparty(void); |
263 | void remove_party(partylist *target_party); |
268 | void remove_party(partylist *target_party); |
264 | void obsolete_parties(void); |
269 | void obsolete_parties(void); |
|
|
270 | void add_kill_to_party(partylist *party, char *killer, char *dead, long exp); |
265 | int confirm_party_password(object *op); |
271 | int confirm_party_password(object *op); |
266 | void receive_party_password(object *op, char k); |
272 | void receive_party_password(object *op, char k); |
267 | void send_party_message(object *op, char *msg); |
273 | void send_party_message(object *op, char *msg); |
268 | int command_gsay(object *op, char *params); |
274 | int command_gsay(object *op, char *params); |
269 | int command_party(object *op, char *params); |
275 | int command_party(object *op, char *params); |
… | |
… | |
328 | int command_insert_into(object *op, char *params); |
334 | int command_insert_into(object *op, char *params); |
329 | /* commands.c */ |
335 | /* commands.c */ |
330 | void init_commands(void); |
336 | void init_commands(void); |
331 | CommFunc find_oldsocket_command(char *cmd); |
337 | CommFunc find_oldsocket_command(char *cmd); |
332 | CommFunc find_oldsocket_command2(char *cmd); |
338 | CommFunc find_oldsocket_command2(char *cmd); |
333 | int parse_string(object *op, char *str); |
|
|
334 | int parse_command(object *op, char *str); |
|
|
335 | /* daemon.c */ |
339 | /* daemon.c */ |
336 | FILE *BecomeDaemon(char *filename); |
340 | FILE *BecomeDaemon(const char *filename); |
337 | /* disease.c */ |
341 | /* disease.c */ |
338 | int move_disease(object *disease); |
342 | int move_disease(object *disease); |
339 | int remove_symptoms(object *disease); |
343 | int remove_symptoms(object *disease); |
340 | object *find_symptom(object *disease); |
344 | object *find_symptom(object *disease); |
341 | int check_infection(object *disease); |
345 | int check_infection(object *disease); |
… | |
… | |
421 | void add_to_racelist(const char *race_name, object *op); |
425 | void add_to_racelist(const char *race_name, object *op); |
422 | racelink *get_racelist(void); |
426 | racelink *get_racelist(void); |
423 | racelink *find_racelink(const char *name); |
427 | racelink *find_racelink(const char *name); |
424 | /* login.c */ |
428 | /* login.c */ |
425 | void emergency_save(int flag); |
429 | void emergency_save(int flag); |
426 | void delete_character(const char *name, int new); |
430 | void delete_character(const char *name, int); |
427 | int verify_player(const char *name, char *password); |
431 | int verify_player(const char *name, char *password); |
428 | int check_name(player *me, const char *name); |
432 | int check_name(player *me, const char *name); |
429 | int create_savedir_if_needed(char *savedir); |
433 | int create_savedir_if_needed(char *savedir); |
430 | void destroy_object(object *op); |
434 | void destroy_object(object *op); |
431 | int save_player(object *op, int flag); |
435 | int save_player(object *op, int flag); |
432 | void copy_file(const char *filename, FILE *fpout); |
436 | void copy_file(const char *filename, FILE *fpout); |
433 | void check_login(object *op); |
437 | void check_login(object *op); |
434 | /* main.c */ |
438 | /* main.c */ |
|
|
439 | void server_tick (); |
435 | void version(object *op); |
440 | void version(object *op); |
436 | void info_keys(object *op); |
441 | void info_keys(object *op); |
437 | void start_info(object *op); |
442 | void start_info(object *op); |
438 | char *crypt_string(char *str, char *salt); |
443 | char *crypt_string(char *str, char *salt); |
439 | int check_password(char *typed, char *crypted); |
444 | int check_password(char *typed, char *crypted); |
440 | void enter_player_savebed(object *op); |
445 | void enter_player_savebed(object *op); |
441 | void leave_map(object *op); |
446 | void leave_map(object *op); |
442 | void set_map_timeout(mapstruct *oldmap); |
447 | void set_map_timeout(maptile *oldmap); |
443 | char *clean_path(const char *file); |
448 | char *clean_path(const char *file); |
444 | char *unclean_path(const char *src); |
449 | char *unclean_path(const char *src); |
445 | void enter_exit(object *op, object *exit_ob); |
450 | void enter_exit(object *op, object *exit_ob); |
446 | void process_active_maps(void); |
451 | void process_active_maps(void); |
447 | void process_players1(mapstruct *map); |
452 | void process_players1(maptile *map); |
448 | void process_players2(mapstruct *map); |
453 | void process_players2(maptile *map); |
449 | void process_events(mapstruct *map); |
454 | void process_events(maptile *map); |
450 | void clean_tmp_files(void); |
455 | void clean_tmp_files(void); |
451 | void cleanup(void); |
456 | void cleanup(void); |
452 | void leave(player *pl, int draw_exit); |
457 | void leave(player *pl,int draw_exit); |
453 | int forbid_play(void); |
458 | int forbid_play(void); |
454 | void do_specials(void); |
459 | void do_specials(void); |
455 | int main(int argc, char **argv); |
460 | int main(int argc, char **argv); |
456 | /* monster.c */ |
461 | /* monster.c */ |
457 | object *check_enemy(object *npc, rv_vector *rv); |
462 | object *check_enemy(object *npc, rv_vector *rv); |
… | |
… | |
485 | void pace_movev(object *ob); |
490 | void pace_movev(object *ob); |
486 | void pace_moveh(object *ob); |
491 | void pace_moveh(object *ob); |
487 | void pace2_movev(object *ob); |
492 | void pace2_movev(object *ob); |
488 | void pace2_moveh(object *ob); |
493 | void pace2_moveh(object *ob); |
489 | void rand_move(object *ob); |
494 | void rand_move(object *ob); |
490 | void check_earthwalls(object *op, mapstruct *m, int x, int y); |
495 | void check_earthwalls(object *op, maptile *m, int x, int y); |
491 | void check_doors(object *op, mapstruct *m, int x, int y); |
496 | void check_doors(object *op, maptile *m, int x, int y); |
492 | void communicate(object *op, const char *txt); |
497 | void communicate(object *op, const char *txt); |
493 | int talk_to_npc(object *op, object *npc, const char *txt); |
498 | int talk_to_npc(object *op, object *npc, const char *txt); |
494 | int talk_to_wall(object *pl, object *npc, const char *txt); |
499 | int talk_to_wall(object *pl, object *npc, const char *txt); |
495 | object *find_mon_throw_ob(object *op); |
500 | object *find_mon_throw_ob(object *op); |
496 | int can_detect_enemy(object *op, object *enemy, rv_vector *rv); |
501 | int can_detect_enemy(object *op, object *enemy, rv_vector *rv); |
… | |
… | |
500 | int move_object(object *op, int dir); |
505 | int move_object(object *op, int dir); |
501 | int move_ob(object *op, int dir, object *originator); |
506 | int move_ob(object *op, int dir, object *originator); |
502 | int transfer_ob(object *op, int x, int y, int randomly, object *originator); |
507 | int transfer_ob(object *op, int x, int y, int randomly, object *originator); |
503 | int teleport(object *teleporter, uint8 tele_type, object *user); |
508 | int teleport(object *teleporter, uint8 tele_type, object *user); |
504 | void recursive_roll(object *op, int dir, object *pusher); |
509 | void recursive_roll(object *op, int dir, object *pusher); |
505 | int try_fit(object *op, mapstruct *m, int x, int y); |
510 | int try_fit(object *op, maptile *m, int x, int y); |
506 | int roll_ob(object *op, int dir, object *pusher); |
511 | int roll_ob(object *op, int dir, object *pusher); |
507 | int push_ob(object *who, int dir, object *pusher); |
512 | int push_ob(object *who, int dir, object *pusher); |
508 | /* pets.c */ |
513 | /* pets.c */ |
509 | object *get_pet_enemy(object *pet, rv_vector *rv); |
514 | object *get_pet_enemy(object *pet, rv_vector *rv); |
510 | void terminate_all_pets(object *owner); |
515 | void terminate_all_pets(object *owner); |
511 | void remove_all_pets(mapstruct *map); |
516 | void remove_all_pets(maptile *map); |
512 | void follow_owner(object *ob, object *owner); |
517 | int follow_owner(object *ob, object *owner); |
513 | void pet_move(object *ob); |
518 | void pet_move(object *ob); |
514 | object *fix_summon_pet(archetype *at, object *op, int dir, int is_golem); |
519 | object *fix_summon_pet(archetype *at, object *op, int dir, int is_golem); |
515 | void move_golem(object *op); |
520 | void move_golem(object *op); |
516 | void control_golem(object *op, int dir); |
521 | void control_golem(object *op, int dir); |
517 | int summon_golem(object *op, object *caster, int dir, object *spob); |
522 | int summon_golem(object *op, object *caster, int dir, object *spob); |
… | |
… | |
586 | void plugins_display_list(object *op); |
591 | void plugins_display_list(object *op); |
587 | void *cfapi_system_find_animation(int *type, ...); |
592 | void *cfapi_system_find_animation(int *type, ...); |
588 | void *cfapi_system_strdup_local(int *type, ...); |
593 | void *cfapi_system_strdup_local(int *type, ...); |
589 | void *cfapi_system_register_global_event(int *type, ...); |
594 | void *cfapi_system_register_global_event(int *type, ...); |
590 | void *cfapi_system_unregister_global_event(int *type, ...); |
595 | void *cfapi_system_unregister_global_event(int *type, ...); |
591 | void *cfapi_system_add_string(int *type, ...); |
|
|
592 | void *cfapi_system_remove_string(int *type, ...); |
|
|
593 | void *cfapi_system_check_path(int *type, ...); |
596 | void *cfapi_system_check_path(int *type, ...); |
594 | void *cfapi_system_re_cmp(int *type, ...); |
597 | void *cfapi_system_re_cmp(int *type, ...); |
595 | void *cfapi_system_directory(int *type, ...); |
598 | void *cfapi_system_directory(int *type, ...); |
596 | void *cfapi_map_get_map(int *type, ...); |
599 | void *cfapi_map_get_map(int *type, ...); |
597 | void *cfapi_map_has_been_loaded(int *type, ...); |
600 | void *cfapi_map_has_been_loaded(int *type, ...); |
… | |
… | |
675 | int trap_see(object *op, object *trap); |
678 | int trap_see(object *op, object *trap); |
676 | int trap_show(object *trap, object *where); |
679 | int trap_show(object *trap, object *where); |
677 | int trap_disarm(object *disarmer, object *trap, int risk, object *skill); |
680 | int trap_disarm(object *disarmer, object *trap, int risk, object *skill); |
678 | void trap_adjust(object *trap, int difficulty); |
681 | void trap_adjust(object *trap, int difficulty); |
679 | /* shop.c */ |
682 | /* shop.c */ |
680 | double shopkeeper_approval(const mapstruct *map, const object *player); |
683 | int get_payment(object *pl); |
681 | uint64 query_cost(const object *tmp, object *who, int flag); |
684 | sint64 query_cost(const object *tmp, object *who, int flag); |
682 | const char *query_cost_string(const object *tmp, object *who, int flag); |
685 | const char *query_cost_string(const object *tmp, object *who, int flag); |
683 | uint64 query_money(const object *op); |
686 | sint64 query_money(const object *op); |
684 | int pay_for_amount(uint64 to_pay, object *pl); |
687 | int pay_for_amount(sint64 to_pay, object *pl); |
685 | int pay_for_item(object *op, object *pl); |
688 | int pay_for_item(object *op, object *pl); |
686 | int can_pay(object *pl); |
689 | int can_pay(object *pl); |
687 | int get_payment(object *pl, object *op); |
|
|
688 | void sell_item(object *op, object *pl); |
690 | void sell_item(object *op, object *pl); |
|
|
691 | double shopkeeper_approval(const maptile *map, const object *player); |
689 | int describe_shop(const object *op); |
692 | int describe_shop(const object *op); |
690 | void shop_listing(object *op); |
693 | void shop_listing(object *op); |
|
|
694 | bool is_in_shop (object *o); |
|
|
695 | bool is_in_shop (maptile *map, int x, int y); |
691 | /* skills.c */ |
696 | /* skills.c */ |
692 | int steal(object *op, int dir, object *skill); |
697 | int steal(object *op, int dir, object *skill); |
693 | int pick_lock(object *pl, int dir, object *skill); |
698 | int pick_lock(object *pl, int dir, object *skill); |
694 | int hide(object *op, object *skill); |
699 | int hide(object *op, object *skill); |
695 | int jump(object *pl, int dir, object *skill); |
700 | int jump(object *pl, int dir, object *skill); |
… | |
… | |
714 | int calc_skill_exp(object *who, object *op, object *skill); |
719 | int calc_skill_exp(object *who, object *op, object *skill); |
715 | int learn_skill(object *pl, object *scroll); |
720 | int learn_skill(object *pl, object *scroll); |
716 | void show_skills(object *op, const char *search); |
721 | void show_skills(object *op, const char *search); |
717 | int use_skill(object *op, const char *string); |
722 | int use_skill(object *op, const char *string); |
718 | int skill_attack(object *tmp, object *pl, int dir, const char *string, object *skill); |
723 | int skill_attack(object *tmp, object *pl, int dir, const char *string, object *skill); |
719 | static int attack_hth(object *pl, int dir, const char *string, object *skill); |
|
|
720 | static int attack_melee_weapon(object *op, int dir, const char *string, object *skill); |
|
|
721 | /* spell_attack.c */ |
724 | /* spell_attack.c */ |
722 | void check_spell_knockback(object *op); |
725 | void check_spell_knockback(object *op); |
723 | void forklightning(object *op, object *tmp); |
726 | void forklightning(object *op, object *tmp); |
724 | void move_bolt(object *op); |
727 | void move_bolt(object *op); |
725 | int fire_bolt(object *op, object *caster, int dir, object *spob, object *skill); |
728 | int fire_bolt(object *op, object *caster, int dir, object *spob, object *skill); |
… | |
… | |
785 | /* spell_util.c */ |
788 | /* spell_util.c */ |
786 | object *find_random_spell_in_ob(object *ob, const char *skill); |
789 | object *find_random_spell_in_ob(object *ob, const char *skill); |
787 | void set_spell_skill(object *op, object *caster, object *spob, object *dest); |
790 | void set_spell_skill(object *op, object *caster, object *spob, object *dest); |
788 | void init_spells(void); |
791 | void init_spells(void); |
789 | void dump_spells(void); |
792 | void dump_spells(void); |
790 | void spell_effect(object *spob, int x, int y, mapstruct *map, object *originator); |
793 | void spell_effect(object *spob, int x, int y, maptile *map, object *originator); |
791 | int min_casting_level(object *caster, object *spell); |
794 | int min_casting_level(object *caster, object *spell); |
792 | int caster_level(object *caster, object *spell); |
795 | int caster_level(object *caster, object *spell); |
793 | sint16 SP_level_spellpoint_cost(object *caster, object *spell, int flags); |
796 | sint16 SP_level_spellpoint_cost(object *caster, object *spell, int flags); |
794 | int SP_level_dam_adjust(object *caster, object *spob); |
797 | int SP_level_dam_adjust(object *caster, object *spob); |
795 | int SP_level_duration_adjust(object *caster, object *spob); |
798 | int SP_level_duration_adjust(object *caster, object *spob); |
796 | int SP_level_range_adjust(object *caster, object *spob); |
799 | int SP_level_range_adjust(object *caster, object *spob); |
797 | object *check_spell_known(object *op, const char *name); |
800 | object *check_spell_known(object *op, const char *name); |
798 | object *lookup_spell_by_name(object *op, const char *spname); |
801 | object *lookup_spell_by_name(object *op, const char *spname); |
799 | int reflwall(mapstruct *m, int x, int y, object *sp_op); |
802 | int reflwall(maptile *m, int x, int y, object *sp_op); |
800 | int cast_create_obj(object *op, object *caster, object *new_op, int dir); |
803 | int cast_create_obj(object *op, object *caster, object *new_op, int dir); |
801 | int ok_to_put_more(mapstruct *m, sint16 x, sint16 y, object *op, int immune_stop); |
804 | int ok_to_put_more(maptile *m, sint16 x, sint16 y, object *op, int immune_stop); |
802 | int fire_arch_from_position(object *op, object *caster, sint16 x, sint16 y, int dir, object *spell); |
805 | int fire_arch_from_position(object *op, object *caster, sint16 x, sint16 y, int dir, object *spell); |
803 | void regenerate_rod(object *rod); |
806 | void regenerate_rod(object *rod); |
804 | void drain_rod_charge(object *rod); |
807 | void drain_rod_charge(object *rod); |
805 | object *find_target_for_friendly_spell(object *op, int dir); |
808 | object *find_target_for_friendly_spell(object *op, int dir); |
806 | int spell_find_dir(mapstruct *m, int x, int y, object *exclude); |
809 | int spell_find_dir(maptile *m, int x, int y, object *exclude); |
807 | void put_a_monster(object *op, const char *monstername); |
810 | void put_a_monster(object *op, const char *monstername); |
808 | int summon_hostile_monsters(object *op, int n, const char *monstername); |
811 | int summon_hostile_monsters(object *op, int n, const char *monstername); |
809 | void shuffle_attack(object *op, int change_face); |
812 | void shuffle_attack(object *op, int change_face); |
810 | void prayer_failure(object *op, int failure, int power); |
813 | void prayer_failure(object *op, int failure, int power); |
811 | void spell_failure(object *op, int failure, int power, object *skill); |
814 | void spell_failure(object *op, int failure, int power, object *skill); |
… | |
… | |
817 | /* swamp.c */ |
820 | /* swamp.c */ |
818 | void walk_on_deep_swamp(object *op, object *victim); |
821 | void walk_on_deep_swamp(object *op, object *victim); |
819 | void move_deep_swamp(object *op); |
822 | void move_deep_swamp(object *op); |
820 | /* swap.c */ |
823 | /* swap.c */ |
821 | void read_map_log(void); |
824 | void read_map_log(void); |
822 | void swap_map(mapstruct *map); |
825 | void swap_map(maptile *map); |
823 | void check_active_maps(void); |
826 | void check_active_maps(void); |
824 | mapstruct *map_least_timeout(char *except_level); |
827 | maptile *map_least_timeout(char *except_level); |
825 | void swap_below_max(char *except_level); |
828 | void swap_below_max(char *except_level); |
826 | int players_on_map(mapstruct *m, int show_all); |
829 | int players_on_map(maptile *m, int show_all); |
827 | void flush_old_maps(void); |
830 | void flush_old_maps(void); |
828 | /* time.c */ |
831 | /* time.c */ |
829 | void remove_door(object *op); |
832 | void remove_door(object *op); |
830 | void remove_door2(object *op); |
833 | void remove_door2(object *op); |
831 | void generate_monster_inv(object *gen); |
834 | void generate_monster_inv(object *gen); |
… | |
… | |
838 | void move_timed_gate(object *op); |
841 | void move_timed_gate(object *op); |
839 | void move_detector(object *op); |
842 | void move_detector(object *op); |
840 | void animate_trigger(object *op); |
843 | void animate_trigger(object *op); |
841 | void move_hole(object *op); |
844 | void move_hole(object *op); |
842 | object *stop_item(object *op); |
845 | object *stop_item(object *op); |
843 | void fix_stopped_item(object *op, mapstruct *map, object *originator); |
846 | void fix_stopped_item(object *op, maptile *map, object *originator); |
844 | object *fix_stopped_arrow(object *op); |
847 | object *fix_stopped_arrow(object *op); |
845 | void move_arrow(object *op); |
848 | void move_arrow(object *op); |
846 | void change_object(object *op); |
849 | void change_object(object *op); |
847 | void move_teleporter(object *op); |
850 | void move_teleporter(object *op); |
848 | void move_player_changer(object *op); |
851 | void move_player_changer(object *op); |
… | |
… | |
857 | void cftimer_process_event(object *ob); |
860 | void cftimer_process_event(object *ob); |
858 | int cftimer_create(int id, long delay, object *ob, int mode); |
861 | int cftimer_create(int id, long delay, object *ob, int mode); |
859 | int cftimer_destroy(int id); |
862 | int cftimer_destroy(int id); |
860 | int cftimer_find_free_id(void); |
863 | int cftimer_find_free_id(void); |
861 | /* weather.c */ |
864 | /* weather.c */ |
862 | void set_darkness_map(mapstruct *m); |
865 | void set_darkness_map(maptile *m); |
863 | void tick_the_clock(void); |
866 | void tick_the_clock(void); |
864 | void init_weather(void); |
867 | void init_weather(void); |
865 | void weather_effect(const char *filename); |
868 | void weather_effect(const char *filename); |
866 | int worldmap_to_weathermap(int x, int y, int *wx, int *wy, mapstruct *m); |
869 | int worldmap_to_weathermap(int x, int y, int *wx, int *wy, maptile *m); |
867 | int real_world_temperature(int x, int y, mapstruct *m); |
870 | int real_world_temperature(int x, int y, maptile *m); |
868 | int similar_direction(int a, int b); |
871 | int similar_direction(int a, int b); |