Minor changes

- Implement terrains destroyable by quickfire
- Rename is_weapon() to better reflect its use
This commit is contained in:
2015-01-27 01:09:20 -05:00
parent baf3ec2a9b
commit 33b5116a77
4 changed files with 13 additions and 10 deletions

View File

@@ -4931,6 +4931,13 @@ void process_fields() {
for(i = r.left + 1; i < r.right ; i++)
for(j = r.top + 1; j < r.bottom ; j++)
if(qf[i][j] > 0) {
ter_num_t ter = univ.town->terrain(i,j);
if(univ.scenario.ter_types[ter].special == eTerSpec::CRUMBLING && univ.scenario.ter_types[ter].flag3.u > 0) {
// TODO: This seems like the wrong sound
play_sound(60);
univ.town->terrain(i,j) = univ.scenario.ter_types[ter].flag1.u;
add_string_to_buf(" Quickfire burns through barrier.");
}
univ.town.set_quickfire(i,j,true);
}
}

View File

@@ -1318,7 +1318,7 @@ static bool connect_roads(ter_num_t ter){
void place_road(short q,short r,location where, bool here) {
location draw_loc;
ter_num_t ter;
ter_num_t ter = coord_to_ter(where.x, where.y);
rectangle to_rect;
//rectangle road_rects[2] = {{76,112,80,125},{72,144,90,148}}; // 0 - rl partial 1 - ud partial
// TODO: The duplication of rectangle here shouldn't be necessary...

View File

@@ -670,9 +670,10 @@ bool poison_weapon( short pc_num, short how_much,short safe) {
short p_chance[21] = {
40,72,81,85,88,89,90,
91,92,93,94,94,95,95,96,97,98,100,100,100,100};
// TODO: This doesn't allow you to choose between poisoning a melee weapon and poisoning arrows, except by temporarily dequipping one
for(i = 0; i < 24; i++)
if((univ.party[pc_num].equip[i]) && (is_weapon(pc_num,i))) {
if((univ.party[pc_num].equip[i]) && (is_poisonable_weap(pc_num,i))) {
weap = i;
i = 30;
}
@@ -705,8 +706,7 @@ bool poison_weapon( short pc_num, short how_much,short safe) {
}
}
bool is_weapon(short pc_num,short item) {
// TODO: Uh, why aren't bows, crossbows, thrown missiles, no-ammo missiles included? (There's probably a reason though.)
bool is_poisonable_weap(short pc_num,short item) {
if((univ.party[pc_num].items[item].variety == eItemType::ONE_HANDED) ||
(univ.party[pc_num].items[item].variety == eItemType::TWO_HANDED) ||
(univ.party[pc_num].items[item].variety == eItemType::ARROW) ||
@@ -1558,7 +1558,7 @@ bool cast_spell_on_space(location where, eSpell spell) {
return true;
}
void crumble_wall(location where) { // TODO: Add something like this to the spreading quickfire function
void crumble_wall(location where) {
ter_num_t ter;
if(loc_off_act_area(where))
@@ -1835,10 +1835,6 @@ static void draw_spell_pc_info(cDialog& me) {
std::string n = boost::lexical_cast<std::string>(i + 1);
if(univ.party[i].main_status != eMainStatus::ABSENT) {
me["pc" + n].setText(univ.party[i].name);
// TODO: Maybe this detail should be reimplemented?
//if(pc_casting == i)
// cd_text_frame(1098,24 + store_spell_target,11);
//else cd_text_frame(1098,24 + store_spell_target,1);
if(univ.party[i].main_status == eMainStatus::ALIVE) {
me["hp" + n].setTextToNum(univ.party[i].cur_health);

View File

@@ -14,7 +14,7 @@ void award_xp(short pc_num,short amt);
void drain_pc(short which_pc,short how_much);
short check_party_stat(eSkill which_stat, short mode);
bool poison_weapon( short pc_num, short how_much,short safe);
bool is_weapon(short pc_num,short item);
bool is_poisonable_weap(short pc_num,short item);
void cast_spell(eSkill type);
bool repeat_cast_ok(eSkill type);
void give_party_spell(short which);