Fill in a lot of missed cases (mostly just messages)
- Increase strength of slayer weapons that weren't in the original BoE by making sure that each race applies some multiplier to the ability strength - Messages for every occasional status effect, both negative and positive. If charm/forcecage, ignore. - Fix weapon poison not being applied - Forcecage supported for damaging terrain (in town only, of course) and "affect status" items - Weapon poison supported for "affect status" items; it differs from "poison weapon" items in that it honours the magic use type and doesn't risk messing up (like the Envenom spell) - Show error messages when encountering an unimplemented spell or special node - Fix missing handling of NPCs appearing after town dies when loading a saved town
This commit is contained in:
@@ -1040,6 +1040,7 @@ static bool edit_monst_abil_detail(cDialog& me, std::string hit, cMonster& monst
|
||||
case eMonstAbilTemplate::BREATH_DARKNESS:
|
||||
param = get_monst_abil_num("Breath weapon strength:", 0, 4, me);
|
||||
break;
|
||||
default: break; // None of the other templates take parameters
|
||||
}
|
||||
// Protect from overwriting an existing ability.
|
||||
auto save_abils = monst.abil;
|
||||
|
@@ -164,6 +164,11 @@ static short get_small_icon(ter_num_t ter){
|
||||
case eDamageType::DEMON:
|
||||
icon = 19;
|
||||
break;
|
||||
case eDamageType::SPECIAL:
|
||||
// TODO: Need icon for this and possibly new icons for undead/demon
|
||||
break;
|
||||
case eDamageType::MARKED: // Invalid
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case eTerSpec::BRIDGE:
|
||||
@@ -206,6 +211,8 @@ static short get_small_icon(ter_num_t ter){
|
||||
case eStatus::ACID:
|
||||
icon = 41;
|
||||
break;
|
||||
case eStatus::FORCECAGE:
|
||||
// TODO: Need icon for this
|
||||
case eStatus::MAIN: case eStatus::CHARM:
|
||||
break; // Nothing to do here; these values are "magic" and should not be used
|
||||
}
|
||||
|
@@ -708,6 +708,9 @@ static bool edit_spec_enc_value(cDialog& me, std::string item_hit, node_stack_t&
|
||||
case eShopType::PRIEST: btn = 'P'; break;
|
||||
case eShopType::ALCHEMY: btn = 'a'; break;
|
||||
case eShopType::SKILLS: btn = 'k'; break;
|
||||
case eShopType::FOOD: case eShopType::HEALING: case eShopType::MAGIC_GOOD: case eShopType::MAGIC_GREAT:
|
||||
case eShopType::MAGIC_JUNK: case eShopType::MAGIC_LOUSY: case eShopType::MAGIC_SO_SO:
|
||||
break;
|
||||
}
|
||||
}
|
||||
short val = me[field].getTextAsNum(), mode = (btn == 'S' || btn == '$') ? 0 : edit_stack.top().mode, store;
|
||||
|
@@ -1053,6 +1053,9 @@ static bool save_talk_node(cDialog& me, std::string item_hit, std::stack<short>&
|
||||
case eTalkNode::DEP_ON_TOWN:
|
||||
if(cre(talk_node.extras[0],0,scenario.towns.size(),"Town number must be from 0 to " + std::to_string(scenario.towns.size()) + ".","",&me)) return false;
|
||||
break;
|
||||
case eTalkNode::BUY_TOWN_LOC:
|
||||
if(cre(talk_node.extras[1],0,scenario.towns.size(),"Town number must be from 0 to " + std::to_string(scenario.towns.size()) + ".","",&me)) return false;
|
||||
break;
|
||||
case eTalkNode::BUY_ITEMS: case eTalkNode::BUY_MAGE: case eTalkNode::BUY_PRIEST:
|
||||
case eTalkNode::BUY_ALCHEMY: case eTalkNode::BUY_HEALING:
|
||||
if(cre(talk_node.extras[0],0,6,"Cost adjustment must be from 0 (cheapest) to 6 (most expensive).","",&me)) return false;
|
||||
@@ -1076,6 +1079,11 @@ static bool save_talk_node(cDialog& me, std::string item_hit, std::stack<short>&
|
||||
case eTalkNode::CALL_SCEN_SPEC:
|
||||
if(cre(talk_node.extras[0],-1,255,"The scenario special node called must be in the legal range (0 - 255), or -1 for No Special.","",&me)) return false;
|
||||
break;
|
||||
case eTalkNode::BUY_INFO: case eTalkNode::BUY_JUNK: case eTalkNode::DEP_ON_TIME: case eTalkNode::REGULAR:
|
||||
case eTalkNode::END_ALARM: case eTalkNode::END_DIE: case eTalkNode::END_FIGHT: case eTalkNode::END_FORCE:
|
||||
case eTalkNode::IDENTIFY: case eTalkNode::SELL_ARMOR: case eTalkNode::SELL_ITEMS: case eTalkNode::SELL_WEAPONS:
|
||||
case eTalkNode::TRAINING:
|
||||
break;
|
||||
}
|
||||
|
||||
talk_node.str1 = me["str1"].getText();
|
||||
|
Reference in New Issue
Block a user