- Added enums for status and player race, traits, and skills.

- The player race enum has been expanded so that it can also be used as monster race; it's not yet used as such though.
- Additional races Vahnatai, Plant, and Bird added.
- Alter the terrain special flags so that they can be used as signed shorts in the few cases that require it, and changed dangerous terrain to combine the curse/bless and slow/haste cases.
- Fixed an unnoticed error which would have probably prevented monsters from being affected by conveyors.
- Refined the dangerous terrain special ability with more messages and also handling all cases except weapon poison.

git-svn-id: http://openexile.googlecode.com/svn/trunk@79 4ebdad44-0ea0-11de-aab3-ff745001d230
This commit is contained in:
2009-05-29 04:47:54 +00:00
parent 2485e57514
commit 50829034a9
121 changed files with 333 additions and 273 deletions

View File

@@ -910,8 +910,8 @@ void put_ter_info_in_dlog() {
CDSN(813,4,store_ter.trans_to_what);
CDSN(813,8,store_ter.light_radius);
cd_set_led_range(813,32,55,store_ter.special);
CDSN(813,6,store_ter.flag1);
CDSN(813,7,store_ter.flag2);
CDSN(813,6,store_ter.flag1.u);
CDSN(813,7,store_ter.flag2.u);
get_str(str,21,40 + store_ter.special);
csit(813,67,(char *) str);
get_str(str,21,80 + store_ter.special);
@@ -949,7 +949,7 @@ bool save_ter_info() {
else if (store_ter.special == TER_SPEC_DANGEROUS) {
if (cre(i,0,256,"First special flag must be from 0 to 8.","",813) == true) return false;
}
store_ter.flag1 = CDGN(813,6);
store_ter.flag1.u = CDGN(813,6);
i = CDGN(813,7);
if (store_ter.special == TER_SPEC_TOWN_ENTRANCE) {
@@ -958,7 +958,7 @@ bool save_ter_info() {
else if ((store_ter.special == TER_SPEC_DAMAGING) || (store_ter.special == TER_SPEC_DANGEROUS)) {
if (cre(i,0,256,"Second special flag must be from 0 to 100.","",813) == true) return false;
}
store_ter.flag2 = CDGN(813,7);
store_ter.flag2.u = CDGN(813,7);
i = CDGN(813,4);
if (cre(i,0,255,"Transform To What must be from 0 to 255.","",813) == true) return false;

View File

@@ -217,16 +217,16 @@ void init_dialogs(){
}
short get_small_icon(ter_num_t ter){
short icon;
short icon = -1;
switch(scenario.ter_types[ter].special){
case TER_SPEC_NONE:
icon = scenario.ter_types[ter].flag1;
icon = scenario.ter_types[ter].flag1.s;
break;
case TER_SPEC_CHANGE_WHEN_STEP_ON:
icon = 23;
break;
case TER_SPEC_DAMAGING:
switch(scenario.ter_types[ter].flag3){
switch(scenario.ter_types[ter].flag3.u){
case DAMAGE_WEAPON:
icon = 40;
break;
@@ -260,15 +260,15 @@ short get_small_icon(ter_num_t ter){
icon = -1;
break;
case TER_SPEC_DANGEROUS:
switch(scenario.ter_types[ter].flag3){
switch(scenario.ter_types[ter].flag3.u){
case STATUS_POISONED_WEAPON: // TODO: Do something here
break;
case STATUS_BLESS: // TODO: Do something here
case STATUS_BLESS_CURSE: // TODO: Do something here (check flag1 to determine whether bless or curse)
break;
case STATUS_POISON:
icon = 35;
break;
case STATUS_HASTE: // TODO: Do something here
case STATUS_HASTE_SLOW: // TODO: Do something here (check flag1 to determine whether haste or slow)
break;
case STATUS_INVULNERABLE: // TODO: Do something here
break;
@@ -293,10 +293,6 @@ short get_small_icon(ter_num_t ter){
case STATUS_ACID:
icon = 41;
break;
case 14: // bless TODO: Do something here
break;
case 15: // haste TODO: Do something here
break;
}
break;
case TER_SPEC_CRUMBLING:
@@ -306,15 +302,15 @@ short get_small_icon(ter_num_t ter){
icon = 30;
break;
case TER_SPEC_UNLOCKABLE:
if (scenario.ter_types[ter].flag2 >= 5)
icon = (scenario.ter_types[ter].flag2 == 10) ? 32 : 31;
if (scenario.ter_types[ter].flag2.u >= 5)
icon = (scenario.ter_types[ter].flag2.u == 10) ? 32 : 31;
else icon = 30;
break;
case TER_SPEC_IS_A_SIGN:
icon = 26;
break;
case TER_SPEC_CALL_SPECIAL:
icon = scenario.ter_types[ter].flag3;
icon = scenario.ter_types[ter].flag3.s;
break;
case TER_SPEC_IS_A_CONTAINER:
icon = 36;
@@ -323,7 +319,7 @@ short get_small_icon(ter_num_t ter){
icon = -1;
break;
case TER_SPEC_CONVEYOR:
switch(scenario.ter_types[ter].flag1){ // TODO: Consider the other four possible directions
switch(scenario.ter_types[ter].flag1.u){ // TODO: Consider the other four possible directions
case DIR_N:
icon = 27;
break;
@@ -348,7 +344,7 @@ short get_small_icon(ter_num_t ter){
icon = -1;
break;
case TER_SPEC_CALL_SPECIAL_WHEN_USED:
icon = scenario.ter_types[ter].flag3;
icon = scenario.ter_types[ter].flag3.s;
break;
default:
icon = -1;