#include "types.h"
#include "externs.h"
-#ifdef USE_SCRIPT
-#include "event.h"
-#endif /* USE_SCRIPT */
-
/***** Some copyright messages follow below *****/
/*
random_artifact_resistance(q_ptr);
-#ifdef USE_SCRIPT
-
- q_ptr->python = object_create_callback(q_ptr);
-
-#endif /* USE_SCRIPT */
-
/* Drop the artifact from heaven */
(void)drop_near(q_ptr, -1, y, x);
}
{
int i, count;
-#ifdef USE_SCRIPT
- int result = get_player_realms_callback();
-
- if (result == -1)
- /* Restart */
- return FALSE;
- else if (result == 1)
- /* Success */
- return TRUE;
-#endif /* USE_SCRIPT */
-
/* Clean up infomation of modifications */
put_str(" ", 3, 40);
put_str(" ", 4, 40);
object_type *q_ptr;
-#ifdef USE_SCRIPT
- if (player_outfit_callback()) return;
-#endif /* USE_SCRIPT */
-
/* Get local object */
q_ptr = &forge;
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
break;
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
}
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
else if (p_ptr->pclass != CLASS_NINJA)
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
if (p_ptr->pclass == CLASS_RANGER)
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
else if (p_ptr->pclass == CLASS_ARCHER)
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
else if (p_ptr->pclass == CLASS_HIGH_MAGE)
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
else if (p_ptr->pclass == CLASS_SORCERER)
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
}
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_WAYBREAD));
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_JERKY));
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_PINT_OF_ALE));
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_PINT_OF_WINE));
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
else if (p_ptr->pclass == CLASS_NINJA)
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
object_aware(q_ptr);
object_known(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
(void)inven_carry(q_ptr);
}
}
char buf[80], cur[80];
-#ifdef USE_SCRIPT
- int result = get_player_race_callback();
-
- if (result == -1)
- /* Restart */
- return FALSE;
- else if (result == 1)
- /* Success */
- return TRUE;
-#endif /* USE_SCRIPT */
-
/* Extra info */
clear_from(10);
#ifdef JP
cptr str;
-#ifdef USE_SCRIPT
- int result = get_player_class_callback();
-
- if (result == -1)
- /* Restart */
- return FALSE;
- else if (result == 1)
- /* Success */
- return TRUE;
-#endif /* USE_SCRIPT */
-
/* Extra info */
clear_from(10);
#ifdef JP
cptr str;
-#ifdef USE_SCRIPT
- int result = get_player_seikaku_callback();
-
- if (result == -1)
- /* Restart */
- return FALSE;
- else if (result == 1)
- /* Success */
- return TRUE;
-#endif /* USE_SCRIPT */
-
/* Extra info */
clear_from(10);
#ifdef JP
char buf[80], cur[80];
char inp[80];
-#ifdef USE_SCRIPT
- int result;
-#endif /* USE_SCRIPT */
-
/*** Intro ***/
#endif
-#ifdef USE_SCRIPT
- /*
- * Ask for the world
- */
- result = get_world_callback();
-
- if (result == -1)
- /* Restart */
- return FALSE;
-
- /* Clean up */
- clear_from(10);
-#endif /* USE_SCRIPT */
-
/*** Player sex ***/
/* Extra info */
if (!bcost) set_reward = TRUE;
-#ifdef USE_SCRIPT
-
- if (building_command_callback(cave[py][px].feat - FEAT_BLDG_HEAD, i))
+ switch (bact)
{
- /* Script paid the price */
- paid = TRUE;
- }
- else
-
-#endif /* USE_SCRIPT */
-
- {
- switch (bact)
- {
- case BACT_NOTHING:
+ case BACT_NOTHING:
/* Do nothing */
- break;
- case BACT_RESEARCH_ITEM:
- paid = identify_fully(FALSE);
- break;
- case BACT_TOWN_HISTORY:
- town_history();
- break;
- case BACT_RACE_LEGENDS:
- race_legends();
- break;
- case BACT_QUEST:
- castle_quest();
- break;
- case BACT_KING_LEGENDS:
- case BACT_ARENA_LEGENDS:
- case BACT_LEGENDS:
- show_highclass(building_loc);
- break;
- case BACT_POSTER:
- case BACT_ARENA_RULES:
- case BACT_ARENA:
- arena_comm(bact);
- break;
- case BACT_IN_BETWEEN:
- case BACT_CRAPS:
- case BACT_SPIN_WHEEL:
- case BACT_DICE_SLOTS:
- case BACT_GAMBLE_RULES:
- case BACT_POKER:
- gamble_comm(bact);
- break;
- case BACT_REST:
- case BACT_RUMORS:
- case BACT_FOOD:
- paid = inn_comm(bact);
- break;
- case BACT_RESEARCH_MONSTER:
- paid = research_mon();
- break;
- case BACT_COMPARE_WEAPONS:
- paid = compare_weapons();
- break;
- case BACT_ENCHANT_WEAPON:
- item_tester_hook = item_tester_hook_melee_weapon;
- enchant_item(bcost, 1, 1, 0);
- break;
- case BACT_ENCHANT_ARMOR:
- item_tester_hook = item_tester_hook_armour;
- enchant_item(bcost, 0, 0, 1);
- break;
- case BACT_RECHARGE:
- building_recharge();
- break;
- case BACT_RECHARGE_ALL:
- building_recharge_all();
- break;
- case BACT_IDENTS: /* needs work */
+ break;
+ case BACT_RESEARCH_ITEM:
+ paid = identify_fully(FALSE);
+ break;
+ case BACT_TOWN_HISTORY:
+ town_history();
+ break;
+ case BACT_RACE_LEGENDS:
+ race_legends();
+ break;
+ case BACT_QUEST:
+ castle_quest();
+ break;
+ case BACT_KING_LEGENDS:
+ case BACT_ARENA_LEGENDS:
+ case BACT_LEGENDS:
+ show_highclass(building_loc);
+ break;
+ case BACT_POSTER:
+ case BACT_ARENA_RULES:
+ case BACT_ARENA:
+ arena_comm(bact);
+ break;
+ case BACT_IN_BETWEEN:
+ case BACT_CRAPS:
+ case BACT_SPIN_WHEEL:
+ case BACT_DICE_SLOTS:
+ case BACT_GAMBLE_RULES:
+ case BACT_POKER:
+ gamble_comm(bact);
+ break;
+ case BACT_REST:
+ case BACT_RUMORS:
+ case BACT_FOOD:
+ paid = inn_comm(bact);
+ break;
+ case BACT_RESEARCH_MONSTER:
+ paid = research_mon();
+ break;
+ case BACT_COMPARE_WEAPONS:
+ paid = compare_weapons();
+ break;
+ case BACT_ENCHANT_WEAPON:
+ item_tester_hook = item_tester_hook_melee_weapon;
+ enchant_item(bcost, 1, 1, 0);
+ break;
+ case BACT_ENCHANT_ARMOR:
+ item_tester_hook = item_tester_hook_armour;
+ enchant_item(bcost, 0, 0, 1);
+ break;
+ case BACT_RECHARGE:
+ building_recharge();
+ break;
+ case BACT_RECHARGE_ALL:
+ building_recharge_all();
+ break;
+ case BACT_IDENTS: /* needs work */
#ifdef JP
- if (!get_check("»ý¤Áʪ¤òÁ´¤Æ´ÕÄꤷ¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
- identify_pack();
- msg_print(" »ý¤ÁʪÁ´¤Æ¤¬´ÕÄꤵ¤ì¤Þ¤·¤¿¡£");
+ if (!get_check("»ý¤Áʪ¤òÁ´¤Æ´ÕÄꤷ¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) break;
+ identify_pack();
+ msg_print(" »ý¤ÁʪÁ´¤Æ¤¬´ÕÄꤵ¤ì¤Þ¤·¤¿¡£");
#else
- if (!get_check("Do you pay for identify all your possession? ")) break;
- identify_pack();
- msg_print("Your possessions have been identified.");
+ if (!get_check("Do you pay for identify all your possession? ")) break;
+ identify_pack();
+ msg_print("Your possessions have been identified.");
#endif
- paid = TRUE;
- break;
- case BACT_IDENT_ONE: /* needs work */
- paid = ident_spell(FALSE);
- break;
- case BACT_LEARN:
- do_cmd_study();
- break;
- case BACT_HEALING: /* needs work */
- hp_player(200);
- set_poisoned(0);
- set_blind(0);
- set_confused(0);
- set_cut(0);
- set_stun(0);
- paid = TRUE;
- break;
- case BACT_RESTORE: /* needs work */
- if (do_res_stat(A_STR)) paid = TRUE;
- if (do_res_stat(A_INT)) paid = TRUE;
- if (do_res_stat(A_WIS)) paid = TRUE;
- if (do_res_stat(A_DEX)) paid = TRUE;
- if (do_res_stat(A_CON)) paid = TRUE;
- if (do_res_stat(A_CHR)) paid = TRUE;
- break;
- case BACT_GOLD: /* set timed reward flag */
- if (!p_ptr->rewards[BACT_GOLD])
- {
- share_gold();
- p_ptr->rewards[BACT_GOLD] = TRUE;
- }
- else
- {
+ paid = TRUE;
+ break;
+ case BACT_IDENT_ONE: /* needs work */
+ paid = ident_spell(FALSE);
+ break;
+ case BACT_LEARN:
+ do_cmd_study();
+ break;
+ case BACT_HEALING: /* needs work */
+ hp_player(200);
+ set_poisoned(0);
+ set_blind(0);
+ set_confused(0);
+ set_cut(0);
+ set_stun(0);
+ paid = TRUE;
+ break;
+ case BACT_RESTORE: /* needs work */
+ if (do_res_stat(A_STR)) paid = TRUE;
+ if (do_res_stat(A_INT)) paid = TRUE;
+ if (do_res_stat(A_WIS)) paid = TRUE;
+ if (do_res_stat(A_DEX)) paid = TRUE;
+ if (do_res_stat(A_CON)) paid = TRUE;
+ if (do_res_stat(A_CHR)) paid = TRUE;
+ break;
+ case BACT_GOLD: /* set timed reward flag */
+ if (!p_ptr->rewards[BACT_GOLD])
+ {
+ share_gold();
+ p_ptr->rewards[BACT_GOLD] = TRUE;
+ }
+ else
+ {
#ifdef JP
-msg_print("º£Æü¤Îʬ¤±Á°¤Ï¤¹¤Ç¤Ë»Ùʧ¤Ã¤¿¤¾¡ª");
+ msg_print("º£Æü¤Îʬ¤±Á°¤Ï¤¹¤Ç¤Ë»Ùʧ¤Ã¤¿¤¾¡ª");
#else
- msg_print("You just had your daily allowance!");
+ msg_print("You just had your daily allowance!");
#endif
- }
- break;
- case BACT_ENCHANT_ARROWS:
- item_tester_hook = item_tester_hook_ammo;
- enchant_item(bcost, 1, 1, 0);
- break;
- case BACT_ENCHANT_BOW:
- item_tester_tval = TV_BOW;
- enchant_item(bcost, 1, 1, 0);
- break;
- case BACT_RECALL:
- if (recall_player(1)) paid = TRUE;
- break;
- case BACT_TELEPORT_LEVEL:
- {
- int select_dungeon;
- int i, num = 0;
- s16b *dun;
- int max_depth;
+ }
+ break;
+ case BACT_ENCHANT_ARROWS:
+ item_tester_hook = item_tester_hook_ammo;
+ enchant_item(bcost, 1, 1, 0);
+ break;
+ case BACT_ENCHANT_BOW:
+ item_tester_tval = TV_BOW;
+ enchant_item(bcost, 1, 1, 0);
+ break;
+ case BACT_RECALL:
+ if (recall_player(1)) paid = TRUE;
+ break;
+ case BACT_TELEPORT_LEVEL:
+ {
+ int select_dungeon;
+ int i, num = 0;
+ s16b *dun;
+ int max_depth;
- /* Allocate the "dun" array */
- C_MAKE(dun, max_d_idx, s16b);
+ /* Allocate the "dun" array */
+ C_MAKE(dun, max_d_idx, s16b);
- screen_save();
- clear_bldg(4, 20);
+ screen_save();
+ clear_bldg(4, 20);
- for(i = 1; i < max_d_idx; i++)
- {
- char buf[80];
- bool seiha = FALSE;
+ for(i = 1; i < max_d_idx; i++)
+ {
+ char buf[80];
+ bool seiha = FALSE;
- if (!d_info[i].maxdepth) continue;
- if (!max_dlv[i]) continue;
- if (d_info[i].final_guardian)
- {
- if (!r_info[d_info[i].final_guardian].max_num) seiha = TRUE;
- }
- else if (max_dlv[i] == d_info[i].maxdepth) seiha = TRUE;
+ if (!d_info[i].maxdepth) continue;
+ if (!max_dlv[i]) continue;
+ if (d_info[i].final_guardian)
+ {
+ if (!r_info[d_info[i].final_guardian].max_num) seiha = TRUE;
+ }
+ else if (max_dlv[i] == d_info[i].maxdepth) seiha = TRUE;
#ifdef JP
- sprintf(buf,"%c) %c%-12s : ºÇÂç %d ³¬", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
+ sprintf(buf,"%c) %c%-12s : ºÇÂç %d ³¬", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
#else
- sprintf(buf,"%c) %c%-12s : Max level %d", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
+ sprintf(buf,"%c) %c%-12s : Max level %d", 'a'+num, seiha ? '!' : ' ', d_name + d_info[i].name, max_dlv[i]);
#endif
- put_str(buf, 4+num, 5);
- dun[num] = i;
- num++;
- }
+ put_str(buf, 4+num, 5);
+ dun[num] = i;
+ num++;
+ }
#ifdef JP
- prt("¤É¤Î¥À¥ó¥¸¥ç¥ó¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«:", 0, 0);
+ prt("¤É¤Î¥À¥ó¥¸¥ç¥ó¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«:", 0, 0);
#else
- prt("Which dungeon do you teleport?: ", 0, 0);
+ prt("Which dungeon do you teleport?: ", 0, 0);
#endif
- while(1)
- {
- i = inkey();
+ while(1)
+ {
+ i = inkey();
- if (i == ESCAPE)
- {
- /* Free the "dun" array */
- C_KILL(dun, max_d_idx, s16b);
+ if (i == ESCAPE)
+ {
+ /* Free the "dun" array */
+ C_KILL(dun, max_d_idx, s16b);
- screen_load();
- return;
- }
- if (i >= 'a' && i <('a'+num))
- {
- select_dungeon = dun[i-'a'];
- break;
- }
- else bell();
- }
screen_load();
+ return;
+ }
+ if (i >= 'a' && i <('a'+num))
+ {
+ select_dungeon = dun[i-'a'];
+ break;
+ }
+ else bell();
+ }
+ screen_load();
- /* Free the "dun" array */
- C_KILL(dun, max_d_idx, s16b);
+ /* Free the "dun" array */
+ C_KILL(dun, max_d_idx, s16b);
- max_depth = d_info[select_dungeon].maxdepth;
+ max_depth = d_info[select_dungeon].maxdepth;
- /* Limit depth in Angband */
- if (select_dungeon == DUNGEON_ANGBAND)
- {
- if (quest[QUEST_OBERON].status != QUEST_STATUS_FINISHED) max_depth = 98;
- else if(quest[QUEST_SERPENT].status != QUEST_STATUS_FINISHED) max_depth = 99;
- }
+ /* Limit depth in Angband */
+ if (select_dungeon == DUNGEON_ANGBAND)
+ {
+ if (quest[QUEST_OBERON].status != QUEST_STATUS_FINISHED) max_depth = 98;
+ else if(quest[QUEST_SERPENT].status != QUEST_STATUS_FINISHED) max_depth = 99;
+ }
#ifdef JP
-amt = get_quantity(format("%s¤Î²¿³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©", d_name + d_info[select_dungeon].name), max_depth);
+ amt = get_quantity(format("%s¤Î²¿³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©", d_name + d_info[select_dungeon].name), max_depth);
#else
-amt = get_quantity(format("Teleport to which level of %s? ", d_name + d_info[select_dungeon].name), max_depth);
+ amt = get_quantity(format("Teleport to which level of %s? ", d_name + d_info[select_dungeon].name), max_depth);
#endif
- if (amt > 0)
- {
- p_ptr->word_recall = 1;
- p_ptr->recall_dungeon = select_dungeon;
- max_dlv[p_ptr->recall_dungeon] = ((amt > d_info[select_dungeon].maxdepth) ? d_info[select_dungeon].maxdepth : ((amt < d_info[select_dungeon].mindepth) ? d_info[select_dungeon].mindepth : amt));
- if (record_maxdeapth)
+ if (amt > 0)
+ {
+ p_ptr->word_recall = 1;
+ p_ptr->recall_dungeon = select_dungeon;
+ max_dlv[p_ptr->recall_dungeon] = ((amt > d_info[select_dungeon].maxdepth) ? d_info[select_dungeon].maxdepth : ((amt < d_info[select_dungeon].mindepth) ? d_info[select_dungeon].mindepth : amt));
+ if (record_maxdeapth)
#ifdef JP
- do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "¥È¥é¥ó¥×¥¿¥ï¡¼¤Ç");
+ do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "¥È¥é¥ó¥×¥¿¥ï¡¼¤Ç");
#else
- do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "at Trump Tower");
+ do_cmd_write_nikki(NIKKI_TRUMP, select_dungeon, "at Trump Tower");
#endif
#ifdef JP
-msg_print("²ó¤ê¤ÎÂ絤¤¬Ä¥¤ê¤Ä¤á¤Æ¤¤¿...");
+ msg_print("²ó¤ê¤ÎÂ絤¤¬Ä¥¤ê¤Ä¤á¤Æ¤¤¿...");
#else
- msg_print("The air about you becomes charged...");
+ msg_print("The air about you becomes charged...");
#endif
- paid = TRUE;
- p_ptr->redraw |= (PR_STATUS);
- }
- break;
- }
- case BACT_LOSE_MUTATION:
- paid = lose_mutation(0);
- /* ToDo: Better message text. */
- if (!paid)
+ paid = TRUE;
+ p_ptr->redraw |= (PR_STATUS);
+ }
+ break;
+ }
+ case BACT_LOSE_MUTATION:
+ paid = lose_mutation(0);
+ /* ToDo: Better message text. */
+ if (!paid)
#ifdef JP
-msg_print("´ñ̯¤Ê¤¯¤é¤¤ÉáÄ̤ˤʤ俵¤¤¬¤¹¤ë¡£");
+ msg_print("´ñ̯¤Ê¤¯¤é¤¤ÉáÄ̤ˤʤ俵¤¤¬¤¹¤ë¡£");
#else
- msg_print("You feel oddly normal.");
+ msg_print("You feel oddly normal.");
#endif
- break;
- case BACT_BATTLE:
- kakutoujou();
- break;
- case BACT_TSUCHINOKO:
- tsuchinoko();
- break;
- case BACT_KUBI:
- shoukinkubi();
- break;
- case BACT_TARGET:
- today_target();
- break;
- case BACT_KANKIN:
- kankin();
- break;
- case BACT_HEIKOUKA:
-#ifdef JP
-msg_print("Ê¿¹Õ²½¤Îµ·¼°¤ò¹Ô¤Ê¤Ã¤¿¡£");
-#else
- msg_print("You received an equalization ritual.");
-#endif
- set_virtue(V_COMPASSION, 0);
- set_virtue(V_HONOUR, 0);
- set_virtue(V_JUSTICE, 0);
- set_virtue(V_SACRIFICE, 0);
- set_virtue(V_KNOWLEDGE, 0);
- set_virtue(V_FAITH, 0);
- set_virtue(V_ENLIGHTEN, 0);
- set_virtue(V_ENCHANT, 0);
- set_virtue(V_CHANCE, 0);
- set_virtue(V_NATURE, 0);
- set_virtue(V_HARMONY, 0);
- set_virtue(V_VITALITY, 0);
- set_virtue(V_UNLIFE, 0);
- set_virtue(V_PATIENCE, 0);
- set_virtue(V_TEMPERANCE, 0);
- set_virtue(V_DILIGENCE, 0);
- set_virtue(V_VALOUR, 0);
- set_virtue(V_INDIVIDUALISM, 0);
- get_virtues();
- paid = TRUE;
- break;
- case BACT_TELE_TOWN:
- paid = tele_town();
- break;
- }
+ break;
+ case BACT_BATTLE:
+ kakutoujou();
+ break;
+ case BACT_TSUCHINOKO:
+ tsuchinoko();
+ break;
+ case BACT_KUBI:
+ shoukinkubi();
+ break;
+ case BACT_TARGET:
+ today_target();
+ break;
+ case BACT_KANKIN:
+ kankin();
+ break;
+ case BACT_HEIKOUKA:
+#ifdef JP
+ msg_print("Ê¿¹Õ²½¤Îµ·¼°¤ò¹Ô¤Ê¤Ã¤¿¡£");
+#else
+ msg_print("You received an equalization ritual.");
+#endif
+ set_virtue(V_COMPASSION, 0);
+ set_virtue(V_HONOUR, 0);
+ set_virtue(V_JUSTICE, 0);
+ set_virtue(V_SACRIFICE, 0);
+ set_virtue(V_KNOWLEDGE, 0);
+ set_virtue(V_FAITH, 0);
+ set_virtue(V_ENLIGHTEN, 0);
+ set_virtue(V_ENCHANT, 0);
+ set_virtue(V_CHANCE, 0);
+ set_virtue(V_NATURE, 0);
+ set_virtue(V_HARMONY, 0);
+ set_virtue(V_VITALITY, 0);
+ set_virtue(V_UNLIFE, 0);
+ set_virtue(V_PATIENCE, 0);
+ set_virtue(V_TEMPERANCE, 0);
+ set_virtue(V_DILIGENCE, 0);
+ set_virtue(V_VALOUR, 0);
+ set_virtue(V_INDIVIDUALISM, 0);
+ get_virtues();
+ paid = TRUE;
+ break;
+ case BACT_TELE_TOWN:
+ paid = tele_town();
+ break;
}
if (paid)
/* Access the grid */
c_ptr = &cave[y][x];
-#ifdef USE_SCRIPT
- if (player_search_grid_callback(y, x))
- {
- /* Disturb */
- disturb(0, 0);
-
- return;
- }
-#endif /* USE_SCRIPT */
-
/* Invisible trap */
if (c_ptr->info & CAVE_TRAP)
{
{
int oy, ox;
-#ifdef USE_SCRIPT
- if (player_enter_grid_callback(y, x)) return;
-
- /* Player movement callback */
- if (player_move_callback(y, x)) return;
-#endif /* USE_SCRIPT */
-
#ifdef USE_FRAKIR
if (p_ptr->warning)
{
do_cmd_write_nikki(NIKKI_FIX_QUEST_F, leaving_quest, NULL);
}
-#ifdef USE_SCRIPT
- if (cmd_go_up_callback()) return;
-#endif /* USE_SCRIPT */
-
/* Activate the quest */
if (!quest[p_ptr->inside_quest].status)
{
if (autosave_l) do_cmd_save_game(TRUE);
-#ifdef USE_SCRIPT
- if (cmd_go_up_callback()) return;
-#endif /* USE_SCRIPT */
-
if (p_ptr->inside_quest)
{
leaving_quest = p_ptr->inside_quest;
/* Take a turn */
energy_use = 100;
-#ifdef USE_SCRIPT
- if (cmd_search_callback(py, px))
- {
- /* Disturb */
- disturb(0, 0);
-
- return;
- }
-#endif /* USE_SCRIPT */
-
/* Search */
search();
}
if (!make_object(q_ptr, TRUE, great)) continue;
}
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* If chest scatters its contents, pick any floor square. */
if (scatter)
{
y = py + ddy[dir];
x = px + ddx[dir];
-#ifdef USE_SCRIPT
- if (cmd_open_callback(y, x))
- {
- /* Don't repeat the action */
- disturb(0, 0);
- return;
- }
-#endif /* USE_SCRIPT */
-
/* Get requested grid */
c_ptr = &cave[y][x];
}
}
-#ifdef USE_SCRIPT
-
- if (destroy_object_callback(o_ptr, amt)) return;
-
-#endif /* USE_SCRIPT */
-
/* Take a turn */
energy_use = 100;
/* Verify the feeling */
if (feeling > 10) feeling = 10;
-#ifdef USE_SCRIPT
- if (cmd_feeling_callback(feeling)) return;
-#endif /* USE_SCRIPT */
-
/* No useful feeling in quests */
if (p_ptr->inside_quest && !random_quest_number(dun_level))
{
o_ptr = &o_list[0 - item];
}
-#ifdef USE_SCRIPT
- if (object_browse_callback(o_ptr)) return;
-#endif /* USE_SCRIPT */
-
/* Access the item's sval */
sval = o_ptr->sval;
*/
void do_cmd_cast(void)
{
-#ifdef USE_SCRIPT
- use_skill_callback();
-#else /* USE_SCRIPT */
int item, sval, spell, realm;
int chance;
int increment = 0;
o_ptr = &o_list[0 - item];
}
-#ifdef USE_SCRIPT
- if (object_cast_callback(o_ptr)) return;
-#endif /* USE_SCRIPT */
-
/* Access the item's sval */
sval = o_ptr->sval;
/* Window stuff */
p_ptr->window |= (PW_PLAYER);
p_ptr->window |= (PW_SPELL);
-#endif /* USE_SCRIPT */
}
/* Object level */
lev = get_object_level(o_ptr);
-#ifdef USE_SCRIPT
- eat_callback(o_ptr->sval);
-
- if (!object_eat_callback(o_ptr))
-#endif /* USE_SCRIPT */
-
+ if (o_ptr->tval == TV_FOOD)
{
- if (o_ptr->tval == TV_FOOD)
- {
/* Analyze the food */
switch (o_ptr->sval)
{
case SV_FOOD_WEAKNESS:
{
#ifdef JP
- take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "ÆÇÆþ¤ê¿©ÎÁ", -1);
+ take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "ÆÇÆþ¤ê¿©ÎÁ", -1);
#else
take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "poisonous food", -1);
#endif
case SV_FOOD_SICKNESS:
{
#ifdef JP
- take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "ÆÇÆþ¤ê¿©ÎÁ", -1);
+ take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "ÆÇÆþ¤ê¿©ÎÁ", -1);
#else
take_hit(DAMAGE_NOESCAPE, damroll(6, 6), "poisonous food", -1);
#endif
case SV_FOOD_STUPIDITY:
{
#ifdef JP
- take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "ÆÇÆþ¤ê¿©ÎÁ", -1);
+ take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "ÆÇÆþ¤ê¿©ÎÁ", -1);
#else
take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "poisonous food", -1);
#endif
case SV_FOOD_NAIVETY:
{
#ifdef JP
- take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "ÆÇÆþ¤ê¿©ÎÁ", -1);
+ take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "ÆÇÆþ¤ê¿©ÎÁ", -1);
#else
take_hit(DAMAGE_NOESCAPE, damroll(8, 8), "poisonous food", -1);
#endif
case SV_FOOD_UNHEALTH:
{
#ifdef JP
- take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "ÆÇÆþ¤ê¿©ÎÁ", -1);
+ take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "ÆÇÆþ¤ê¿©ÎÁ", -1);
#else
take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "poisonous food", -1);
#endif
case SV_FOOD_DISEASE:
{
#ifdef JP
- take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "ÆÇÆþ¤ê¿©ÎÁ", -1);
+ take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "ÆÇÆþ¤ê¿©ÎÁ", -1);
#else
take_hit(DAMAGE_NOESCAPE, damroll(10, 10), "poisonous food", -1);
#endif
#ifdef JP
- /* ¤½¤ì¤¾¤ì¤Î¿©¤Ùʪ¤Î´¶ÁÛ¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¸½ */
- case SV_FOOD_BISCUIT:
- {
- msg_print("´Å¤¯¤Æ¥µ¥¯¥µ¥¯¤·¤Æ¤È¤Æ¤â¤ª¤¤¤·¤¤¡£");
- ident = TRUE;
- break;
- }
+ /* ¤½¤ì¤¾¤ì¤Î¿©¤Ùʪ¤Î´¶ÁÛ¤ò¥ª¥ê¥¸¥Ê¥ë¤è¤êºÙ¤«¤¯É½¸½ */
+ case SV_FOOD_BISCUIT:
+ {
+ msg_print("´Å¤¯¤Æ¥µ¥¯¥µ¥¯¤·¤Æ¤È¤Æ¤â¤ª¤¤¤·¤¤¡£");
+ ident = TRUE;
+ break;
+ }
- case SV_FOOD_JERKY:
- {
- msg_print("»õ¤´¤¿¤¨¤¬¤¢¤Ã¤Æ¤ª¤¤¤·¤¤¡£");
- ident = TRUE;
- break;
- }
+ case SV_FOOD_JERKY:
+ {
+ msg_print("»õ¤´¤¿¤¨¤¬¤¢¤Ã¤Æ¤ª¤¤¤·¤¤¡£");
+ ident = TRUE;
+ break;
+ }
- case SV_FOOD_SLIME_MOLD:
- {
- msg_print("¤³¤ì¤Ï¤Ê¤ó¤È¤â·ÁÍƤ·¤¬¤¿¤¤Ì£¤À¡£");
- ident = TRUE;
- break;
- }
+ case SV_FOOD_SLIME_MOLD:
+ {
+ msg_print("¤³¤ì¤Ï¤Ê¤ó¤È¤â·ÁÍƤ·¤¬¤¿¤¤Ì£¤À¡£");
+ ident = TRUE;
+ break;
+ }
- case SV_FOOD_RATION:
- {
- msg_print("¤³¤ì¤Ï¤ª¤¤¤·¤¤¡£");
- ident = TRUE;
- break;
- }
+ case SV_FOOD_RATION:
+ {
+ msg_print("¤³¤ì¤Ï¤ª¤¤¤·¤¤¡£");
+ ident = TRUE;
+ break;
+ }
#else
case SV_FOOD_RATION:
case SV_FOOD_BISCUIT:
case SV_FOOD_WAYBREAD:
{
#ifdef JP
- msg_print("¤³¤ì¤Ï¤Ò¤¸¤ç¤¦¤ËÈþÌ£¤À¡£");
+ msg_print("¤³¤ì¤Ï¤Ò¤¸¤ç¤¦¤ËÈþÌ£¤À¡£");
#else
msg_print("That tastes good.");
#endif
#ifdef JP
case SV_FOOD_PINT_OF_ALE:
- {
- msg_print("¤Î¤É¤´¤·Á֤䤫¤À¡£");
- ident = TRUE;
- break;
- }
+ {
+ msg_print("¤Î¤É¤´¤·Á֤䤫¤À¡£");
+ ident = TRUE;
+ break;
+ }
case SV_FOOD_PINT_OF_WINE:
{
#endif
}
- }
- else
- {
- }
}
/* Combine / Reorder the pack (later) */
/* Create the item */
object_prep(q_ptr, lookup_kind(o_ptr->tval, o_ptr->sval));
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop the object from heaven */
(void)drop_near(q_ptr, -1, py, px);
}
#define SAVEFILE_VERSION 3
/* Added for ZAngband */
-#ifdef USE_SCRIPT
-#define FAKE_VERSION 0
-#define FAKE_VER_MAJOR 3
-#define FAKE_VER_MINOR 0
-#define FAKE_VER_PATCH 0
-#else /* USE_SCRIPT */
#define FAKE_VERSION 0
#define FAKE_VER_MAJOR 11
#define FAKE_VER_MINOR 0
#define FAKE_VER_PATCH 8
-#endif /* USE_SCRIPT */
#define ANGBAND_2_8_1
#define ZANGBAND
bool heavy = FALSE;
object_type *o_ptr;
-#ifdef USE_SCRIPT
- int result;
-#endif /* USE_SCRIPT */
-
/*** Check for "sensing" ***/
/* No sensing when confused */
if (p_ptr->confused) return;
-#ifdef USE_SCRIPT
-
- result = sense_inventory_callback();
-
- if (result == -1)
- heavy = TRUE;
-
- if (!result)
-
-#endif /* USE_SCRIPT */
-
+ /* Analyze the class */
+ switch (p_ptr->pclass)
{
- /* Analyze the class */
- switch (p_ptr->pclass)
+ case CLASS_WARRIOR:
+ case CLASS_ARCHER:
+ case CLASS_SAMURAI:
+ case CLASS_CAVALRY:
{
- case CLASS_WARRIOR:
- case CLASS_ARCHER:
- case CLASS_SAMURAI:
- case CLASS_CAVALRY:
- {
- /* Good sensing */
- if (0 != rand_int(9000L / (plev * plev + 40))) return;
+ /* Good sensing */
+ if (0 != rand_int(9000L / (plev * plev + 40))) return;
- /* Heavy sensing */
- heavy = TRUE;
+ /* Heavy sensing */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_SMITH:
- {
- /* Good sensing */
- if (0 != rand_int(6000L / (plev * plev + 50))) return;
+ case CLASS_SMITH:
+ {
+ /* Good sensing */
+ if (0 != rand_int(6000L / (plev * plev + 50))) return;
- /* Heavy sensing */
- heavy = TRUE;
+ /* Heavy sensing */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_MAGE:
- case CLASS_HIGH_MAGE:
- case CLASS_SORCERER:
- case CLASS_MAGIC_EATER:
- {
- /* Very bad (light) sensing */
- if (0 != rand_int(240000L / (plev + 5))) return;
+ case CLASS_MAGE:
+ case CLASS_HIGH_MAGE:
+ case CLASS_SORCERER:
+ case CLASS_MAGIC_EATER:
+ {
+ /* Very bad (light) sensing */
+ if (0 != rand_int(240000L / (plev + 5))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_PRIEST:
- case CLASS_BARD:
- {
- /* Good (light) sensing */
- if (0 != rand_int(10000L / (plev * plev + 40))) return;
+ case CLASS_PRIEST:
+ case CLASS_BARD:
+ {
+ /* Good (light) sensing */
+ if (0 != rand_int(10000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_ROGUE:
- case CLASS_NINJA:
- {
- /* Okay sensing */
- if (0 != rand_int(20000L / (plev * plev + 40))) return;
+ case CLASS_ROGUE:
+ case CLASS_NINJA:
+ {
+ /* Okay sensing */
+ if (0 != rand_int(20000L / (plev * plev + 40))) return;
- /* Heavy sensing */
- heavy = TRUE;
+ /* Heavy sensing */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_RANGER:
- {
- /* Bad sensing */
- if (0 != rand_int(95000L / (plev * plev + 40))) return;
+ case CLASS_RANGER:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(95000L / (plev * plev + 40))) return;
- /* Changed! */
- heavy = TRUE;
+ /* Changed! */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_PALADIN:
- {
- /* Bad sensing */
- if (0 != rand_int(77777L / (plev * plev + 40))) return;
+ case CLASS_PALADIN:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(77777L / (plev * plev + 40))) return;
- /* Heavy sensing */
- heavy = TRUE;
+ /* Heavy sensing */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_WARRIOR_MAGE:
- case CLASS_RED_MAGE:
- {
- /* Bad sensing */
- if (0 != rand_int(75000L / (plev * plev + 40))) return;
+ case CLASS_WARRIOR_MAGE:
+ case CLASS_RED_MAGE:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(75000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_MINDCRAFTER:
- case CLASS_MIRROR_MASTER:
- {
- /* Bad sensing */
- if (0 != rand_int(55000L / (plev * plev + 40))) return;
+ case CLASS_MINDCRAFTER:
+ case CLASS_MIRROR_MASTER:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(55000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_CHAOS_WARRIOR:
- {
- /* Bad sensing */
- if (0 != rand_int(80000L / (plev * plev + 40))) return;
+ case CLASS_CHAOS_WARRIOR:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(80000L / (plev * plev + 40))) return;
- /* Changed! */
- heavy = TRUE;
+ /* Changed! */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_MONK:
- case CLASS_FORCETRAINER:
- {
- /* Okay sensing */
- if (0 != rand_int(20000L / (plev * plev + 40))) return;
+ case CLASS_MONK:
+ case CLASS_FORCETRAINER:
+ {
+ /* Okay sensing */
+ if (0 != rand_int(20000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_TOURIST:
- {
- /* Good sensing */
- if (0 != rand_int(20000L / ((plev+50)*(plev+50)))) return;
+ case CLASS_TOURIST:
+ {
+ /* Good sensing */
+ if (0 != rand_int(20000L / ((plev+50)*(plev+50)))) return;
- /* Heavy sensing */
- heavy = TRUE;
+ /* Heavy sensing */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_IMITATOR:
- case CLASS_BLUE_MAGE:
- {
- /* Bad sensing */
- if (0 != rand_int(55000L / (plev * plev + 40))) return;
+ case CLASS_IMITATOR:
+ case CLASS_BLUE_MAGE:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(55000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_BEASTMASTER:
- {
- /* Bad sensing */
- if (0 != rand_int(65000L / (plev * plev + 40))) return;
+ case CLASS_BEASTMASTER:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(65000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
- case CLASS_BERSERKER:
- {
- /* Heavy sensing */
- heavy = TRUE;
+ /* Done */
+ break;
+ }
+ case CLASS_BERSERKER:
+ {
+ /* Heavy sensing */
+ heavy = TRUE;
- /* Done */
- break;
- }
+ /* Done */
+ break;
}
}
int plev = p_ptr->lev;
object_type *o_ptr;
-#ifdef USE_SCRIPT
- int result;
-#endif /* USE_SCRIPT */
-
/*** Check for "sensing" ***/
/* No sensing when confused */
if (p_ptr->confused) return;
-#ifdef USE_SCRIPT
-
- result = sense_inventory_callback();
-
- if (!result)
-
-#endif /* USE_SCRIPT */
-
+ /* Analyze the class */
+ switch (p_ptr->pclass)
{
- /* Analyze the class */
- switch (p_ptr->pclass)
+ case CLASS_WARRIOR:
+ case CLASS_ARCHER:
+ case CLASS_SAMURAI:
+ case CLASS_CAVALRY:
+ case CLASS_BERSERKER:
{
- case CLASS_WARRIOR:
- case CLASS_ARCHER:
- case CLASS_SAMURAI:
- case CLASS_CAVALRY:
- case CLASS_BERSERKER:
- {
- return;
- }
+ return;
+ }
- case CLASS_SMITH:
- case CLASS_PALADIN:
- case CLASS_CHAOS_WARRIOR:
- case CLASS_IMITATOR:
- case CLASS_BEASTMASTER:
- case CLASS_NINJA:
- {
- /* Very bad (light) sensing */
- if (0 != rand_int(240000L / (plev + 5))) return;
+ case CLASS_SMITH:
+ case CLASS_PALADIN:
+ case CLASS_CHAOS_WARRIOR:
+ case CLASS_IMITATOR:
+ case CLASS_BEASTMASTER:
+ case CLASS_NINJA:
+ {
+ /* Very bad (light) sensing */
+ if (0 != rand_int(240000L / (plev + 5))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_RANGER:
- case CLASS_WARRIOR_MAGE:
- case CLASS_RED_MAGE:
- case CLASS_MONK:
- {
- /* Bad sensing */
- if (0 != rand_int(95000L / (plev * plev + 40))) return;
+ case CLASS_RANGER:
+ case CLASS_WARRIOR_MAGE:
+ case CLASS_RED_MAGE:
+ case CLASS_MONK:
+ {
+ /* Bad sensing */
+ if (0 != rand_int(95000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_PRIEST:
- case CLASS_BARD:
- case CLASS_ROGUE:
- case CLASS_FORCETRAINER:
- case CLASS_MINDCRAFTER:
- {
- /* Good sensing */
- if (0 != rand_int(20000L / (plev * plev + 40))) return;
+ case CLASS_PRIEST:
+ case CLASS_BARD:
+ case CLASS_ROGUE:
+ case CLASS_FORCETRAINER:
+ case CLASS_MINDCRAFTER:
+ {
+ /* Good sensing */
+ if (0 != rand_int(20000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_MAGE:
- case CLASS_HIGH_MAGE:
- case CLASS_SORCERER:
- case CLASS_MAGIC_EATER:
- case CLASS_MIRROR_MASTER:
- case CLASS_BLUE_MAGE:
- {
- /* Good sensing */
- if (0 != rand_int(9000L / (plev * plev + 40))) return;
+ case CLASS_MAGE:
+ case CLASS_HIGH_MAGE:
+ case CLASS_SORCERER:
+ case CLASS_MAGIC_EATER:
+ case CLASS_MIRROR_MASTER:
+ case CLASS_BLUE_MAGE:
+ {
+ /* Good sensing */
+ if (0 != rand_int(9000L / (plev * plev + 40))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
+ }
- case CLASS_TOURIST:
- {
- /* Good sensing */
- if (0 != rand_int(20000L / ((plev+50)*(plev+50)))) return;
+ case CLASS_TOURIST:
+ {
+ /* Good sensing */
+ if (0 != rand_int(20000L / ((plev+50)*(plev+50)))) return;
- /* Done */
- break;
- }
+ /* Done */
+ break;
}
}
/* Process */
while (TRUE)
{
-#ifdef USE_SCRIPT
- /* Save the current coordinates */
- s32b wild_y = p_ptr->wilderness_y;
- s32b wild_x = p_ptr->wilderness_x;
- s16b level = dun_level;
-
- if (level == 0)
- enter_wilderness_callback(wild_y, wild_x);
- else
- enter_level_callback(level);
-#endif /* USE_SCRIPT */
-
/* Process the level */
dungeon(load_game);
load_game = FALSE;
-#ifdef USE_SCRIPT
- if (level == 0)
- leave_wilderness_callback(wild_y, wild_x);
- else
- leave_level_callback(level);
-#endif /* USE_SCRIPT */
-
/* Accidental Death */
if (alive && death)
{
#endif /* ALLOW_EASY_DISARM -- TNB */
-#ifdef USE_SCRIPT
-extern errr script_execute(char *name);
-extern errr init_script(void);
-#endif /* USE_SCRIPT */
-
-
#ifdef ALLOW_EASY_FLOOR /* TNB */
/* object1.c */
void generate_cave(void)
{
int y, x, num;
+ int i;
/* The dungeon is not ready */
character_dungeon = FALSE;
ambush_flag = FALSE;
-#ifdef USE_SCRIPT
- if (!generate_level_callback(dun_level))
-#endif /* USE_SCRIPT */
+ /* Fill the arrays of floors and walls in the good proportions */
+ for (i = 0; i < 100; i++)
{
- int i;
- /* Fill the arrays of floors and walls in the good proportions */
- for (i = 0; i < 100; i++)
- {
- int lim1, lim2, lim3;
-
- lim1 = d_info[0].floor_percent1;
- lim2 = lim1 + d_info[0].floor_percent2;
- lim3 = lim2 + d_info[0].floor_percent3;
-
- if (i < lim1)
- floor_type[i] = d_info[0].floor1;
- else if (i < lim2)
- floor_type[i] = d_info[0].floor2;
- else if (i < lim3)
- floor_type[i] = d_info[0].floor3;
-
- lim1 = d_info[0].fill_percent1;
- lim2 = lim1 + d_info[0].fill_percent2;
- lim3 = lim2 + d_info[0].fill_percent3;
- if (i < lim1)
- fill_type[i] = d_info[0].fill_type1;
- else if (i < lim2)
- fill_type[i] = d_info[0].fill_type2;
- else if (i < lim3)
- fill_type[i] = d_info[0].fill_type3;
- }
+ int lim1, lim2, lim3;
+
+ lim1 = d_info[0].floor_percent1;
+ lim2 = lim1 + d_info[0].floor_percent2;
+ lim3 = lim2 + d_info[0].floor_percent3;
+
+ if (i < lim1)
+ floor_type[i] = d_info[0].floor1;
+ else if (i < lim2)
+ floor_type[i] = d_info[0].floor2;
+ else if (i < lim3)
+ floor_type[i] = d_info[0].floor3;
+
+ lim1 = d_info[0].fill_percent1;
+ lim2 = lim1 + d_info[0].fill_percent2;
+ lim3 = lim2 + d_info[0].fill_percent3;
+ if (i < lim1)
+ fill_type[i] = d_info[0].fill_type1;
+ else if (i < lim2)
+ fill_type[i] = d_info[0].fill_type2;
+ else if (i < lim3)
+ fill_type[i] = d_info[0].fill_type3;
+ }
- /* Build the arena -KMW- */
- if (p_ptr->inside_arena)
- {
+ /* Build the arena -KMW- */
+ if (p_ptr->inside_arena)
+ {
/* Small arena */
- arena_gen();
- }
+ arena_gen();
+ }
- /* Build the battle -KMW- */
- else if (p_ptr->inside_battle)
- {
+ /* Build the battle -KMW- */
+ else if (p_ptr->inside_battle)
+ {
/* Small arena */
- battle_gen();
- }
+ battle_gen();
+ }
- else if (p_ptr->inside_quest)
- {
- quest_gen();
- }
+ else if (p_ptr->inside_quest)
+ {
+ quest_gen();
+ }
- /* Build the town */
- else if (!dun_level)
- {
+ /* Build the town */
+ else if (!dun_level)
+ {
/* Make the wilderness */
- if (p_ptr->wild_mode) wilderness_gen_small();
- else wilderness_gen();
- }
+ if (p_ptr->wild_mode) wilderness_gen_small();
+ else wilderness_gen();
+ }
- /* Build a real level */
- else
- {
- okay = level_gen(&why);
- }
+ /* Build a real level */
+ else
+ {
+ okay = level_gen(&why);
}
/* Extract the feeling */
case 'Z':
{
-#ifdef USE_SCRIPT
- if (tokenize(s+2, 2, zz, 0) == 2)
- {
- /* Index of the action */
- int action_index = atoi(zz[0]);
-
- /* Name of the action */
- strcpy(building[index].act_script[action_index], zz[1]);
-
- break;
- }
- return (1);
-#else /* USE_SCRIPT */
/* Ignore scripts */
break;
-#endif /* USE_SCRIPT */
}
default:
/* Apply magic (no messages, no artifacts) */
apply_magic(o_ptr, base_level, FALSE, TRUE, FALSE, FALSE);
-#ifdef USE_SCRIPT
- o_ptr->python = object_create_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
(void)drop_near(o_ptr, -1, *y, *x);
}
object_type *q_ptr = &forge;
object_prep(q_ptr, k_idx);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, *y, *x);
#endif
-#ifdef USE_SCRIPT
-#ifdef JP
-note("[¥¹¥¯¥ê¥×¥È¤ò½é´ü²½¤·¤Æ¤¤¤Þ¤¹... ]");
-#else
- note("[Initializing scripts... ]");
-#endif
-
-#ifdef JP
-if (init_script()) quit("¥¹¥¯¥ê¥×¥È¤ò½é´ü²½¤Ç¤¤Þ¤»¤ó");
-#else
- if (init_script()) quit("Cannot initialize scripts");
-#endif
-
-#endif /* USE_SCRIPT */
-
/* Initialize feature info */
#ifdef JP
note("[¥Ç¡¼¥¿¤Î½é´ü²½Ãæ... (ÃÏ·Á)]");
s32b tmp32s;
rd_s32b(&tmp32s);
-#ifdef USE_SCRIPT
- if (tmp32s)
- {
- char *python_object = (char*) malloc(tmp32s + 1);
- rd_string(python_object, tmp32s + 1);
- o_ptr->python = object_load_callback(python_object);
- free(python_object);
- }
-#else /* USE_SCRIPT */
strip_bytes(tmp32s);
-#endif /* USE_SCRIPT */
}
/* Mega-Hack -- handle "dungeon objects" later */
s32b tmp32s;
rd_s32b(&tmp32s);
-#ifdef USE_SCRIPT
- if (tmp32s)
- {
- char *callbacks = (char*) malloc(tmp32s + 1);
- rd_string(callbacks, tmp32s + 1);
- callbacks_load_callback(callbacks);
- free(callbacks);
- }
-#else /* USE_SCRIPT */
strip_bytes(tmp32s);
-#endif /* USE_SCRIPT */
}
}
validate_dir(ANGBAND_DIR_DATA, FALSE);
}
-#ifdef USE_SCRIPT
- validate_dir(ANGBAND_DIR_SCRIPT, TRUE);
-#endif /* USE_SCRIPT */
validate_dir(ANGBAND_DIR_FILE, TRUE);
validate_dir(ANGBAND_DIR_HELP, FALSE);
validate_dir(ANGBAND_DIR_INFO, FALSE);
#if !defined(MACINTOSH) && !defined(WINDOWS) && !defined(ACORN)
-#ifdef USE_SCRIPT
-
-#include "Python.h"
-
-#endif /* USE_SCRIPT */
-
/*
* A hook for "quit()".
mm[0] = mm[1] = mm[2] = mm[3] = 0;
mm[4] = mm[5] = mm[6] = mm[7] = 0;
-#ifdef USE_SCRIPT
- if (monster_move_callback(mm, m_idx))
- {
- }
- else
-#endif /* USE_SCRIPT */
-
/* Confused -- 100% random */
if (m_ptr->confused || !aware)
/* Count monsters */
m_cnt--;
-#ifdef USE_SCRIPT
- delete_monster_callback(i);
-#endif /* USE_SCRIPT */
-
/* Visual update */
lite_spot(y, x);
}
/* Wipe the hole */
(void)WIPE(&m_list[i1], monster_type);
-#ifdef USE_SCRIPT
- copy_monster_callback(i1, i2);
-#endif /* USE_SCRIPT */
-
}
/* Wipe the Monster */
(void)WIPE(m_ptr, monster_type);
-#ifdef USE_SCRIPT
- delete_monster_callback(i);
-#endif /* USE_SCRIPT */
}
/* Reset "m_max" */
/* Hack -- Notice new multi-hued monsters */
if (r_ptr->flags1 & RF1_ATTR_MULTI) shimmer_monsters = TRUE;
-#ifdef USE_SCRIPT
- create_monster_callback(c_ptr->m_idx);
-#endif /* USE_SCRIPT */
-
if (p_ptr->warning && character_dungeon)
{
cptr color;
lite_spot(y, x);
}
-#ifdef USE_SCRIPT
- object_delete_callback(j_ptr);
-#endif /* USE_SCRIPT */
-
/* Wipe the object */
object_wipe(j_ptr);
/* Acquire next object */
next_o_idx = o_ptr->next_o_idx;
-#ifdef USE_SCRIPT
- object_delete_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
/* Wipe the object */
object_wipe(o_ptr);
/* Structure copy */
o_list[i2] = o_list[i1];
-#ifdef USE_SCRIPT
- object_delete_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
/* Wipe the hole */
object_wipe(o_ptr);
}
c_ptr->o_idx = 0;
}
-#ifdef USE_SCRIPT
- object_delete_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
/* Wipe the object */
object_wipe(o_ptr);
}
{
/* Copy the structure */
COPY(o_ptr, j_ptr, object_type);
-
-#ifdef USE_SCRIPT
- j_ptr->python = object_copy_callback(o_ptr, j_ptr);
-#endif /* USE_SCRIPT */
}
/* Place the object */
c_ptr->o_idx = o_idx;
-#ifdef USE_SCRIPT
- o_ptr->python = object_create_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
/* Notice */
note_spot(y, x);
/* Place the object */
c_ptr->o_idx = o_idx;
-#ifdef USE_SCRIPT
- o_ptr->python = object_create_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
/* Notice */
note_spot(y, x);
object_known(i_ptr);
}
-#ifdef USE_SCRIPT
- i_ptr->python = object_create_callback(i_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop the object */
(void)drop_near(i_ptr, -1, y1, x1);
}
/* One less item */
inven_cnt--;
-#ifdef USE_SCRIPT
- object_delete_callback(&inventory[item]);
-#endif /* USE_SCRIPT */
-
/* Slide everything down */
for (i = item; i < INVEN_PACK; i++)
{
/* One less item */
equip_cnt--;
-#ifdef USE_SCRIPT
- object_delete_callback(&inventory[item]);
-#endif /* USE_SCRIPT */
-
/* Erase the empty slot */
object_wipe(&inventory[item]);
object_copy(&inventory[k+1], &inventory[k]);
}
-#ifdef USE_SCRIPT
- /* Not a real deletion */
- /* object_delete_callback(&inventory[i]); */
-#endif /* USE_SCRIPT */
-
/* Wipe the empty slot */
object_wipe(&inventory[i]);
}
inventory[k] = inventory[k+1];
}
-#ifdef USE_SCRIPT
- object_delete_callback(&inventory[k]);
-#endif /* USE_SCRIPT */
-
/* Erase the "final" slot */
object_wipe(&inventory[k]);
/* Create the food ration */
object_prep(q_ptr, 21);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop the object from heaven */
(void)drop_near(q_ptr, -1, py, px);
#ifdef JP
wr_string("");
}
-#ifdef USE_SCRIPT
- {
- cptr python_object = object_save_callback(o_ptr);
- if (python_object && *python_object)
- {
- wr_s32b(strlen(python_object));
- wr_string(python_object);
- string_free(python_object);
- }
- else
- {
- /* No Python object */
- wr_s32b(0);
- }
- }
-#else /* USE_SCRIPT */
-
/* No Python object */
wr_s32b(0);
-
-#endif /* USE_SCRIPT */
}
/* Dump the ghost */
wr_ghost();
-#ifdef USE_SCRIPT
- {
- cptr callbacks = callbacks_save_callback();
- if (callbacks && *callbacks)
- {
- wr_s32b(strlen(callbacks));
- wr_string(callbacks);
- string_free(callbacks);
- }
- else
- {
- /* No scripts */
- wr_s32b(0);
- }
- }
-#else /* USE_SCRIPT */
-
/* No scripts */
wr_s32b(0);
-
-#endif /* USE_SCRIPT */
-
}
/* Mark the item as fully known */
q_ptr->ident |= (IDENT_MENTAL);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, py, px);
}
object_prep(q_ptr, lookup_kind(TV_STATUE, SV_WOODEN_STATUE));
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
q_ptr->pval = MON_NINJA;
/* Drop it in the dungeon */
/* Must have no items */
if (o_ptr->number) return;
-#ifdef USE_SCRIPT
- object_delete_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
/* One less item */
st_ptr->stock_num--;
/* Mass produce and/or Apply discount */
mass_produce(q_ptr);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Attempt to carry the (known) item */
(void)store_carry(q_ptr);
#endif
-#ifdef USE_SCRIPT
-
- store_examine_callback(o_ptr);
-
-#endif /* USE_SCRIPT */
-
return;
}
/* Clear any old items */
for (k = 0; k < st_ptr->stock_size; k++)
{
-#ifdef USE_SCRIPT
- object_delete_callback(&st_ptr->stock[k]);
-#endif /* USE_SCRIPT */
-
object_wipe(&st_ptr->stock[k]);
}
}
(void)store_carry(o_ptr);
-#ifdef USE_SCRIPT
- object_delete_callback(o_ptr);
-#endif /* USE_SCRIPT */
-
object_wipe(o_ptr); /* Don't leave a bogus object behind... */
}
* This file should ONLY be included by "angband.h"
*/
-#ifdef USE_SCRIPT
-
-#include "Python.h"
-
-#endif /* USE_SCRIPT */
-
/*
* Note that "char" may or may not be signed, and that "signed char"
* may or may not work on all machines. So always use "s16b" or "s32b"
s16b held_m_idx; /* Monster holding us (if any) */
-#ifdef USE_SCRIPT
- PyObject *python;
-#endif /* USE_SCRIPT */
-
#ifdef SCRIPT_OBJ_KIND
char *name;
struct alloc_entry
{
-#ifdef USE_SCRIPT
- PyObject *python;
-#endif /* USE_SCRIPT */
-
s16b index; /* The actual index */
byte level; /* Base dungeon level */
s16b actions[8]; /* action codes */
s16b action_restr[8]; /* action restrictions */
-#ifdef USE_SCRIPT
- char act_script[8][128]; /* Scripts for the building */
-#endif /* USE_SCRIPT */
-
s16b member_class[MAX_CLASS]; /* which classes are part of guild */
s16b member_race[MAX_RACES]; /* which classes are part of guild */
s16b member_realm[MAX_MAGIC+1]; /* which realms are part of guild */
bool done = FALSE;
term *old = Term;
-#ifdef USE_SCRIPT
- char result;
-#endif /* USE_SCRIPT */
-
/* Hack -- Use the "inkey_next" pointer */
if (inkey_next && *inkey_next && !inkey_xtra)
{
#endif /* ALLOW_BORG */
-#ifdef USE_SCRIPT
-
- if ((result = inkey_borg_callback(inkey_base, inkey_xtra, inkey_flag, inkey_scan)))
- {
- /* Cancel the various "global parameters" */
- inkey_base = inkey_xtra = inkey_flag = inkey_scan = FALSE;
-
- return (result);
- }
-
-#endif /* USE_SCRIPT */
-
/* Hack -- handle delayed "flush()" */
if (inkey_xtra)
/* Cancel the various "global parameters" */
inkey_base = inkey_xtra = inkey_flag = inkey_scan = FALSE;
-#ifdef USE_SCRIPT
-
- if ((result = inkey_callback(ch))) return result;
-
-#endif /* USE_SCRIPT */
-
/* Return the keypress */
return (ch);
}
/* Set the object generation level */
object_level = base_level;
-#ifdef USE_SCRIPT
- if (generate_wilderness_callback(y, x)) return;
-#endif /* USE_SCRIPT */
-
/* Create the town */
if (p_ptr->town_num)
{
int x, y;
-#ifdef USE_SCRIPT
- if (!wilderness_init_callback())
-#endif /* USE_SCRIPT */
+ /* Init wilderness seeds */
+ for (x = 0; x < max_wild_x; x++)
{
- /* Init wilderness seeds */
- for (x = 0; x < max_wild_x; x++)
+ for (y = 0; y < max_wild_y; y++)
{
- for (y = 0; y < max_wild_y; y++)
- {
- wilderness[y][x].seed = rand_int(0x10000000);
- wilderness[y][x].entrance = 0;
- }
+ wilderness[y][x].seed = rand_int(0x10000000);
+ wilderness[y][x].entrance = 0;
}
}
}
apply_magic(q_ptr, dun_level, FALSE, FALSE, FALSE, FALSE);
}
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop the object from heaven */
(void)drop_near(q_ptr, -1, py, px);
}
-#ifdef USE_SCRIPT
-
-/*
- * Hack -- Execute a script function
- */
-static void do_cmd_wiz_script(void)
-{
- int err;
- char name[80];
-
- /* Get name of script to execute */
- name[0] = '\0';
-
- if (!get_string("Function name: ", name, 80)) return;
-
- /* No name, no execute */
- if (name[0] == '\0')
- {
- msg_print("Cancelled.");
- return;
- }
-
- /* Execute script */
- err = script_execute(name);
-
- /* Error */
- if (err)
- {
- msg_print("Failed.");
- return;
- }
-}
-
-#endif /* USE_SCRIPT */
-
-
-
#ifdef ALLOW_SPOILERS
/*
do_cmd_wiz_hack_ben();
break;
-#ifdef USE_SCRIPT
- /* Hack -- activate a script */
- case '@':
- do_cmd_wiz_script();
- break;
-#endif /* USE_SCRIPT */
-
/* Not a Wizard Command */
default:
msg_print("That is not a valid debug command.");
}
}
-#ifdef USE_SCRIPT
-
- if (!get_player_flags_callback())
-
-#endif /* USE_SCRIPT */
-
+ switch (p_ptr->pclass)
{
- switch (p_ptr->pclass)
- {
- case CLASS_WARRIOR:
- if (p_ptr->lev > 29) p_ptr->resist_fear = TRUE;
- if (p_ptr->lev > 44) p_ptr->regenerate = TRUE;
- break;
- case CLASS_PALADIN:
- if (p_ptr->lev > 39) p_ptr->resist_fear = TRUE;
- break;
- case CLASS_CHAOS_WARRIOR:
- if (p_ptr->lev > 29) p_ptr->resist_chaos = TRUE;
- if (p_ptr->lev > 39) p_ptr->resist_fear = TRUE;
- break;
- case CLASS_MINDCRAFTER:
- if (p_ptr->lev > 9) p_ptr->resist_fear = TRUE;
- if (p_ptr->lev > 19) p_ptr->sustain_wis = TRUE;
- if (p_ptr->lev > 29) p_ptr->resist_conf = TRUE;
- if (p_ptr->lev > 39) p_ptr->telepathy = TRUE;
- break;
- case CLASS_MONK:
- case CLASS_FORCETRAINER:
- /* Unencumbered Monks become faster every 10 levels */
- if (!(heavy_armor()))
- {
- if (!((p_ptr->prace == RACE_KLACKON) ||
- (p_ptr->prace == RACE_SPRITE) ||
- (p_ptr->pseikaku == SEIKAKU_MUNCHKIN)))
- p_ptr->pspeed += (p_ptr->lev) / 10;
-
- /* Free action if unencumbered at level 25 */
- if (p_ptr->lev > 24)
- p_ptr->free_act = TRUE;
- }
- break;
- case CLASS_SORCERER:
- p_ptr->to_a -= 50;
- p_ptr->dis_to_a -= 50;
- break;
- case CLASS_BARD:
- p_ptr->resist_sound = TRUE;
- break;
- case CLASS_SAMURAI:
- if (p_ptr->lev > 29) p_ptr->resist_fear = TRUE;
- break;
- case CLASS_BERSERKER:
- p_ptr->shero = 1;
- p_ptr->sustain_str = TRUE;
- p_ptr->sustain_dex = TRUE;
- p_ptr->sustain_con = TRUE;
- p_ptr->regenerate = TRUE;
- p_ptr->free_act = TRUE;
- p_ptr->pspeed += 2;
- if (p_ptr->lev > 29) p_ptr->pspeed++;
- if (p_ptr->lev > 39) p_ptr->pspeed++;
- if (p_ptr->lev > 44) p_ptr->pspeed++;
- if (p_ptr->lev > 49) p_ptr->pspeed++;
- p_ptr->to_a += 10+p_ptr->lev/2;
- p_ptr->dis_to_a += 10+p_ptr->lev/2;
- p_ptr->skill_dig += (100+p_ptr->lev*8);
- if (p_ptr->lev > 39) p_ptr->reflect = TRUE;
- p_ptr->redraw |= PR_STATUS;
- break;
- case CLASS_MIRROR_MASTER:
- if (p_ptr->lev > 39) p_ptr->reflect = TRUE;
- break;
- case CLASS_NINJA:
- /* Unencumbered Monks become faster every 10 levels */
- if (heavy_armor())
- {
- p_ptr->pspeed -= (p_ptr->lev) / 10;
- p_ptr->skill_stl -= (p_ptr->lev)/10;
- }
- else
- {
- if (!inventory[INVEN_LARM].tval || p_ptr->hidarite)
- {
- p_ptr->pspeed += 3;
- if (!((p_ptr->prace == RACE_KLACKON) ||
- (p_ptr->prace == RACE_SPRITE) ||
- (p_ptr->pseikaku == SEIKAKU_MUNCHKIN)))
- p_ptr->pspeed += (p_ptr->lev) / 10;
-
- p_ptr->skill_stl += (p_ptr->lev)/10;
-
- /* Free action if unencumbered at level 25 */
- if (p_ptr->lev > 24)
- p_ptr->free_act = TRUE;
- }
- }
+ case CLASS_WARRIOR:
+ if (p_ptr->lev > 29) p_ptr->resist_fear = TRUE;
+ if (p_ptr->lev > 44) p_ptr->regenerate = TRUE;
+ break;
+ case CLASS_PALADIN:
+ if (p_ptr->lev > 39) p_ptr->resist_fear = TRUE;
+ break;
+ case CLASS_CHAOS_WARRIOR:
+ if (p_ptr->lev > 29) p_ptr->resist_chaos = TRUE;
+ if (p_ptr->lev > 39) p_ptr->resist_fear = TRUE;
+ break;
+ case CLASS_MINDCRAFTER:
+ if (p_ptr->lev > 9) p_ptr->resist_fear = TRUE;
+ if (p_ptr->lev > 19) p_ptr->sustain_wis = TRUE;
+ if (p_ptr->lev > 29) p_ptr->resist_conf = TRUE;
+ if (p_ptr->lev > 39) p_ptr->telepathy = TRUE;
+ break;
+ case CLASS_MONK:
+ case CLASS_FORCETRAINER:
+ /* Unencumbered Monks become faster every 10 levels */
+ if (!(heavy_armor()))
+ {
+ if (!((p_ptr->prace == RACE_KLACKON) ||
+ (p_ptr->prace == RACE_SPRITE) ||
+ (p_ptr->pseikaku == SEIKAKU_MUNCHKIN)))
+ p_ptr->pspeed += (p_ptr->lev) / 10;
+
+ /* Free action if unencumbered at level 25 */
+ if (p_ptr->lev > 24)
+ p_ptr->free_act = TRUE;
+ }
+ break;
+ case CLASS_SORCERER:
+ p_ptr->to_a -= 50;
+ p_ptr->dis_to_a -= 50;
+ break;
+ case CLASS_BARD:
+ p_ptr->resist_sound = TRUE;
+ break;
+ case CLASS_SAMURAI:
+ if (p_ptr->lev > 29) p_ptr->resist_fear = TRUE;
+ break;
+ case CLASS_BERSERKER:
+ p_ptr->shero = 1;
+ p_ptr->sustain_str = TRUE;
+ p_ptr->sustain_dex = TRUE;
+ p_ptr->sustain_con = TRUE;
+ p_ptr->regenerate = TRUE;
+ p_ptr->free_act = TRUE;
+ p_ptr->pspeed += 2;
+ if (p_ptr->lev > 29) p_ptr->pspeed++;
+ if (p_ptr->lev > 39) p_ptr->pspeed++;
+ if (p_ptr->lev > 44) p_ptr->pspeed++;
+ if (p_ptr->lev > 49) p_ptr->pspeed++;
+ p_ptr->to_a += 10+p_ptr->lev/2;
+ p_ptr->dis_to_a += 10+p_ptr->lev/2;
+ p_ptr->skill_dig += (100+p_ptr->lev*8);
+ if (p_ptr->lev > 39) p_ptr->reflect = TRUE;
+ p_ptr->redraw |= PR_STATUS;
+ break;
+ case CLASS_MIRROR_MASTER:
+ if (p_ptr->lev > 39) p_ptr->reflect = TRUE;
+ break;
+ case CLASS_NINJA:
+ /* Unencumbered Monks become faster every 10 levels */
+ if (heavy_armor())
+ {
+ p_ptr->pspeed -= (p_ptr->lev) / 10;
+ p_ptr->skill_stl -= (p_ptr->lev)/10;
+ }
+ else
+ {
if (!inventory[INVEN_LARM].tval || p_ptr->hidarite)
{
- p_ptr->to_a += p_ptr->lev/2+5;
- p_ptr->dis_to_a += p_ptr->lev/2+5;
- }
- p_ptr->slow_digest = TRUE;
- p_ptr->resist_fear = TRUE;
- if (p_ptr->lev > 19) p_ptr->resist_pois = TRUE;
- if (p_ptr->lev > 24) p_ptr->sustain_dex = TRUE;
- if (p_ptr->lev > 29) p_ptr->see_inv = TRUE;
- if (p_ptr->lev > 44)
- {
- p_ptr->oppose_pois = 1;
- p_ptr->redraw |= PR_STATUS;
+ p_ptr->pspeed += 3;
+ if (!((p_ptr->prace == RACE_KLACKON) ||
+ (p_ptr->prace == RACE_SPRITE) ||
+ (p_ptr->pseikaku == SEIKAKU_MUNCHKIN)))
+ p_ptr->pspeed += (p_ptr->lev) / 10;
+ p_ptr->skill_stl += (p_ptr->lev)/10;
+
+ /* Free action if unencumbered at level 25 */
+ if (p_ptr->lev > 24)
+ p_ptr->free_act = TRUE;
}
- break;
- }
+ }
+ if (!inventory[INVEN_LARM].tval || p_ptr->hidarite)
+ {
+ p_ptr->to_a += p_ptr->lev/2+5;
+ p_ptr->dis_to_a += p_ptr->lev/2+5;
+ }
+ p_ptr->slow_digest = TRUE;
+ p_ptr->resist_fear = TRUE;
+ if (p_ptr->lev > 19) p_ptr->resist_pois = TRUE;
+ if (p_ptr->lev > 24) p_ptr->sustain_dex = TRUE;
+ if (p_ptr->lev > 29) p_ptr->see_inv = TRUE;
+ if (p_ptr->lev > 44)
+ {
+ p_ptr->oppose_pois = 1;
+ p_ptr->redraw |= PR_STATUS;
+ }
+ break;
}
/***** Races ****/
/* Make a great object */
make_object(q_ptr, TRUE, TRUE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
apply_magic(q_ptr, object_level, FALSE, FALSE, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
q_ptr->pval = m_ptr->r_idx;
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
apply_magic(q_ptr, object_level, FALSE, FALSE, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* Make a great object */
make_object(q_ptr, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* Prepare to make a Blade of Chaos */
object_prep(q_ptr, lookup_kind(TV_SWORD, randint(2)));
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* Make a great object */
make_object(q_ptr, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* Make a great object */
make_object(q_ptr, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* Make a great object */
make_object(q_ptr, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* Make a great object */
make_object(q_ptr, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
apply_magic(q_ptr, object_level, FALSE, FALSE, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
/* Mega-Hack -- Actually create "Grond" */
apply_magic(q_ptr, -1, TRUE, TRUE, TRUE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
/* Mega-Hack -- Actually create "Morgoth" */
apply_magic(q_ptr, -1, TRUE, TRUE, TRUE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
apply_magic(q_ptr, object_level, FALSE, TRUE, FALSE, FALSE);
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
dump_item++;
}
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, y, x);
}
lore_treasure(m_idx, dump_item, dump_gold);
}
-#ifdef USE_SCRIPT
- kill_monster_callback(m_idx);
-#endif /* USE_SCRIPT */
-
/* Only process "Quest Monsters" */
if (!(r_ptr->flags1 & RF1_QUESTOR)) return;
if (p_ptr->inside_battle) return;
random_resistance(q_ptr, FALSE, randint(34) + 4);
q_ptr->name2 = EGO_CHAOTIC;
-#ifdef USE_SCRIPT
- q_ptr->python = object_create_callback(q_ptr);
-#endif /* USE_SCRIPT */
-
/* Drop it in the dungeon */
(void)drop_near(q_ptr, -1, py, px);
#ifdef JP