Classic Blades of Exile :
- Dying to a trap while attempting to open a container won't display the "get items in container" dialog with no alive character anymore. - Casting the priest Light spell now updates the surrounding areas automatically (like Light and Long Light mage spells; moving or waiting isn't required anymore). - Debug and Ghost mode are now turned off when loading a game. - The shop scrolling bar is now properly cleaned up when loading a game while shopping. - Items are now automatically combined when identified in a shop. To avoid any loss of information, the game now gives the identified item name in the message window (format : "Your item is identified. (full_item_name)" - If an "active" character (i.e solo fighting) is incapacitated (AP reduced to 0 because of webs, sleep, paralysis, etc) the rest of the party (if present) is now activated the next turn. - Entering a space containing the special node number 50 won't "force move" the party anymore. - Added a compatibility option (mainly testing purpose) : "specials are triggered when on boat". - The restart option of the death menu now works as intended. - Finally renamed the "Heal All" monster priest spell from "Full Heal" to "Revive Self". That should prevent any further confusion. - Using items now always updates the ap counter. - For the sake of consistency : changed labels "Power Potion" to "Energy Potion" potions in the Alchemy menu. - Redrawing the screen is now correctly handled by specials in all mode (e.g a special that changes a terrain will correctly redraw the screen, even if it was called by looking or moving). Scenario Editor : - Redid the custom pictures drawing implementation : custom pictures should now always appears and redraw (terrain, animated terrains, monsters, items, preset items, ...). - It is now possible to directly give the "Drain missiles" ability to bows and crossbows (use the "Weapon Ability" menu). Chokboyz git-svn-id: http://openexile.googlecode.com/svn/trunk@160 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
@@ -1168,7 +1168,7 @@ STYLE WS_POPUP | WS_DLGFRAME
|
||||
{
|
||||
LTEXT "1_63", 1, 435, 295, 61, 20
|
||||
LTEXT "5_716", 2, 6, 6, 36, 36
|
||||
LTEXT "Classic Blades of Exile build_26.11.2010 | Copyright 1997, Spiderweb Software, Inc., All rights reserved.||Blades of Exile is distributed for free under GNU General Public License version 2.", 3, 50, 6, 420, 33
|
||||
LTEXT "Classic Blades of Exile build 09.01.2011 | Copyright 1997, Spiderweb Software, Inc., All rights reserved.||Blades of Exile is distributed for free under GNU General Public License version 2.", 3, 50, 6, 420, 33
|
||||
LTEXT "CONTRIBUTORS : Ormus, Ishad Nha, Celtic Minstrel, Niemand and all involved in the BoE community.", 4, 50, 227, 424, 33
|
||||
LTEXT "Comments? Questions? Bugs? Post them at the Blades section of the Irony Central Board: www.ironycentral.com/forum/", 5, 50, 271, 354, 32
|
||||
LTEXT "Blades of Exile was brought to you by Spiderweb Software - | _Where our aberrations become your reality._ |_Blades of Exile_ and Spiderweb Software are trademarks of Spiderweb Software.", 7, 50, 154, 410, 51
|
||||
@@ -1626,6 +1626,7 @@ STYLE WS_POPUP | WS_DLGFRAME
|
||||
LTEXT "2_0", 60, 53, 480,17,18
|
||||
LTEXT "*Ask About text box in talking mode",61,72,476,340,16
|
||||
}
|
||||
|
||||
1100 DIALOG 10, 10, 450, 451
|
||||
STYLE WS_POPUP | WS_DLGFRAME
|
||||
{
|
||||
@@ -1648,4 +1649,6 @@ STYLE WS_POPUP | WS_DLGFRAME
|
||||
LTEXT "2_0", 17, 49, 166, 17, 18
|
||||
LTEXT "Special Timers are checked when resting outdoor/in inn", 18, 70 ,182 ,182 ,17
|
||||
LTEXT "2_0", 19, 49, 186, 17, 18
|
||||
LTEXT "Specials are triggered when in a boat", 20, 70 ,202 ,182 ,17
|
||||
LTEXT "2_0", 21, 49, 206, 17, 18
|
||||
}
|
||||
|
@@ -811,8 +811,8 @@ STRINGTABLE
|
||||
3063, "Your health is a measure of how much punishment you can take before dying - the more the better. Whenever you get hit, you lose some health. Taking damage when your health is down to 0 will kill you."
|
||||
3064, "Your spell points are what you expend to cast spells. Each spell drains away some of your spell points. Time and rest restore them. When creating a character, you get 3 bonus spell points for every level of Mage and Priest Spells skill you buy."
|
||||
3065, "Some doors can't be opened no matter what you try. For example, portcullises can almost never be opened by picking locks or bashing."
|
||||
3110, "This is a temporary menu with some legacy compatibility options. Its main purpose is to test several changes introduces with code revisions.|Compatibilities options can be set anytime, anywhere and reverted back the same."
|
||||
3111, "Should you find a legacy compatibility breaking, please report it to the Irony Central board."
|
||||
/*3070, "This is a temporary menu with some legacy compatibility options. Its main purpose is to test several changes introduces with code revisions.|Compatibilities options can be set anytime, anywhere and reverted back the same."
|
||||
3071, "Should you find a legacy compatibility breaking, please report it to the Spiderweb Software board."*/
|
||||
3301, "Can cast everywhere."
|
||||
3302, "Combat only."
|
||||
3303, "Town only."
|
||||
@@ -1102,7 +1102,7 @@ STRINGTABLE
|
||||
7520, "Strong Healing Potion | Min. Skill - 12 |Need graymold and comfrey root. Provides excellent healing."
|
||||
7521, "Killer Poison | Min. Skill - 12 |Need mandrake root. The strongest poison."
|
||||
7522, "Resurrection Balm | Min. Skill - 9 |Need ember flowers. Necessary to cast Raise Dead or Resurrection."
|
||||
7523, "Medium Power Potion | Min. Skill - 14 |Need mandrake root and asptongue mold. Restores a fair amount of spell points."
|
||||
7523, "Medium Energy Potion | Min. Skill - 14 |Need mandrake root and asptongue mold. Restores a fair amount of spell points."
|
||||
7524, "Knowledge Brew | Min. Skill - 19 |This most powerful of potions requires Mandrake and Ember Flowers for its creation."
|
||||
7525, "Strength Potion | Min. Skill - 10 |This brew is a great aid in combat. Making it requires ember flowers and glowing nettle."
|
||||
7526, "Bliss | Min. Skill - 16 |Combining the best elements of healing and strength potions, bliss potions contain asptongue mold and graymold."
|
||||
@@ -1176,7 +1176,7 @@ STRINGTABLE
|
||||
11479, "Wall of Blades"
|
||||
11480, "Word of Recall"
|
||||
11481, "Major Cleansing"
|
||||
11500, "Weak Curing"
|
||||
11500, "Weak Curing"
|
||||
11501, "Weak Healing"
|
||||
11502, "Weak Poison"
|
||||
11503, "Weak Speed"
|
||||
@@ -1185,15 +1185,15 @@ STRINGTABLE
|
||||
11506, "Strong Curing"
|
||||
11507, "Medium Speed"
|
||||
11508, "Graymold Salve"
|
||||
11509, "Weak Power"
|
||||
11509, "Weak Energy"
|
||||
11510, "Potion of Clarity"
|
||||
11511, "Strong Poison"
|
||||
11512, "Strong Healing"
|
||||
11513, "Killer Poison"
|
||||
11514, "Resurrection Balm"
|
||||
11515, "Medium Power"
|
||||
11515, "Medium Energy"
|
||||
11516, "Knowledge Brew"
|
||||
11517, "Strong Strength"
|
||||
11518, "Bliss"
|
||||
11519, "Strong Power"
|
||||
11519, "Strong Energy"
|
||||
}
|
||||
|
@@ -176,7 +176,7 @@ Boolean handle_action(POINT the_point, WPARAM wparam, LPARAM lparam )
|
||||
short find_direction_from,ter_looked_at,button_hit = 12;
|
||||
short store_sp[6];
|
||||
|
||||
char str[60];
|
||||
char str[60], id_name[256];
|
||||
POINT point_in_area;
|
||||
Boolean right_button = false;
|
||||
Boolean ctrl_key = false;
|
||||
@@ -1039,6 +1039,7 @@ Boolean handle_action(POINT the_point, WPARAM wparam, LPARAM lparam )
|
||||
if ((overall_mode != MODE_TOWN_TARGET) && (overall_mode != MODE_SPELL_TARGET))
|
||||
did_something = true;
|
||||
take_ap(3);
|
||||
need_redraw = true;
|
||||
break;
|
||||
case 2: // give
|
||||
adven[stat_window].giveThing(item_hit);
|
||||
@@ -1071,9 +1072,13 @@ Boolean handle_action(POINT the_point, WPARAM wparam, LPARAM lparam )
|
||||
ASB("Identify: You don't have the gold.");
|
||||
else {
|
||||
play_sound(68);
|
||||
ASB("Your item is identified.");
|
||||
sprintf(id_name, "Your item is identified. (%s)",adven[stat_window].items[item_hit].full_name);
|
||||
ASB(id_name);
|
||||
/*ASB("Your item is identified.");
|
||||
ASB(adven[stat_window].items[item_hit].full_name);*/
|
||||
adven[stat_window].items[item_hit].item_properties =
|
||||
adven[stat_window].items[item_hit].item_properties | 1;
|
||||
adven[stat_window].combineThings();
|
||||
}
|
||||
break;
|
||||
case 3: case 4: case 5: // various selling
|
||||
@@ -2416,40 +2421,51 @@ void switch_pc(short which)
|
||||
|
||||
void handle_death()
|
||||
{
|
||||
short choice;
|
||||
short choice, i;
|
||||
bool done = false;
|
||||
|
||||
in_startup_mode = true;
|
||||
|
||||
while (in_startup_mode == true)
|
||||
while (done == false)
|
||||
{
|
||||
|
||||
// Use death (or leave Exile) dialog
|
||||
in_startup_mode = false;
|
||||
|
||||
// Use death (or leave Exile) dialog
|
||||
choice = FCD(1069,0); //// FCD hates it when it gets called in startup mode
|
||||
// and startup graphics aren't loaded.
|
||||
|
||||
in_startup_mode = true;
|
||||
done = true;
|
||||
|
||||
if (choice == 1) {
|
||||
in_startup_mode = false;
|
||||
if (choice == 1) {//restore
|
||||
load_file();
|
||||
if (party_toast() == false) {
|
||||
if (in_startup_mode == false)
|
||||
post_load();
|
||||
else return;
|
||||
}
|
||||
else in_startup_mode = true;
|
||||
else
|
||||
done = false;
|
||||
}
|
||||
|
||||
if (choice == 2)
|
||||
start_new_game();
|
||||
if (choice == 2){//restart
|
||||
|
||||
if (choice == 3) {
|
||||
in_startup_mode = false;
|
||||
All_Done = true;
|
||||
i = FCD(1091,0);//"are you sure ?" dialog
|
||||
|
||||
if(i == 1)//cancel button hit
|
||||
done = false;
|
||||
else{
|
||||
for (i = 0; i < 6; i++)
|
||||
adven[i].main_status = MAIN_STATUS_ABSENT;
|
||||
party_in_memory = false;
|
||||
reload_startup();
|
||||
in_startup_mode = true;
|
||||
draw_startup(0);
|
||||
start_new_game();
|
||||
draw_startup(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (choice == 3) {//quit
|
||||
done = true;
|
||||
All_Done = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2537,7 +2553,7 @@ Boolean outd_move_party(location destination,Boolean forced)
|
||||
keep_going = check_special_terrain(destination,0,0,&spec_num,&check_f);
|
||||
if (check_f == true) forced = true;
|
||||
if (in_scen_debug && ghost_mode) forced = true;
|
||||
if (spec_num == 50) forced = true;
|
||||
/*if (spec_num == 50) forced = true;*/ //if it's the number 50 special node, then force movement...
|
||||
|
||||
// If not blocked and not put in town by a special, process move
|
||||
if ((keep_going == true) && (overall_mode == MODE_OUTDOORS)) {
|
||||
@@ -2595,7 +2611,7 @@ Boolean outd_move_party(location destination,Boolean forced)
|
||||
return false;
|
||||
else if ((outd_is_blocked(real_dest) == false)
|
||||
&& (scenario.ter_types[ter].boat_over == true)
|
||||
&& (scenario.ter_types[ter].special != TER_SPEC_TOWN_ENTRANCE) && ter != 75 && ter!=76) {//75-76=> lava is hardcoded... to change
|
||||
&& (scenario.ter_types[ter].special != TER_SPEC_TOWN_ENTRANCE) && (ter != 75) && (ter != 76)) {//75-76=> lava is hardcoded... to change
|
||||
if ((fancy_choice_dialog(1086,0)) == 1)
|
||||
forced = true;
|
||||
else {
|
||||
@@ -2755,9 +2771,12 @@ Boolean town_move_party(location destination,short forced)
|
||||
|
||||
if (in_scen_debug && ghost_mode) forced = true;
|
||||
|
||||
if (monst_there(destination) > T_M) keep_going = check_special_terrain(destination,1,0,&spec_num,&check_f);
|
||||
if (check_f == true) forced = true;
|
||||
if (spec_num == 50) forced = true;
|
||||
if (monst_there(destination) > T_M)
|
||||
keep_going = check_special_terrain(destination,1,0,&spec_num,&check_f);
|
||||
if (check_f == true)
|
||||
forced = true;
|
||||
/*if (spec_num == 50) forced = true;*/ //if it's the number 50 special node, then force movement...
|
||||
|
||||
ter = t_d.terrain[destination.x][destination.y];
|
||||
|
||||
if (keep_going == true) {
|
||||
@@ -2823,7 +2842,7 @@ Boolean town_move_party(location destination,short forced)
|
||||
|
||||
return true;
|
||||
}
|
||||
else if ((is_blocked(destination) == false) || (forced == 1)) {
|
||||
else if ((is_blocked(destination) == false) || (forced == true)) {
|
||||
if (party.in_horse >= 0) {
|
||||
if ((scenario.ter_types[ter].special >= TER_SPEC_DOES_FIRE_DAMAGE) && (scenario.ter_types[ter].special <= TER_SPEC_DOES_MAGIC_DAMAGE)) {
|
||||
ASB("Your horses quite sensibly refuse.");
|
||||
|
@@ -1289,7 +1289,8 @@ void fire_missile(location target)
|
||||
if (adven[missile_firer].items[ammo_inv_slot].variety != ITEM_TYPE_MISSILE_NO_AMMO) {//in case someone has been killed and current_pc is not the firer anymore
|
||||
if (adven[missile_firer].items[ammo_inv_slot].ability != ITEM_MISSILE_RETURNING)
|
||||
adven[missile_firer].items[ammo_inv_slot].charges--;
|
||||
else adven[missile_firer].items[ammo_inv_slot].charges = 1;
|
||||
else
|
||||
adven[missile_firer].items[ammo_inv_slot].charges = 1;
|
||||
if ((adven[missile_firer].hasAbilEquip(ITEM_DRAIN_MISSILES) < 24) && (adven[missile_firer].items[ammo_inv_slot].ability != ITEM_MISSILE_RETURNING))
|
||||
adven[missile_firer].items[ammo_inv_slot].charges--;
|
||||
if (adven[missile_firer].items[ammo_inv_slot].charges <= 0)
|
||||
@@ -1317,6 +1318,11 @@ Boolean combat_next_step()
|
||||
while (pick_next_pc() == true) {
|
||||
combat_run_monst();
|
||||
set_pc_moves();
|
||||
if((combat_active_pc < 6) && (pc_moves[combat_active_pc] == 0)){
|
||||
combat_active_pc = 6;
|
||||
ASB(">The active character is unable to act!");
|
||||
ASB(">The whole party is now active.");
|
||||
}
|
||||
to_return = true;
|
||||
// Safety valve
|
||||
if (party_toast() == true)
|
||||
@@ -1336,9 +1342,9 @@ Boolean combat_next_step()
|
||||
adjust_spell_menus();
|
||||
|
||||
if ((combat_active_pc == 6) && (current_pc != store_pc)) {
|
||||
sprintf((char *)create_line, "Active: %s (#%d, %d ap.) ",
|
||||
sprintf(create_line, "Active: %s (#%d, %d ap.) ",
|
||||
adven[current_pc].name,current_pc + 1,pc_moves[current_pc]);
|
||||
add_string_to_buf((char *)create_line);
|
||||
add_string_to_buf(create_line);
|
||||
print_buf();
|
||||
}
|
||||
if ((current_pc != store_pc) || (to_return == true)) {
|
||||
@@ -2968,7 +2974,7 @@ Boolean monst_cast_priest(creature_data_type *caster,short targ)
|
||||
//emergency spells level 5 (summon host, flamestrike, major heal)
|
||||
{SPELL_MONST_PRIEST_NO_SPELL,SPELL_MONST_PRIEST_SUMMON_HOST,SPELL_MONST_PRIEST_FLAMESTRIKE,SPELL_MONST_PRIEST_MAJOR_HEAL},
|
||||
//emergency spells level 6 (summon host, flamestrike, full heal)
|
||||
{SPELL_MONST_PRIEST_NO_SPELL,SPELL_MONST_PRIEST_SUMMON_HOST,SPELL_MONST_PRIEST_FLAMESTRIKE,SPELL_MONST_PRIEST_HEAL_ALL},
|
||||
{SPELL_MONST_PRIEST_NO_SPELL,SPELL_MONST_PRIEST_SUMMON_HOST,SPELL_MONST_PRIEST_FLAMESTRIKE,SPELL_MONST_PRIEST_REVIVE_SELF},
|
||||
//emergency spells level 7 (avatar, divine thud, revive all)
|
||||
{SPELL_MONST_PRIEST_AVATAR,SPELL_MONST_PRIEST_AVATAR,SPELL_MONST_PRIEST_DIVINE_THUD,SPELL_MONST_PRIEST_REVIVE_ALL}};
|
||||
|
||||
@@ -3023,7 +3029,7 @@ Boolean monst_cast_priest(creature_data_type *caster,short targ)
|
||||
|
||||
// snuff heals if unwounded
|
||||
if ((caster->m_d.health == caster->m_d.m_health) &&
|
||||
((spell == SPELL_MONST_PRIEST_MAJOR_HEAL) || (spell == SPELL_MONST_PRIEST_HEAL_ALL) || (spell = SPELL_MONST_PRIEST_LIGHT_HEAL) || (spell = SPELL_MONST_PRIEST_HEAL)))
|
||||
((spell == SPELL_MONST_PRIEST_MAJOR_HEAL) || (spell == SPELL_MONST_PRIEST_REVIVE_SELF) || (spell = SPELL_MONST_PRIEST_LIGHT_HEAL) || (spell = SPELL_MONST_PRIEST_HEAL)))
|
||||
spell--;
|
||||
|
||||
l = caster->m_loc;
|
||||
@@ -3155,20 +3161,20 @@ Boolean monst_cast_priest(creature_data_type *caster,short targ)
|
||||
}
|
||||
break;
|
||||
|
||||
case SPELL_MONST_PRIEST_LIGHT_HEAL: case SPELL_MONST_PRIEST_HEAL: case SPELL_MONST_PRIEST_MAJOR_HEAL: case SPELL_MONST_PRIEST_HEAL_ALL: // heals
|
||||
case SPELL_MONST_PRIEST_LIGHT_HEAL: case SPELL_MONST_PRIEST_HEAL: case SPELL_MONST_PRIEST_MAJOR_HEAL: case SPELL_MONST_PRIEST_REVIVE_SELF: // heals
|
||||
play_sound(24);
|
||||
switch(spell) {
|
||||
case SPELL_MONST_PRIEST_LIGHT_HEAL: r1 = get_ran(2,1,4) + 2; break;
|
||||
case SPELL_MONST_PRIEST_HEAL: r1 = get_ran(3,1,6); break;
|
||||
case SPELL_MONST_PRIEST_MAJOR_HEAL: r1 = get_ran(5,1,6) + 3; break;
|
||||
case SPELL_MONST_PRIEST_HEAL_ALL: r1 = 50; break;
|
||||
case SPELL_MONST_PRIEST_REVIVE_SELF: r1 = 50; break;
|
||||
}
|
||||
caster->m_d.health = min(caster->m_d.health + r1, caster->m_d.m_health);
|
||||
break;
|
||||
case SPELL_MONST_PRIEST_BLESS_ALL: case SPELL_MONST_PRIEST_REVIVE_ALL:// bless all,revive all
|
||||
play_sound(24);
|
||||
r1 = get_ran(2,1,4);
|
||||
r2 = get_ran(3,1,6);
|
||||
r2 = get_ran(3,1,6);// <= shouldn't it be the "revive all" roll ?
|
||||
for (i = 0; i < T_M; i++)
|
||||
if ((monst_near(i,caster->m_loc,8,0)) &&
|
||||
(caster->attitude == c_town.monst.dudes[i].attitude)) {
|
||||
@@ -3176,7 +3182,7 @@ Boolean monst_cast_priest(creature_data_type *caster,short targ)
|
||||
if (spell == SPELL_MONST_PRIEST_BLESS_ALL)
|
||||
affected->m_d.status[STATUS_BLESS_CURSE] = min(8,affected->m_d.status[STATUS_BLESS_CURSE] + r1);
|
||||
if (spell == SPELL_MONST_PRIEST_REVIVE_ALL)
|
||||
affected->m_d.health += r1;
|
||||
affected->m_d.health += r1; //<= here
|
||||
}
|
||||
play_sound(4);
|
||||
break;
|
||||
@@ -4060,7 +4066,7 @@ Boolean combat_cast_priest_spell()
|
||||
if (target < 6) {
|
||||
store_sound = 4;
|
||||
adven[current_pc].cur_sp -= s_cost[1][spell_num];
|
||||
adven[target].status[STATUS_BLESS_CURSE ] += (spell_num == SPELL_PRIEST_MINOR_BLESS) ? 2 :
|
||||
adven[target].status[STATUS_BLESS_CURSE] += (spell_num == SPELL_PRIEST_MINOR_BLESS) ? 2 :
|
||||
max(2,(adven[current_pc].level * 3) / 4 + 1 + bonus);
|
||||
sprintf (c_line, " %s blessed. ",
|
||||
adven[target].name);
|
||||
@@ -4073,7 +4079,7 @@ Boolean combat_cast_priest_spell()
|
||||
adven[current_pc].cur_sp -= s_cost[1][spell_num];
|
||||
for (i = 0; i < 6; i++)
|
||||
if (adven[i].isAlive()) {
|
||||
adven[i].status[STATUS_BLESS_CURSE ] += adven[current_pc].level / 3;
|
||||
adven[i].status[STATUS_BLESS_CURSE] += adven[current_pc].level / 3;
|
||||
add_missile(pc_pos[i],8,0,0,0);
|
||||
}
|
||||
sprintf (c_line, " Party blessed. ");
|
||||
|
@@ -84,10 +84,10 @@ void end_shop_mode()
|
||||
|
||||
ShowScrollBar(shop_sbar,SB_CTL,false);
|
||||
if (store_pre_shop_mode == 20) {
|
||||
sprintf((char *)old_str1,"You conclude your business.");
|
||||
sprintf((char *)old_str2,"");
|
||||
sprintf((char *)one_back1,"You conclude your business.");
|
||||
sprintf((char *)one_back2,"");
|
||||
sprintf(old_str1,"You conclude your business.");
|
||||
sprintf(old_str2,"");
|
||||
sprintf(one_back1,"You conclude your business.");
|
||||
sprintf(one_back2,"");
|
||||
|
||||
strnum1 = strnum2 = oldstrnum1 = oldstrnum2 = 0;
|
||||
place_talk_str((char *)old_str1,"",0,dummy_rect);
|
||||
@@ -1210,9 +1210,10 @@ Boolean compatibility_event_filter (short item_hit)
|
||||
break;
|
||||
|
||||
|
||||
case 7: case 9: case 11: case 13: case 15: case 17: case 19:
|
||||
case 7: case 9: case 11: case 13: case 15: case 17: case 19: case 21:
|
||||
cd_set_led(1100,item_hit,1 - cd_get_led(1100,item_hit));
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
if (done_yet== true) {
|
||||
@@ -1224,6 +1225,7 @@ Boolean compatibility_event_filter (short item_hit)
|
||||
party.stuff_done[SDF_COMPATIBILITY_SPECIALS_INTERRUPT_REST]=cd_get_led(1100,15);
|
||||
party.stuff_done[SDF_COMPATIBILITY_ANYTIME_STAIRWAY_NODES]=cd_get_led(1100,17);
|
||||
party.stuff_done[SDF_COMPATIBILITY_CHECK_TIMERS_WHILE_RESTING]=cd_get_led(1100,19);
|
||||
party.stuff_done[SDF_COMPATIBILITY_TRIGGER_SPECIALS_ON_BOAT]=cd_get_led(1100,21);
|
||||
}
|
||||
build_data_file(1);
|
||||
}
|
||||
@@ -1245,16 +1247,18 @@ void pick_compatibility()
|
||||
cd_set_led(1100,15,(party.stuff_done[SDF_COMPATIBILITY_SPECIALS_INTERRUPT_REST] != 0) ? 1 : 0);// party.stuff_done[309][4] special_interrupt
|
||||
cd_set_led(1100,17,(party.stuff_done[SDF_COMPATIBILITY_ANYTIME_STAIRWAY_NODES] != 0) ? 1 : 0);// party.stuff_done[309][5] stairway_everywhere
|
||||
cd_set_led(1100,19,(party.stuff_done[SDF_COMPATIBILITY_CHECK_TIMERS_WHILE_RESTING] != 0) ? 1 : 0);// party.stuff_done[309][6] resting_checks_timers
|
||||
cd_set_led(1100,21,(party.stuff_done[SDF_COMPATIBILITY_TRIGGER_SPECIALS_ON_BOAT] != 0) ? 1 : 0);// party.stuff_done[309][7] trigger_special_on_boat
|
||||
|
||||
if (party.help_received[110] == 0) {
|
||||
/*if (party.help_received[70] == 0) {
|
||||
cd_initial_draw(1100);
|
||||
give_help(110,111,1100);
|
||||
}
|
||||
give_help(70,71,1100);
|
||||
}*/
|
||||
|
||||
while (dialog_not_toast)
|
||||
ModalDialog();
|
||||
|
||||
cd_kill_dialog(1100,0);
|
||||
adjust_window_mode();
|
||||
//adjust_window_mode();
|
||||
}
|
||||
|
||||
void put_party_stats()
|
||||
|
@@ -597,6 +597,9 @@ void load_file()
|
||||
|
||||
party_in_memory = true;
|
||||
|
||||
if(overall_mode == MODE_SHOPPING)//if loading while shopping, clean the shop items scroll bar
|
||||
ShowScrollBar(shop_sbar,SB_CTL,false);
|
||||
|
||||
// now if not in scen, this is it.
|
||||
if (in_scen == false)
|
||||
{
|
||||
@@ -628,6 +631,10 @@ void load_file()
|
||||
erase_out_specials();
|
||||
|
||||
belt_present = false;
|
||||
//turn off the debug mode...
|
||||
in_scen_debug = false;
|
||||
ghost_mode = false;
|
||||
//...in case it was on
|
||||
|
||||
if (town_restore == false) {
|
||||
center = party.p_loc;
|
||||
@@ -1743,6 +1750,8 @@ void get_reg_data()
|
||||
party.stuff_done[SDF_COMPATIBILITY_ANYTIME_STAIRWAY_NODES] = atoi(buffer);
|
||||
GetPrivateProfileString(section, "resting_checks_timers", "0", buffer, BUFFER_LEN, iniFile);
|
||||
party.stuff_done[SDF_COMPATIBILITY_CHECK_TIMERS_WHILE_RESTING] = atoi(buffer);
|
||||
GetPrivateProfileString(section, "trigger_special_on_boat", "0", buffer, BUFFER_LEN, iniFile);
|
||||
party.stuff_done[SDF_COMPATIBILITY_TRIGGER_SPECIALS_ON_BOAT] = atoi(buffer);
|
||||
|
||||
}
|
||||
|
||||
@@ -1769,6 +1778,7 @@ void build_data_file(short which) // 1 - compatibility ; 2 - preferences
|
||||
WritePrivateProfileString(section, "special_interrupt", (party.stuff_done[SDF_COMPATIBILITY_SPECIALS_INTERRUPT_REST] == 0)? "0" : "1", iniFile);
|
||||
WritePrivateProfileString(section, "stairway_everywhere", (party.stuff_done[SDF_COMPATIBILITY_ANYTIME_STAIRWAY_NODES] == 0)? "0" : "1", iniFile);
|
||||
WritePrivateProfileString(section, "resting_checks_timers", (party.stuff_done[SDF_COMPATIBILITY_CHECK_TIMERS_WHILE_RESTING] == 0)? "0" : "1", iniFile);
|
||||
WritePrivateProfileString(section, "trigger_special_on_boat", (party.stuff_done[SDF_COMPATIBILITY_TRIGGER_SPECIALS_ON_BOAT] == 0)? "0" : "1", iniFile);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -631,7 +631,7 @@ void display_alchemy()
|
||||
"Knowledge Brew (19)",
|
||||
"Strong Strength (10)",
|
||||
"Bliss (16)",
|
||||
"Strong Power (20)"
|
||||
"Strong Energy Ptn. (20)"
|
||||
};
|
||||
|
||||
SetCursor(sword_curs);
|
||||
@@ -1203,7 +1203,7 @@ void display_strings_event_filter (short item_hit)
|
||||
}
|
||||
}
|
||||
|
||||
// str_label_1 & str_label_2 uysed for saving button for journal
|
||||
// str_label_1 & str_label_2 used for saving button for journal
|
||||
// 1000 + x scen 2000 + x out 3000 + x town
|
||||
void display_strings(char *text1, char *text2,short str_label_1,short str_label_2,short str_label_1b,
|
||||
short str_label_2b,
|
||||
|
@@ -349,24 +349,24 @@ void put_item_graphics()
|
||||
if (item_array[i + first_item_shown] != 200) { // display an item in window
|
||||
item = t_i.items[item_array[i + first_item_shown]];
|
||||
|
||||
sprintf ((char *) message, "%s",
|
||||
sprintf (message, "%s",
|
||||
(item.isIdent()) ? (char *) item.full_name : (char *) item.name);
|
||||
csit(987,21 + i * 4,(char *) message);
|
||||
if (item.graphic_num >= 150)//custom item graphic?
|
||||
csp(987,20 + i * 4,3000 + 2000 + item.graphic_num - 150);
|
||||
else csp(987,20 + i * 4,4800 + item.graphic_num);////
|
||||
get_item_interesting_string(item,(char *) message);
|
||||
csit(987,22 + i * 4,(char *) message);
|
||||
get_item_interesting_string(item, message);
|
||||
csit(987,22 + i * 4, message);
|
||||
storage = item_weight(item);
|
||||
sprintf ((char *) message, "Weight: %d",storage);
|
||||
csit(987,53 + i,(char *) message);
|
||||
sprintf (message, "Weight: %d",storage);
|
||||
csit(987,53 + i, message);
|
||||
|
||||
}
|
||||
else { // erase the spot
|
||||
sprintf ((char *) message, "");
|
||||
csit(987,21 + i * 4,(char *) message);
|
||||
csit(987,22 + i * 4,(char *) message);
|
||||
csit(987,53 + i,(char *) message);
|
||||
sprintf (message, "");
|
||||
csit(987,21 + i * 4, message);
|
||||
csit(987,22 + i * 4, message);
|
||||
csit(987,53 + i, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -176,7 +176,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR, int nCmd
|
||||
|
||||
RegisterClass(&wndclass2);
|
||||
|
||||
mainPtr = CreateWindow (szAppName, "Classic Blades of Exile build_26.11.2010",
|
||||
mainPtr = CreateWindow (szAppName, "Classic Blades of Exile build_09.01.2011",
|
||||
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
|
||||
0,
|
||||
0,
|
||||
|
@@ -1233,7 +1233,8 @@ void do_priest_spell(short pc_num,short spell_num)
|
||||
|
||||
case SPELL_PRIEST_LIGHT:
|
||||
adven[pc_num].cur_sp -= spell_cost[1][spell_num];
|
||||
party.light_level += 210;
|
||||
//party.light_level += 210;
|
||||
increase_light(210);
|
||||
break;
|
||||
|
||||
case SPELL_PRIEST_SUMMON_SPIRIT:
|
||||
@@ -1660,7 +1661,7 @@ void cast_town_spell(location where)
|
||||
switch (scenario.ter_types[ter].special) { ////
|
||||
case TER_SPEC_UNLOCKABLE_TERRAIN: case TER_SPEC_UNLOCKABLE_BASHABLE:
|
||||
r1 = get_ran(1,0,100) - 5 * adven[who_cast].statAdj(SKILL_INTELLIGENCE) + 5 * c_town.difficulty;
|
||||
r1 += scenario.ter_types[ter].flag2 * 7;
|
||||
r1 += scenario.ter_types[ter].flag2 * 7; //unlock_adjust (door resistance)
|
||||
if (scenario.ter_types[ter].flag2 == 10)
|
||||
r1 = 10000;
|
||||
if (r1 < (135 - combat_percent[min(19,adven[who_cast].level)])) {
|
||||
@@ -2343,8 +2344,10 @@ void do_alchemy()
|
||||
short pc_num;
|
||||
item_record_type store_i = {7,0, 0,0,0,1,0,0, 50,0,0,0,0,0, 0, 8,0, location(),"Potion","Potion",0,5,0,0};
|
||||
|
||||
short potion_abils[20] = {72,87,70,73,70, 87,72,73,77,88,
|
||||
79,70,87,70,160, 88,86,71,84,88};
|
||||
short potion_abils[20] = {ITEM_AFFECT_POISON,ITEM_AFFECT_HEALTH,ITEM_POISON_WEAPON,ITEM_HASTE_SLOW,ITEM_POISON_WEAPON,
|
||||
ITEM_AFFECT_HEALTH,ITEM_AFFECT_POISON,ITEM_HASTE_SLOW,ITEM_AFFECT_DISEASE,ITEM_AFFECT_SPELL_POINTS,
|
||||
ITEM_AFFECT_DUMBFOUND,ITEM_POISON_WEAPON,ITEM_AFFECT_HEALTH,ITEM_POISON_WEAPON,ITEM_RESSURECTION_BALM,
|
||||
ITEM_AFFECT_SPELL_POINTS,ITEM_AFFECT_SKILL_POINTS,ITEM_BLESS_CURSE,ITEM_BLISS,ITEM_AFFECT_SPELL_POINTS};
|
||||
short potion_strs[20] = {2,2,2,2,4, 5,8,5,4,2,
|
||||
8,6,8,8,0, 5,2,8,5,8};
|
||||
short potion_val[20] = {40,60,15,50,50, 180,200,100,150,100,
|
||||
|
@@ -82,6 +82,8 @@ Boolean handle_wandering_specials (short mode)
|
||||
if ((mode == 2) && (store_wandering_special.spec_on_flee >= 0)) {// After fleeing like a buncha girly men
|
||||
run_special(SPEC_FLEE_ENCOUNTER,1,store_wandering_special.spec_on_flee,null_loc,&s1,&s2,&s3);
|
||||
}
|
||||
if(s3 > 0)
|
||||
initiate_redraw();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -169,8 +171,9 @@ Boolean check_special_terrain(location where_check,short mode,short which_pc,sho
|
||||
*forced = true;
|
||||
}
|
||||
*spec_num = c_town.town.spec_id[i];
|
||||
if ((is_blocked(where_check) == false) || (ter_special == TER_SPEC_CHANGE_WHEN_STEP_ON)
|
||||
|| (ter_special == TER_SPEC_CALL_LOCAL_SPECIAL) || (ter_special == TER_SPEC_CALL_SCENARIO_SPECIAL)) {
|
||||
if ((is_blocked(where_check) == false) || (ter_special == TER_SPEC_CHANGE_WHEN_STEP_ON) //is_blocked doesn't check if aboard a boat...
|
||||
|| (ter_special == TER_SPEC_CALL_LOCAL_SPECIAL) || (ter_special == TER_SPEC_CALL_SCENARIO_SPECIAL)
|
||||
|| ((PSD[SDF_COMPATIBILITY_TRIGGER_SPECIALS_ON_BOAT] == true) && (party.in_boat >= 0) && (scenario.ter_types[ter].boat_over == true))) { //...so, check if in boat and terrain allows to boat over
|
||||
give_help(54,0,0);
|
||||
run_special(mode,2,c_town.town.spec_id[i],where_check,&s1,&s2,&s3);
|
||||
if (s1 > 0)
|
||||
@@ -351,6 +354,9 @@ Boolean check_special_terrain(location where_check,short mode,short which_pc,sho
|
||||
if (is_combat())
|
||||
update_explored(pc_pos[current_pc]);
|
||||
|
||||
if (s3 > 0)
|
||||
initiate_redraw();
|
||||
|
||||
return can_enter;
|
||||
}
|
||||
|
||||
@@ -986,8 +992,11 @@ Boolean adj_town_look(location where)
|
||||
for (i = 0; i < 50; i++)
|
||||
if (same_point(where,c_town.town.special_locs[i]) == true) {
|
||||
run_special(SPEC_TOWN_LOOK,2,c_town.town.spec_id[i],where,&s1,&s2,&s3);
|
||||
if (s1 > 0) can_open = false;
|
||||
if (s1 > 0)
|
||||
can_open = false;
|
||||
got_special = true;
|
||||
if (s3 > 0)
|
||||
initiate_redraw();
|
||||
}
|
||||
put_item_screen(stat_window,0);
|
||||
}
|
||||
@@ -2041,7 +2050,7 @@ void oneshot_spec(short which_mode,special_node_type cur_node,short cur_spec_typ
|
||||
else j = adven[tmp].runTrap(spec.ex1a,spec.ex1b,spec.ex2a);
|
||||
}
|
||||
|
||||
if (j == 0)
|
||||
if (j == 0 || (party_toast() == true))//maybe party has been killed by the traps...
|
||||
{
|
||||
*a = 1;
|
||||
set_sd = false;
|
||||
|
@@ -53,7 +53,8 @@
|
||||
#define SDF_COMPATIBILITY_FULL_TRIMS 309][3
|
||||
#define SDF_COMPATIBILITY_SPECIALS_INTERRUPT_REST 309][4
|
||||
#define SDF_COMPATIBILITY_ANYTIME_STAIRWAY_NODES 309][5
|
||||
#define SDF_COMPATIBILITY_CHECK_TIMERS_WHILE_RESTING 309][6
|
||||
#define SDF_COMPATIBILITY_CHECK_TIMERS_WHILE_RESTING 309][6
|
||||
#define SDF_COMPATIBILITY_TRIGGER_SPECIALS_ON_BOAT 309][7
|
||||
|
||||
#define INVALID_TOWN 200
|
||||
|
||||
@@ -1082,7 +1083,7 @@ enum eMonstersPriestSpells {
|
||||
SPELL_MONST_PRIEST_MAJOR_HEAL = 17,
|
||||
SPELL_MONST_PRIEST_FLAMESTRIKE = 18,
|
||||
SPELL_MONST_PRIEST_SUMMON_HOST = 19,
|
||||
SPELL_MONST_PRIEST_HEAL_ALL = 20,// !!! this isn't a mass spell !!! it's the most reliable self-heal spell a monster can cast (heal 50 health each cast)
|
||||
SPELL_MONST_PRIEST_REVIVE_SELF = 20,// renamed from heal all, to avoid confusion (this isn't a mass spell !)
|
||||
SPELL_MONST_PRIEST_UNHOLY_RAVAGING = 21,
|
||||
SPELL_MONST_PRIEST_SUMMON_GUARDIAN = 22,
|
||||
SPELL_MONST_PRIEST_PESTILENCE = 23,
|
||||
|
@@ -69,16 +69,16 @@ void pc_record_type::kill(short type)
|
||||
play_sound(21);
|
||||
if(type == 4){
|
||||
play_sound(43);
|
||||
sprintf ((char *) create_line, " %s is turned to stone. ",(char *) name);
|
||||
add_string_to_buf((char *) create_line);
|
||||
sprintf (create_line, " %s is turned to stone. ",(char *) name);
|
||||
add_string_to_buf(create_line);
|
||||
}
|
||||
main_status = type;
|
||||
pc_moves[which_pc] = 0;
|
||||
}
|
||||
else {
|
||||
if (type == 4) {
|
||||
sprintf ((char *) create_line, " %s is immune to petrification. ",(char *) name);
|
||||
add_string_to_buf((char*) create_line); //inform of what has happened
|
||||
sprintf (create_line, " %s is immune to petrification. ",(char *) name);
|
||||
add_string_to_buf(create_line); //inform of what has happened
|
||||
}
|
||||
else{
|
||||
add_string_to_buf(" Life saved! ");
|
||||
@@ -499,8 +499,8 @@ void pc_record_type::acid(short how_much)
|
||||
}
|
||||
|
||||
status[STATUS_ACID] += how_much;
|
||||
sprintf ((char *) c_line, " %s covered with acid!",(char *) name);
|
||||
add_string_to_buf((char *) c_line);
|
||||
sprintf (c_line, " %s covered with acid!",(char *) name);
|
||||
add_string_to_buf(c_line);
|
||||
one_sound(42);
|
||||
|
||||
put_pc_screen();
|
||||
|
@@ -784,7 +784,7 @@ char *alch_names[] = {"Weak Curing Potion (1)","Weak Healing Potion (1)","Weak P
|
||||
"Graymold Salve (7)","Weak Energy Potion (9)",
|
||||
"Potion of Clarity (9)","Strong Poison (10)","Strong Heal Potion (12)","Killer Poison (12)",
|
||||
"Resurrection Balm (9)","Medium Energy Ptn. (14)","Knowledge Brew (19)" ,
|
||||
"Strong Strength (10)","Bliss (16)","Strong Power (20)"
|
||||
"Strong Strength (10)","Bliss (16)","Strong Energy Ptn. (20)"
|
||||
};
|
||||
char *alch_names_short[] = {"Weak Curing Potion","Weak Healing Potion","Weak Poison",
|
||||
"Weak Speed Potion","Medium Poison",
|
||||
@@ -792,7 +792,7 @@ char *alch_names_short[] = {"Weak Curing Potion","Weak Healing Potion","Weak Poi
|
||||
"Graymold Salve","Weak Energy Potion",
|
||||
"Potion of Clarity","Strong Poison","Strong Heal Potion","Killer Poison",
|
||||
"Resurrection Bal","Medium Energy Ptn.","Knowledge Brew",
|
||||
"Strong Strength","Bliss","Strong Power"
|
||||
"Strong Strength","Bliss","Strong Energy Ptn."
|
||||
};
|
||||
short spell_w_cast[2][62] = {{0,1,1,1,1,1,3,4,1,2, 1,1,1,1,1,1,4,1,4,1, 2,1,1,0,1,1,4,1,1,0,
|
||||
1,1,1,2,4,1,1,1, 2,1,1,2,4,4,1,1, 1,1,1,1,4,4,1,5, 1,4,1,4,4,4,4,1},
|
||||
@@ -875,7 +875,7 @@ char *m_mage_sp[] = {"Spark","Minor Haste","Strength","Flame Cloud","Flame",
|
||||
char *m_priest_sp[] = {"Minor Bless","Light Heal","Wrack","Stumble","Bless",
|
||||
"Curse","Wound","Summon Spirit","Disease","Heal",
|
||||
"Holy Scourge","Smite","Curse All","Sticks to Snakes","Martyr's Shield",
|
||||
"Bless All","Major Heal","Flamestrike","Summon Host","Full Heal",
|
||||
"Bless All","Major Heal","Flamestrike","Summon Host","Revive Self",
|
||||
"Unholy Ravaging","Summon Guardian","Pestilence","Revive All","Avatar",
|
||||
"Divine Thud"};
|
||||
// extra devices for maps
|
||||
|
Reference in New Issue
Block a user