Classic Blades of Exile :

- Various aesthetics fixes (no more buttons cut in half, justified some buttons, etc)
- Clicking the help icon next to the (unused) job button now correctly displays help.
- Redid the implementation of the (new) "check statistic node" (replaces "has enough mage lore") to prevent potential compatibility breaking with legacy scenarios.
- Small change to the (new) "Set town status" (replaces "Make Town Hostile") for the same reason.
- To clarify, renamed the "Dispel spirit" item ability to "Ravage spirit" (as it is, in fact, the spell called by the ability).
- For the same reason, renamed the monster spell "Heal All" to "Full Heal", as it isn't a mass spell but a powerful (and reliable) self-healing spell for monsters.
- Aligned the sleep immunity on the mac version : Slimes (regardless of the monster number), Stone and Undead types monsters are immuned to sleep.
- Dart throwing now only takes 2 ap for monsters (corrected from invisibility ability).
- Field generating monsters are now immuned to the type of field they generate (corrected from an Exile 3 incomplete transition).
- Rewrote the pending special queue for better events handling (no more potential overflow, entering/exiting town events are now sure to happens)
- Implemented the "No Terrain Animation" option.
- Un/Equipping something while in combat now correctly updates the ap display.
- MOnsters missile abilities now show their correct damage range in description (game and editor).
- Bashing weapons charges (if any) are now correctly shown (as usual, next to the name).

Codewise :

- The game shouldn't check if the item to be equipped is food anymore.
- Replaced lots of number checks by "human-readable" constants (some new).
- Removed some false checks about awaken spell supposed to work as dispel field.
- Fleeing and winning an outdoor battle now call the run_special function with the correct parameter (was reversed, with no consequences, since it's never checked)
- AI doesn't check the monster number, when deciding if the monster should cast a mage spell, anymore.

Chokboyz

git-svn-id: http://openexile.googlecode.com/svn/trunk@159 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
Chokboyz
2010-11-26 21:27:18 +00:00
parent ab9d0cfa93
commit 1fb77013b4
39 changed files with 5229 additions and 4908 deletions

View File

@@ -62,23 +62,23 @@ void location::crumbleWall()
{
unsigned char ter;
if (loc_off_act_area(*this) == TRUE)
if (loc_off_act_area(*this) == true)
return;
ter = t_d.terrain[x][y];
if (scenario.ter_types[ter].special == 7) {
if (scenario.ter_types[ter].special == TER_SPEC_CRUMBLING_TERRAIN) {
play_sound(60);
t_d.terrain[x][y] = scenario.ter_types[ter].flag1;
if(scenario.ter_types[scenario.ter_types[ter].flag1].special >= 16 && scenario.ter_types[scenario.ter_types[ter].flag1].special <=19)
belt_present = TRUE;
if(scenario.ter_types[scenario.ter_types[ter].flag1].special >= TER_SPEC_CONVEYOR_NORTH && scenario.ter_types[scenario.ter_types[ter].flag1].special <= TER_SPEC_CONVEYOR_WEST)
belt_present = true;
add_string_to_buf(" Barrier crumbles.");
}
}
bool location::isDoor() const
{
if ((scenario.ter_types[t_d.terrain[x][y]].special == 9) ||
(scenario.ter_types[t_d.terrain[x][y]].special == 1) ||
(scenario.ter_types[t_d.terrain[x][y]].special == 10))
if ((scenario.ter_types[t_d.terrain[x][y]].special == TER_SPEC_UNLOCKABLE_TERRAIN) ||
(scenario.ter_types[t_d.terrain[x][y]].special == TER_SPEC_CHANGE_WHEN_STEP_ON) ||
(scenario.ter_types[t_d.terrain[x][y]].special == TER_SPEC_UNLOCKABLE_BASHABLE))
return true;
return false;
}
@@ -88,7 +88,7 @@ void location::pickLock(short pc_num)
{
unsigned char terrain;
short r1,which_item;
Boolean will_break = FALSE;
Boolean will_break = false;
short unlock_adjust;
terrain = t_d.terrain[x][y];
@@ -101,25 +101,25 @@ void location::pickLock(short pc_num)
r1 = get_ran(1,0,100) + adven[pc_num].items[which_item].ability_strength * 7;
if (r1 < 75)
will_break = TRUE;
will_break = true;
r1 = get_ran(1,0,100) - 5 * adven[pc_num].statAdj(SKILL_DEXTERITY) + c_town.difficulty * 7
- 5 * adven[pc_num].skills[SKILL_LOCKPICKING] - adven[pc_num].items[which_item].ability_strength * 7;
// Nimble?
if (adven[pc_num].traits[TRAIT_NIMBLE] == TRUE) r1 -= 8;
if (adven[pc_num].traits[TRAIT_NIMBLE] == true) r1 -= 8;
if (adven[pc_num].hasAbilEquip(ITEM_THIEVING) < 24)
r1 = r1 - 12;
if ((scenario.ter_types[terrain].special < 9) || (scenario.ter_types[terrain].special > 10)) {
if ((scenario.ter_types[terrain].special < TER_SPEC_UNLOCKABLE_TERRAIN) || (scenario.ter_types[terrain].special > TER_SPEC_UNLOCKABLE_BASHABLE)) {
add_string_to_buf(" Wrong terrain type. ");
return;
}
unlock_adjust = scenario.ter_types[terrain].flag2;
if ((unlock_adjust >= 5) || (r1 > (90 - unlock_adjust * 15))) {
add_string_to_buf(" Didn't work. ");
if (will_break == TRUE)
if (will_break == true)
{
add_string_to_buf(" Pick breaks. ");
adven[pc_num].removeCharge(which_item);
@@ -130,8 +130,8 @@ void location::pickLock(short pc_num)
add_string_to_buf(" Door unlocked. ");
play_sound(9);
t_d.terrain[x][y] = scenario.ter_types[terrain].flag1;
if(scenario.ter_types[scenario.ter_types[terrain].flag1].special >= 16 && scenario.ter_types[scenario.ter_types[terrain].flag1].special <=19)
belt_present = TRUE;
if(scenario.ter_types[scenario.ter_types[terrain].flag1].special >= TER_SPEC_CONVEYOR_NORTH && scenario.ter_types[scenario.ter_types[terrain].flag1].special <= TER_SPEC_CONVEYOR_WEST)
belt_present = true;
}
}
@@ -142,9 +142,9 @@ void location::bashDoor(short pc_num)
short r1,unlock_adjust;
terrain = t_d.terrain[x][y];
r1 = get_ran(1,0,100) - 15 * adven[pc_num].statAdj(0) + c_town.difficulty * 4;
r1 = get_ran(1,0,100) - 15 * adven[pc_num].statAdj(SKILL_STRENGTH) + c_town.difficulty * 4;
if ((scenario.ter_types[terrain].special < 9) || (scenario.ter_types[terrain].special > 10))
if ((scenario.ter_types[terrain].special < TER_SPEC_UNLOCKABLE_TERRAIN) || (scenario.ter_types[terrain].special > TER_SPEC_UNLOCKABLE_BASHABLE))
{
add_string_to_buf(" Wrong terrain type. ");
return;
@@ -152,7 +152,7 @@ void location::bashDoor(short pc_num)
unlock_adjust = scenario.ter_types[terrain].flag2;
if ((unlock_adjust >= 5) || (r1 > (100 - unlock_adjust * 15)) || (scenario.ter_types[terrain].special != 10))
if ((unlock_adjust >= 5) || (r1 > (100 - unlock_adjust * 15)) || (scenario.ter_types[terrain].special != TER_SPEC_UNLOCKABLE_BASHABLE))
{
add_string_to_buf(" Didn't work. ");
adven[pc_num].damage(get_ran(1,1,4),4,-1);
@@ -162,7 +162,7 @@ void location::bashDoor(short pc_num)
add_string_to_buf(" Lock breaks. ");
play_sound(9);
t_d.terrain[x][y] = scenario.ter_types[terrain].flag1;
if(scenario.ter_types[scenario.ter_types[terrain].flag1].special >= 16 && scenario.ter_types[scenario.ter_types[terrain].flag1].special <=19)
belt_present = TRUE;
if(scenario.ter_types[scenario.ter_types[terrain].flag1].special >= TER_SPEC_CONVEYOR_NORTH && scenario.ter_types[scenario.ter_types[terrain].flag1].special <= TER_SPEC_CONVEYOR_WEST)
belt_present = true;
}
}