Files
sfall/artifacts/scripting/headers/define_lite.h
T
NovaRain c6fa6bac30 Cleaned up define_lite.h and command_lite.h
Improved/corrected the fix for function args in commit e59af7e8.
Minor code edits.
2020-10-26 11:25:31 +08:00

826 lines
32 KiB
C

/*
Copyright 1998-2003 Interplay Entertainment Corp. All rights reserved.
*/
#ifndef DEFINE_H
#define DEFINE_H
// This file holds all of the things that should be preprocessed.
// Script Procedure Types //
#define no_proc (0)
#define start_proc (1)
#define spatial_proc (2)
#define description_proc (3)
#define pickup_proc (4)
#define drop_proc (5)
#define use_proc (6)
#define use_obj_on_proc (7)
#define use_skill_on_proc (8)
#define use_ad_on_proc (9)
#define use_disad_on_proc (10)
#define talk_proc (11)
#define critter_proc (12)
#define combat_proc (13)
#define damage_proc (14)
#define map_enter_proc (15)
#define map_exit_proc (16)
#define create_proc (17)
#define destroy_proc (18)
#define barter_init_proc (19)
#define barter_proc (20)
#define look_at_proc (21)
#define timed_event_proc (22)
#define map_update_proc (23)
// Map-Enter Proc subdefines
// Warning: This one is only valid in map_enter proc right when run!
///#define map_first_run (fixed_param)
#define METARULE_TEST_FIRSTRUN 14
#define map_first_run metarule(METARULE_TEST_FIRSTRUN, 0)
#define METARULE_IS_LOADGAME 22
#define is_loading_game metarule(METARULE_IS_LOADGAME, 0)
// Script Combat Procedure SubTypes //
#define COMBAT_SUBTYPE_WEAPON_USED (1)
#define COMBAT_SUBTYPE_HIT_SUCCEEDED (2)
#define COMBAT_SUBTYPE_SEQUENCING (3)
#define COMBAT_SUBTYPE_TURN (4)
#define COMBAT_SUBTYPE_NONCOM_TURN (5)
// ----------------------------------------------------------------------- //
// pc critter defines //
#define give_character_points(X) give_exp_points(X)
// create_object defines //
#define create_object(X,Y,Z) create_object_sid(X,Y,Z,-1)
//#define destroy_object(X) destroy_mult_objs(X,1)
//#define add_obj_to_inven(X,Y) add_mult_objs_to_inven(X,Y,1)
//#define rm_obj_from_inven(X,Y) rm_mult_objs_from_inven(X,Y,1)
// combat defines //
#define attack(WHO) attack_complex(WHO,0,1,0,0,30000,0,0)
// wield_obj defines //
#define wield_obj(WHAT) wield_obj_critter(self_obj,WHAT)
#define gdialog_barter gdialog_mod_barter(0)
// Movie number defines //
// Commented out movies are done in the C-engine. JLR
//#define INTERPLAY_LOGO_MOVIE_PC 0 // "iplogo.mve", // Interplay logo.
//#define INTRO_MOVIE 1 // "intro.mve", // Intro.
//#define ELDER_MOVIE 2 // "elder.mve",
#define VSUIT_MOVIE 3 // "vsuit.mve",
#define AFAILED_MOVIE 4 // "afailed.mve",
#define ADESTROY_MOVIE 5 // "adestroy.mve",
#define CAR_MOVIE 6 // "car.mve",
#define CARTUCCI_MOVIE 7 // "cartucci.mve",
#define DETHCLAW_MOVIE 8 // "dethclaw.mve",
#define TANKER_MOVIE 9 // "tanker.mve",
#define ENCLAVE_MOVIE 10 // "enclave.mve",
#define DERRICK_MOVIE 11 // "derrick.mve"
// float_msg defines //
#define FLOAT_MSG_WARNING (-2)
#define FLOAT_MSG_SEQUENTIAL (-1)
#define FLOAT_MSG_NORMAL (0)
#define FLOAT_MSG_BLACK (1)
#define FLOAT_MSG_RED (2)
#define FLOAT_MSG_GREEN (3)
#define FLOAT_MSG_BLUE (4)
#define FLOAT_MSG_PURPLE (5)
#define FLOAT_MSG_NEAR_WHITE (6)
#define FLOAT_MSG_LIGHT_RED (7)
#define FLOAT_MSG_YELLOW (8)
#define FLOAT_MSG_WHITE (9)
#define FLOAT_MSG_GREY (10)
#define FLOAT_MSG_DARK_GREY (11)
#define FLOAT_MSG_LIGHT_GREY (12)
#define float_msg_clear(WHO) float_msg(WHO,0,0)
// dialogue defines //
#define start_dialogue(X,Y) start_gdialog(-1,X,Y,-1,-1)
// head_anim enums
#define good_fidget (1)
#define neutral_fidget (4)
#define bad_fidget (7)
// Mood defines //
#define GOOD_REACTION (49)
#define NEUTRAL_REACTION (50)
#define BAD_REACTION (51)
// Head defines //
#define HEAD_MARCUS (1) //marcus -- Party Member (found in Broken Hills)
#define HEAD_MYRON (2) //Myron -- Party Member (found in New Reno)
#define HEAD_ELDER (3) // Elder -- (found in Arroyo)
#define HEAD_LYNETTE (4) // Lynette -- fount in Vault City
#define HEAD_HAROLD (5) // HAROLD -- found in Gecko
#define HEAD_TANDI (6) // Tandi -- Leader of the NCR
#define HEAD_COM_OFFICER (7) // Com Officer in Gecko
#define HEAD_SULIK (8) // Sulik -- Party Member (found in Klamath)
#define HEAD_PRESIDENT (9) // President of the Enclave
#define HEAD_HAKUNIN (10) // Hakunin -- Found in Arroyo
#define HEAD_BOSS (11)
#define HEAD_DYING_HAKUNIN (12)
// Head defines //
#define BACKGROUND1 (2) // rstymetl
#define BACKGROUND_HUB (3) //hub.frm
#define BACKGROUND_NECROPOLIS (4) //necro.frm
#define BACKGROUND_BHOOD (5) //bhood.frm
#define BACKGROUND_MILITARYBS (6) //military.frm
#define BACKGROUND_JUNKTOWN (7) //junktown.frm
#define BACKGROUND_CATHEDRAL (8) //cath.frm
#define BACKGROUND_SHADY (9) //shady.frm
#define BACKGROUND_VAULT (10) //vault.frm
#define BACKGROUND_MASTER (11) //master.frm
#define BACKGROUND_FOLLOWER (12) //follow.frm
#define BACKGROUND_RAIDERS (13) //raider.frm
// Start of Fallout 2: Backgrounds
#define BACKGROUND_CAVE (14) //cave0001.frm
#define BACKGROUND_ENCLAVE (15) //enclave.frm
#define BACKGROUND_WASTELAND (16) //wastelnd.frm
#define BACKGROUND_BOSS (17) // boss.frm
#define BACKGROUND_PRESIDENT (18) // pres.frm
#define BACKGROUND_TENT (19) // tent.frm
#define BACKGROUND_ADOBE (20) // Adobe.frm
// ----------------------------------------------------------------------- //
// ----------------------------------------------------------------------- //
#define IAN_MEMBER_PTR party_member_obj(PID_IAN)
#define KATJA_MEMBER_PTR party_member_obj(PID_KATJA)
#define TYCHO_MEMBER_PTR party_member_obj(PID_TYCHO)
#define DOGMEAT_MEMBER_PTR party_member_obj(PID_DOGMEAT)
#define TANDI_MEMBER_PTR party_member_obj(PID_TANDI)
// ----------------------------------------------------------------------- //
// ----------------------------------------------------------------------- //
// Trait defines //
#define TRAIT_PERK (0)
#define TRAIT_OBJECT (1)
#define TRAIT_TRAIT (2)
// Perk Trait Types
#define PERK_bonus_awareness (0)
#define PERK_bonus_hth_attacks (1)
#define PERK_bonus_hth_damage (2)
#define PERK_bonus_move (3)
#define PERK_bonus_ranged_damage (4)
#define PERK_bonus_rate_of_fire (5)
#define PERK_earlier_sequence (6)
#define PERK_faster_healing (7)
#define PERK_more_criticals (8)
#define PERK_night_vision (9)
#define PERK_presence (10)
#define PERK_rad_resistance (11)
#define PERK_toughness (12)
#define PERK_strong_back (13)
#define PERK_sharpshooter (14)
#define PERK_silent_running (15)
#define PERK_survivalist (16)
#define PERK_master_trader (17)
#define PERK_educated (18)
#define PERK_healer (19)
#define PERK_fortune_finder (20)
#define PERK_better_criticals (21)
#define PERK_empathy (22)
#define PERK_slayer (23)
#define PERK_sniper (24)
#define PERK_silent_death (25)
#define PERK_action_boy (26)
#define PERK_mental_block (27) //-- Disabled FO2
#define PERK_lifegiver (28)
#define PERK_dodger (29)
#define PERK_snakeater (30)
#define PERK_mr_fixit (31)
#define PERK_medic (32)
#define PERK_master_thief (33)
#define PERK_speaker (34)
#define PERK_heave_ho (35)
#define PERK_friendly_foe (36) //-- Disabled FO2
#define PERK_pickpocket (37)
#define PERK_ghost (38)
#define PERK_cult_of_personality (39)
#define PERK_scrounger (40) //-- Disabled FO2
#define PERK_explorer (41)
#define PERK_flower_child (42) //-- Disabled FO2
#define PERK_pathfinder (43)
#define PERK_animal_friend (44) //-- Disabled FO2
#define PERK_scout (45)
#define PERK_mysterious_stranger (46)
#define PERK_ranger (47)
#define PERK_quick_pockets (48)
#define PERK_smooth_talker (49)
#define PERK_swift_learner (50)
#define PERK_tag (51)
#define PERK_mutate (52)
#define PERK_add_nuka (53) // Do NOT USE! Engine ONLY!
#define PERK_add_buffout (54) // Do NOT USE! Engine ONLY!
#define PERK_add_mentats (55) // Do NOT USE! Engine ONLY!
#define PERK_add_psycho (56) // Do NOT USE! Engine ONLY!
#define PERK_add_radaway (57) // Do NOT USE! Engine ONLY!
#define PERK_weapon_long_range (58) // Do NOT USE! Engine ONLY!
#define PERK_weapon_accurate (59) // Do NOT USE! Engine ONLY!
#define PERK_weapon_penetrate (60) // Do NOT USE! Engine ONLY!
#define PERK_weapon_knockback (61) // Do NOT USE! Engine ONLY!
#define PERK_armor_powered (62) // Do NOT USE! Engine ONLY!
#define PERK_armor_combat (63) // Do NOT USE! Engine ONLY!
// Note: Fallout 2: New Perks
#define PERK_weapon_scope_range (64) // Do NOT USE! Engine ONLY!
#define PERK_weapon_fast_reload (65) // Do NOT USE! Engine ONLY!
#define PERK_weapon_night_sight (66) // Do NOT USE! Engine ONLY!
#define PERK_weapon_flameboy (67) // Do NOT USE! Engine ONLY!
#define PERK_armor_advanced_1 (68) // Do NOT USE! Engine ONLY!
#define PERK_armor_advanced_2 (69) // Do NOT USE! Engine ONLY!
#define PERK_add_jet (70) // Do NOT USE! Engine ONLY!
#define PERK_add_tragic (71) // Do NOT USE! Engine ONLY!
#define PERK_armor_charisma (72) // Do NOT USE! Engine ONLY!
#define PERK_gecko_skinning_perk (73)
#define PERK_dermal_armor_perk (74)
#define PERK_dermal_enhancement_perk (75)
#define PERK_phoenix_armor_perk (76)
#define PERK_phoenix_enhancement_perk (77)
#define PERK_vault_city_inoculations_perk (78)
#define PERK_adrenaline_rush_perk (79)
#define PERK_cautious_nature_perk (80)
#define PERK_comprehension_perk (81)
#define PERK_demolition_expert_perk (82)
#define PERK_gambler_perk (83)
#define PERK_gain_strength_perk (84)
#define PERK_gain_perception_perk (85)
#define PERK_gain_endurance_perk (86)
#define PERK_gain_charisma_perk (87)
#define PERK_gain_intelligence_perk (88)
#define PERK_gain_agility_perk (89)
#define PERK_gain_luck_perk (90)
#define PERK_harmless_perk (91)
#define PERK_here_and_now_perk (92)
#define PERK_hth_evade_perk (93)
#define PERK_kama_sutra_perk (94)
#define PERK_karma_beacon_perk (95)
#define PERK_light_step_perk (96)
#define PERK_living_anatomy_perk (97)
#define PERK_magnetic_personality_perk (98)
#define PERK_negotiator_perk (99)
#define PERK_pack_rat_perk (100)
#define PERK_pyromaniac_perk (101)
#define PERK_quick_recovery_perk (102)
#define PERK_salesman_perk (103)
#define PERK_stonewall_perk (104)
#define PERK_thief_perk (105)
#define PERK_weapon_handling_perk (106)
#define PERK_vault_city_training_perk (107)
#define PERK_alcohol_hp_bonus1_perk (108)
#define PERK_alcohol_hp_bonus2_perk (109)
#define PERK_alcohol_hp_neg1_perk (110)
#define PERK_alcohol_hp_neg2_perk (111)
#define PERK_autodoc_hp_bonus1_perk (112)
#define PERK_autodoc_hp_bonus2_perk (113)
#define PERK_autodoc_hp_neg1_perk (114)
#define PERK_autodoc_hp_neg2_perk (115)
#define PERK_expert_excrement_expediter_perk (116)
#define PERK_weapon_knockout_perk (117)
#define PERK_jinxed_perk (118)
// Object Trait Subtypes
#define OBJECT_AI_PACKET (5)
#define OBJECT_TEAM_NUM (6)
#define OBJECT_CUR_ROT (10)
#define OBJECT_VISIBILITY (666)
#define OBJECT_CUR_WEIGHT (669)
#define obj_is_visible_flag(WHO) has_trait(TRAIT_OBJECT,WHO,OBJECT_VISIBILITY)
// Trait Types
#define TRAIT_fast_metabolism (0)
#define TRAIT_bruiser (1)
#define TRAIT_small_frame (2)
#define TRAIT_one_hander (3)
#define TRAIT_finesse (4)
#define TRAIT_kamikaze (5)
#define TRAIT_heavy_handed (6)
#define TRAIT_fast_shot (7)
#define TRAIT_bloody_mess (8)
#define TRAIT_jinxed (9)
#define TRAIT_good_natured (10)
#define TRAIT_drug_addict (11)
#define TRAIT_drug_resistant (12)
#define TRAIT_sex_appeal (13)
#define TRAIT_skilled (14)
#define TRAIT_gifted (15)
// ----------------------------------------------------------------------- //
// ----------------------------------------------------------------------- //
// SPECIAL System stats: strength, perception, endurance, charisma, intelligence, agility, luck
#define STAT_st (0)
#define STAT_pe (1)
#define STAT_en (2)
#define STAT_ch (3)
#define STAT_iq (4)
#define STAT_ag (5)
#define STAT_lu (6)
#define STAT_max_hp (7)
// luck MUST be the last basic stat
// derived stats
#define STAT_max_hit_points (7)
#define STAT_max_move_points (8)
#define STAT_ac (9)
#define STAT_unused (10) // used in sfall for critter inventory size (see CritterInvSizeLimitMode)
#define STAT_melee_dmg (11)
#define STAT_carry_amt (12)
#define STAT_sequence (13)
#define STAT_heal_rate (14)
#define STAT_crit_chance (15)
#define STAT_better_crit (16)
#define STAT_dmg_thresh (17)
#define STAT_dmg_thresh_laser (18)
#define STAT_dmg_thresh_fire (19)
#define STAT_dmg_thresh_plasma (20)
#define STAT_dmg_thresh_electrical (21)
#define STAT_dmg_thresh_emp (22)
#define STAT_dmg_thresh_explosion (23)
#define STAT_dmg_resist (24)
#define STAT_dmg_resist_laser (25)
#define STAT_dmg_resist_fire (26)
#define STAT_dmg_resist_plasma (27)
#define STAT_dmg_resist_electrical (28)
#define STAT_dmg_resist_emp (29)
#define STAT_dmg_resist_explosion (30)
#define STAT_rad_resist (31)
#define STAT_poison_resist (32)
// poison_resist MUST be the last derived stat
// nonderived stats
#define STAT_age (33)
#define STAT_gender (34)
// gender MUST be the last nonderived stat
#define STAT_current_hp (35)
#define STAT_current_poison (36)
#define STAT_current_rad (37)
#define STAT_real_max_stat (38)
// extra stat-like values that are treated specially
#define STAT_max_stat STAT_current_hp
#define PCSTAT_unspent_skill_points (0)
#define PCSTAT_level (1)
#define PCSTAT_experience (2)
#define PCSTAT_reputation (3)
#define PCSTAT_karma (4)
#define PCSTAT_max_pc_stat (5)
// ----------------------------------------------------------------------- //
// ----------------------------------------------------------------------- //
// Skill Equates //
// the following are skills for the SPECIAL system
#define SKILL_SMALL_GUNS (0)
#define SKILL_BIG_GUNS (1)
#define SKILL_ENERGY_WEAPONS (2)
#define SKILL_UNARMED_COMBAT (3)
#define SKILL_MELEE (4)
#define SKILL_THROWING (5)
#define SKILL_FIRST_AID (6)
#define SKILL_DOCTOR (7)
#define SKILL_SNEAK (8)
#define SKILL_LOCKPICK (9)
#define SKILL_STEAL (10)
#define SKILL_TRAPS (11)
#define SKILL_SCIENCE (12)
#define SKILL_REPAIR (13)
#define SKILL_CONVERSANT (14)
#define SKILL_BARTER (15)
#define SKILL_GAMBLING (16)
#define SKILL_OUTDOORSMAN (17)
#define CRITTER_SKILL_LEVEL(X,Y) has_skill(X,Y)
#define critter_skill_level(X,Y) has_skill(X,Y)
// ----------------------------------------------------------------------- //
// ----------------------------------------------------------------------- //
// Reaction Levels //
#define rl_disastrous (0)
#define rl_very_bad (1)
#define rl_bad (2)
#define rl_poor (3)
#define rl_neutral (4)
#define rl_good (5)
#define rl_very_good (6)
#define rl_excellent (7)
//#define LOAD_MAP_INDEX (32)
#define GENDER_MALE (0)
#define GENDER_FEMALE (1)
// critter_state States //
#define CRITTER_IS_NORMAL (0)
#define CRITTER_IS_DEAD (1)
#define CRITTER_IS_PRONE (2)
#define is_critter_dead(who) (critter_state(who) bwand CRITTER_IS_DEAD)
#define is_critter_prone(who) (critter_state(who) bwand CRITTER_IS_PRONE)
// inventory Equates //
#define INVEN_TYPE_WORN (0)
#define INVEN_TYPE_RIGHT_HAND (1)
#define INVEN_TYPE_LEFT_HAND (2)
#define INVEN_TYPE_INV_COUNT (-2)
#define inven_count(WHO) critter_inven_obj(WHO, INVEN_TYPE_INV_COUNT)
// ----------------------------------------------------------------------- //
// ----------------------------------------------------------------------- //
/* proto_data data_member Equates */
/* Item subtypes */
#define item_type_armor (0)
#define item_type_container (1)
#define item_type_drug (2)
#define item_type_weapon (3)
#define item_type_ammo (4)
#define item_type_misc_item (5)
#define item_type_key_item (6)
/* Item data_members */
#define it_pid (0)
#define it_name (1)
#define it_description (2)
#define it_fid (3)
#define it_light_distance (4)
#define it_light_intensity (5)
#define it_flags (6)
#define it_flags_ext (7)
#define it_sid (8)
#define it_type (9)
#define it_data (10)
#define it_material (11)
#define it_size (12)
#define it_weight (13)
#define it_cost (14)
#define it_inv_fid (15)
#define it_weapon_range (555)
/* Critter data_members */
#define cr_pid (0)
#define cr_name (1)
#define cr_description (2)
#define cr_fid (3)
#define cr_light_distance (4)
#define cr_light_intensity (5)
#define cr_flags (6)
#define cr_flags_ext (7)
#define cr_sid (8)
#define cr_data (9)
#define cr_head_fid (10)
#define cr_body_type (11)
// cr_body_type values:
#define CR_BODY_BIPED 0
#define CR_BODY_QUADRUPED 1
#define CR_BODY_ROBOTIC 2
/* Scenery data_members */
#define sc_pid (0)
#define sc_name (1)
#define sc_description (2)
#define sc_fid (3)
#define sc_light_distance (4)
#define sc_light_intensity (5)
#define sc_flags (6)
#define sc_flags_ext (7)
#define sc_sid (8)
#define sc_type (9)
#define sc_data (10)
#define sc_material (11)
/* Wall data_members */
#define wa_pid (0)
#define wa_name (1)
#define wa_description (2)
#define wa_fid (3)
#define wa_light_distance (4)
#define wa_light_intensity (5)
#define wa_flags (6)
#define wa_flags_ext (7)
#define wa_sid (8)
#define wa_material (9)
/* Tile data_members */
/* Misc data_members */
#define mi_pid (0)
#define mi_name (1)
#define mi_description (2)
#define mi_fid (3)
#define mi_light_distance (4)
#define mi_light_intensity (5)
#define mi_flags (6)
#define mi_flags_ext (7)
// ----------------------------------------------------------------------- //
// ----------------------------------------------------------------------- //
/* Combat Flags */
// valid flags for damage_results
#define DAM_KNOCKED_OUT 0x1
#define DAM_KNOCKED_DOWN 0x2
#define DAM_CRIP_LEG_LEFT 0x4
#define DAM_CRIP_LEG_RIGHT 0x8
#define DAM_CRIP_ARM_LEFT 0x10
#define DAM_CRIP_ARM_RIGHT 0x20
#define DAM_BLIND 0x40
#define DAM_DEAD 0x80
#define DAM_HIT 0x100 // hit or critical hit
#define DAM_CRITICAL 0x200 // could be a critical hit or critical miss
#define DAM_ON_FIRE 0x400
#define DAM_BYPASS 0x800
#define DAM_EXPLODE 0x1000
#define DAM_DESTROY 0x2000
#define DAM_DROP 0x4000
#define DAM_LOSE_TURN 0x8000
#define DAM_HIT_SELF 0x10000
#define DAM_LOSE_AMMO 0x20000
#define DAM_DUD 0x40000
#define DAM_HURT_SELF 0x80000
#define DAM_RANDOM_HIT 0x100000
#define DAM_CRIP_RANDOM 0x200000
#define DAM_BACKWASH 0x400000
// Fallout 2:
#define DAM_PERFORM_REVERSE 0x800000
#define critter_uninjure(WHO, FLAGS) critter_injure(WHO, (FLAGS bwor DAM_PERFORM_REVERSE))
#define DMG_normal_dam 0
#define DMG_laser 1
#define DMG_fire 2
#define DMG_plasma 3
#define DMG_electrical 4
#define DMG_emp 5
#define DMG_explosion 6
// These are BWOR'd into the above damage type
#define DMG_BYPASS_ARMOR (256)
#define DMG_NOANIMATE (512)
//#define critter_damage(WHO,AMT) critter_dmg(WHO,AMT,(DMG_normal_dam BWOR DMG_NOANIMATE))
#define critter_damage(WHO,AMT) critter_dmg(WHO,AMT,DMG_normal_dam)
/* Kill Critter Equates */
#define KILL_DONT_LEAVE_BODY (0)
#define KILL_LEAVE_BODY (1)
#define KILL_LEAVE_NV_BODY (2)
/* Script MetaRules */
#define METARULE_SIGNAL_END_GAME 13
#define METARULE_TEST_FIRSTRUN 14
#define signal_end_game metarule(METARULE_SIGNAL_END_GAME, 0)
#define METARULE_ELEVATOR 15
#define elevator(X) metarule(METARULE_ELEVATOR, X)
#define ELEV_BOS1 (0) // Brotherhood of Steel main elevator
#define ELEV_BOS2 (1) // Brotherhood of Steel surface elevator
#define ELEV_MASTR1 (2) // Master's upper-level elevator
#define ELEV_MASTR2 (3) // Master's lower-level elevator
#define ELEV_MILB1 (4) // Military Base upper-level elevator
#define ELEV_MILB2 (5) // Military Base lower-level elevator
#define ELEV_GLOW1 (6) // Glow Elevator upper
#define ELEV_GLOW2 (7) // Glow elevator lower
#define ELEV_VAULT (8) // Vault13 elevator
#define ELEV_NECVLT (9) // Necropolis elevator
#define ELEV_SIERRA1 (10) // Sierra Elev 1 (1-2-3)
#define ELEV_SIERRA2 (11) // Sierra Elev 2 (3-4)
#define ELEV_SIERRAS (12) // Sierra Service Elev (1-2-3-4)
#define METARULE_PARTY_COUNT 16
#define party_member_count(X) metarule(METARULE_PARTY_COUNT, X)
#define DONT_LIST_HIDDEN_MEMBERS (0)
#define LIST_HIDDEN_MEMBERS (1)
#define METARULE_AREA_KNOWN 17
#define town_known(X) metarule(METARULE_AREA_KNOWN, X)
#define METARULE_WHO_ON_DRUGS 18
#define drug_influence(WHO) metarule(METARULE_WHO_ON_DRUGS, WHO)
#define METARULE_MAP_KNOWN 19
#define map_is_known(X) metarule(METARULE_MAP_KNOWN, X)
//#define DEFINE_METARULE_IS_LOADGAME 22
#define METARULE_CAR_CURRENT_TOWN 30
#define METARULE_GIVE_CAR_TO_PARTY 31
#define METARULE_GIVE_CAR_GAS 32
#define car_current_town metarule(METARULE_CAR_CURRENT_TOWN, 0)
#define car_give_to_party metarule(METARULE_GIVE_CAR_TO_PARTY, 0)
#define car_give_gas(AMOUNT) metarule(METARULE_GIVE_CAR_GAS, AMOUNT)
#define METARULE_SKILL_CHECK_TAG 40
#define is_skill_tagged(SKILL) metarule(METARULE_SKILL_CHECK_TAG, SKILL)
#define METARULE_DROP_ALL_INVEN 42
#define obj_drop_everything(WHO) metarule(METARULE_DROP_ALL_INVEN, WHO)
#define METARULE_INVEN_UNWIELD_WHO 43
#define inven_unwield(WHO) metarule(METARULE_INVEN_UNWIELD_WHO, WHO)
#define METARULE_GET_WORLDMAP_XPOS 44
#define worldmap_xpos metarule(METARULE_GET_WORLDMAP_XPOS, 0)
#define METARULE_GET_WORLDMAP_YPOS 45
#define worldmap_ypos metarule(METARULE_GET_WORLDMAP_YPOS, 0)
#define METARULE_CURRENT_TOWN 46
#define cur_town metarule(METARULE_CURRENT_TOWN, 0)
#define METARULE_LANGUAGE_FILTER 47
#define language_filter_is_on metarule(METARULE_LANGUAGE_FILTER, 0)
#define METARULE_VIOLENCE_FILTER 48
#define violence_filter_setting metarule(METARULE_VIOLENCE_FILTER, 0)
#define VLNCLVL_NONE 0 // Violence Level settings.
#define VLNCLVL_MIN 1
#define VLNCLVL_NORMAL 2
#define VLNCLVL_MAX 3
#define METARULE_W_DAMAGE_TYPE 49
#define weapon_dmg_type(WEAP) metarule(METARULE_W_DAMAGE_TYPE, WEAP)
#define METARULE_CRITTER_BARTERS 50
#define critter_can_barter(WHO) metarule(METARULE_CRITTER_BARTERS, WHO)
#define METARULE_CRITTER_KILL_TYPE 51
#define critter_kill_type(WHO) metarule(METARULE_CRITTER_KILL_TYPE, WHO)
#define KILL_TYPE_men_kills 0
#define KILL_TYPE_women_kills 1
#define KILL_TYPE_children_kills 2
#define KILL_TYPE_super_mutant_kills 3
#define KILL_TYPE_ghoul_kills 4
#define KILL_TYPE_brahmin_kills 5
#define KILL_TYPE_radscorpion_kills 6
#define KILL_TYPE_rat_kills 7
#define KILL_TYPE_floater_kills 8
#define KILL_TYPE_centaur_kills 9
#define KILL_TYPE_robot_kills 10
#define KILL_TYPE_dog_kills 11
#define KILL_TYPE_manti_kills 12
#define KILL_TYPE_deathclaw_kills 13
#define KILL_TYPE_plant_kills 14
#define KILL_TYPE_gecko_kills 15
#define KILL_TYPE_alien_kills 16
#define KILL_TYPE_giant_ant_kills 17
#define DEFINE_METARULE_SET_CAR_CARRY_AMOUNT 52
#define set_car_carry_amount(VALUE) metarule(DEFINE_METARULE_SET_CAR_CARRY_AMOUNT, VALUE)
#define DEFINE_METARULE_GET_CAR_CARRY_AMOUNT 53
#define car_carry_amount metarule(DEFINE_METARULE_GET_CAR_CARRY_AMOUNT, 0)
// Script MetaRule3's
#define METARULE3_CLR_FIXED_TIMED_EVENTS 100
#define rm_fixed_timer_event(WHO,FIXED_VAL) metarule3(METARULE3_CLR_FIXED_TIMED_EVENTS,WHO,FIXED_VAL,0)
#define METARULE3_MARK_SUBTILE 101
#define mark_world_subtile_visited(XPOS,YPOS,RADIUS) metarule3(METARULE3_MARK_SUBTILE,XPOS,YPOS,RADIUS)
///#define METARULE3_SET_WM_MUSIC 102
///#define set_worldmap_music(MAPIDX,MUSICNAME) metarule3(METARULE3_SET_WM_MUSIC,MAPIDX,MUSICNAME,0)
#define METARULE3_GET_KILL_COUNT 103
#define player_kill_count(TYPE) metarule3(METARULE3_GET_KILL_COUNT,TYPE,0,0)
// Off/On states for mark_map_entrance_state
#define OFFSTATE 0
#define ONSTATE 1
#define METARULE3_MARK_MAP_ENTRANCE 104
#define mark_map_entrance_state(MAPIDX,STATE) metarule3(METARULE3_MARK_MAP_ENTRANCE,MAPIDX,STATE,-1)
#define mark_map_entrance_elev_state(MAPIDX,ELEV,STATE) metarule3(METARULE3_MARK_MAP_ENTRANCE,MAPIDX,STATE,ELEV)
// wmSubTileVisitInfo Types:
#define UNKNOWNTILETYPE 0
#define KNOWNTILETYPE 1
#define VISITEDTILETYPE 2
#define METARULE3_WM_SUBTILE_STATE 105
#define wm_get_subtile_state(XPOS,YPOS) metarule3(METARULE3_WM_SUBTILE_STATE,XPOS,YPOS,0)
// Begin <objptr> tile_get_next_critter(tile, elevation, lastCritter)
//Note these defines are really messey.
#define METARULE3_TILE_GET_NEXT_CRITTER (106)
#define tile_get_next_critter(tile, elevation, lastCritter) metarule3(METARULE3_TILE_GET_NEXT_CRITTER, tile, elevation, lastCritter)
// End
#define METARULE3_ART_SET_BASE_FID_NUM (107)
#define art_change_fid_num(WHO, NUM) metarule3(METARULE3_ART_SET_BASE_FID_NUM,WHO,NUM,0)
#define METARULE3_TILE_SET_CENTER (108)
#define tile_set_center(tileNum) metarule3(METARULE3_TILE_SET_CENTER,tileNum,0,0)
#define METARULE3_CHEM_USE_LEVEL (109)
#define chem_use_level(WHO) metarule3(METARULE3_CHEM_USE_LEVEL,WHO,0,0)
#define METARULE3_CAR_OUT_OF_FUEL (110)
#define car_out_of_fuel metarule3(METARULE3_CAR_OUT_OF_FUEL,0,0,0)
#define METARULE3_MAP_GET_LOAD_AREA (111)
#define map_get_load_area metarule3(METARULE3_MAP_GET_LOAD_AREA,0,0,0)
// Used with mark_area_known
#define MARK_TYPE_TOWN (0)
#define MARK_TYPE_MAP (1)
// wmAreaVisitStateInfo;
#define MARK_STATE_UNKNOWN (0)
#define MARK_STATE_KNOWN (1)
#define MARK_STATE_VISITED (2)
#define MARK_STATE_INVISIBLE (-66)
// Inven Cmd defines //
#define INVEN_CMD_INDEX_PTR (13)
#define inven_ptr(WHO,WHERE) inven_cmds(WHO,INVEN_CMD_INDEX_PTR,WHERE)
/* Extra */
/* GSound Values */
// gsound_character_types
#define snd_human (0)
#define snd_monster (1)
// gsound_character_extra
#define snd_unused (0)
#define snd_knock_down (1)
#define snd_pass_out (2)
#define snd_die (3)
#define snd_contact (4)
// gsound_sfx_action
#define snd_active (0)
#define snd_passive (1)
// gsound_sfx_weapon_action_type
#define snd_weapon_ready (0)
#define snd_weapon_attack (1)
#define snd_weapon_out (2)
#define snd_weapon_ammo_flying (3)
#define snd_weapon_hitting (4)
// gsound_sfx_scenery_action
#define snd_open (0)
#define snd_close (1)
#define snd_locked (2)
#define snd_unlocked (3)
#define snd_used (4)
// hit_mode
#define hit_left_weapon_primary (0)
#define hit_left_weapon_secondary (1)
#define hit_right_weapon_primary (2)
#define hit_right_weapon_secondary (3)
#define hit_punch (4)
#define hit_kick (5)
#define hit_left_weapon_reload (6)
#define hit_right_weapon_reload (7)
#define fade_out gfade_out(1)
#define fade_in gfade_in(1)
/* Time Information (in Ticks) */
#define ONE_GAME_SECOND (10)
#define ONE_GAME_MINUTE (60 * ONE_GAME_SECOND)
#define ONE_GAME_HOUR (60 * ONE_GAME_MINUTE)
#define ONE_GAME_DAY (24 * ONE_GAME_HOUR)
#define ONE_GAME_WEEK (7 * ONE_GAME_DAY)
#define ONE_GAME_MONTH (30 * ONE_GAME_DAY)
/* bits */
#define bit_1 (1)
#define bit_2 (2)
#define bit_3 (4)
#define bit_4 (8)
#define bit_5 (0x10)
#define bit_6 (0x20)
#define bit_7 (0x40)
#define bit_8 (0x80)
#define bit_9 (0x100)
#define bit_10 (0x200)
#define bit_11 (0x400)
#define bit_12 (0x800)
#define bit_13 (0x1000)
#define bit_14 (0x2000)
#define bit_15 (0x4000)
#define bit_16 (0x8000)
#define bit_17 (0x10000)
#define bit_18 (0x20000)
#define bit_19 (0x40000)
#define bit_20 (0x80000)
#define bit_21 (0x100000)
#define bit_22 (0x200000)
#define bit_23 (0x400000)
#define bit_24 (0x800000)
#define bit_25 (0x1000000)
#define bit_26 (0x2000000)
#define bit_27 (0x4000000)
#define bit_28 (0x8000000)
#define bit_29 (0x10000000)
#define bit_30 (0x20000000)
#define bit_31 (0x40000000)
#define bit_32 (0x80000000)
#define bit_ALL (0xFFFFFFFF)
//Misc commands
#define obj_get_rot(obj) (has_trait(TRAIT_OBJECT, obj, OBJECT_CUR_ROT))
#define obj_in_party(x) (party_member_obj(obj_pid(x)) != 0)
#define dude_tile (tile_num(dude_obj))
#define dude_elevation (elevation(dude_obj))
#define dude_skill(x) (has_skill(dude_obj, x))
// some commands
#define mstr(x) message_str(NAME,x)
#define display_mstr(x) display_msg(mstr(x))
#define g_mstr(x) message_str(SCRIPT_GENERIC,x)
#endif // DEFINE_H