Merge pull request #133 from Lorenzooone/give_improvements
De-Hardcode give strings
This commit is contained in:
commit
6a0ebaf760
|
@ -5,8 +5,10 @@ $input_rom_file = "bin/m12fresh.gba"
|
|||
$output_rom_file = "bin/m12.gba"
|
||||
$eb_rom_file = "bin/eb.smc"
|
||||
$working_dir = "working"
|
||||
$give_dir = "working/m12-give-strings"
|
||||
$src_dir = "src"
|
||||
$data_dir = "src/data"
|
||||
$give_new_dir = "src/m12-give-strings"
|
||||
$cast_roll_file = "working/cast_roll.json"
|
||||
$staff_credits_file = "working/staff_text.md"
|
||||
$compiled_asm_file = "src/m2-compiled.asm"
|
||||
|
@ -362,6 +364,9 @@ Copy-Item -Path $input_rom_file -Destination $output_rom_file
|
|||
& dotnet $scripttool_cmd $scripttool_args
|
||||
if ($LASTEXITCODE -ne 0) { exit -1 }
|
||||
|
||||
"Copying give strings to src folder..."
|
||||
Copy-Item -Path $give_dir -Destination $give_new_dir -Recurse
|
||||
|
||||
"Pre-rendering cast roll..."
|
||||
& dotnet $rendercastroll_cmd $rendercastroll_args
|
||||
if ($LASTEXITCODE -ne 0) { exit -1 }
|
||||
|
@ -455,4 +460,6 @@ $rom_bytes = [IO.File]::ReadAllBytes($output_rom_file)
|
|||
|
||||
"Finished compiling $output_rom_file in $($timer.Elapsed.TotalSeconds.ToString("F3")) s"
|
||||
|
||||
Remove-Item -Path $give_new_dir -Recurse
|
||||
|
||||
exit 0
|
||||
|
|
540
src/c/goods.c
540
src/c/goods.c
|
@ -561,7 +561,7 @@ void shop_print_items(WINDOW *window, unsigned char *items, int y_offset, int it
|
|||
//It's based on the party's status, whether the target's inventory is full or not and whether the source is the target
|
||||
void give_print(byte item, byte target, byte source, WINDOW *window, byte *str)
|
||||
{
|
||||
bool notFullInventory = false;
|
||||
bool fullInventory = true;
|
||||
int index;
|
||||
struct PC *user_data = (&m2_ness_data[source]);
|
||||
struct PC *target_data = (&m2_ness_data[target]);
|
||||
|
@ -571,507 +571,121 @@ void give_print(byte item, byte target, byte source, WINDOW *window, byte *str)
|
|||
for(index = 0; index < 0xE; index++)
|
||||
if(target_data->goods[index] == 0)
|
||||
{
|
||||
notFullInventory = true;
|
||||
fullInventory = false;
|
||||
break;
|
||||
}
|
||||
if((user_data->ailment == UNCONSCIOUS) ||(user_data->ailment == DIAMONDIZED))
|
||||
incapable_user = true;
|
||||
if((target_data->ailment == UNCONSCIOUS) ||(target_data->ailment == DIAMONDIZED))
|
||||
incapable_target = true;
|
||||
index = 0;
|
||||
|
||||
if(source == target)
|
||||
{
|
||||
if(incapable_user)
|
||||
setupSelf_Dead(str, &index, source, item);
|
||||
readStringGive(str, give_strings_table[SELF_DEAD], source, target, item);
|
||||
else
|
||||
setupSelf_Alive(str, &index, source, item);
|
||||
readStringGive(str, give_strings_table[SELF], source, target, item);
|
||||
}
|
||||
else if(!notFullInventory)
|
||||
else if(fullInventory)
|
||||
{
|
||||
if(!incapable_target && !incapable_user)
|
||||
setupFull_Both_Alive(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[ALIVE_BOTH_FULL], source, target, item);
|
||||
else if(incapable_target && incapable_user)
|
||||
setupFull_Both_Dead(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[DEAD_FULL], source, target, item);
|
||||
else if(incapable_target && !incapable_user)
|
||||
setupFull_Target_Dead(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[TARGET_DEAD_FULL], source, target, item);
|
||||
else
|
||||
setupFull_User_Dead(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[GIVER_DEAD_FULL], source, target, item);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!incapable_target && !incapable_user)
|
||||
setup_Both_Alive(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[ALIVE_BOTH], source, target, item);
|
||||
else if(incapable_target && !incapable_user)
|
||||
setup_Target_Dead(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[TARGET_DEAD], source, target, item);
|
||||
else if(!incapable_target && incapable_user)
|
||||
setup_User_Dead(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[GIVER_DEAD], source, target, item);
|
||||
else
|
||||
setup_Both_Dead(str, &index, source, target, item);
|
||||
readStringGive(str, give_strings_table[DEAD], source, target, item);
|
||||
}
|
||||
str[index++] = 0x1D;
|
||||
str[index++] = 0xFF; //END
|
||||
str[index++] = 0;
|
||||
str[index++] = 0xFF; //END
|
||||
|
||||
window->text_start = str;
|
||||
window->text_start2 = str;
|
||||
}
|
||||
|
||||
void setupSelf_Alive(byte *String, int *index, byte user, byte item)
|
||||
void readStringGive(byte *outputString, byte *baseString, byte source, byte target, byte item)
|
||||
{
|
||||
char rearranged[] = " rearranged ";
|
||||
char own[] = " own";
|
||||
char items[] = " items and the ";
|
||||
char moved[] = " moved.";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(rearranged) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(rearranged[i]);
|
||||
|
||||
getPossessive(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(own) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(own[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(items) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(items[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
String[(*index)++] = encode_ascii(' '); //Format
|
||||
String[(*index)++] = encode_ascii(' ');
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
for (int i = 0; i < (sizeof(moved) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(moved[i]);
|
||||
}
|
||||
|
||||
void setupSelf_Dead(byte *String, int *index, byte user, byte item)
|
||||
{
|
||||
struct PC *tmp; //Get alive character
|
||||
byte alive = 0;
|
||||
while((alive == user))
|
||||
alive++;
|
||||
for(int i = alive; i < 4; i++)
|
||||
while(*baseString != END)
|
||||
{
|
||||
tmp = &(m2_ness_data[i]);
|
||||
if((tmp->ailment != UNCONSCIOUS) && (tmp->ailment != DIAMONDIZED))
|
||||
{
|
||||
alive = i;
|
||||
break;
|
||||
}
|
||||
outputString = readCharacterGive(outputString, *baseString, source, target, item);
|
||||
baseString++;
|
||||
}
|
||||
|
||||
char rearranged[] = " rearranged";
|
||||
char items[] = "'s items and the";
|
||||
char moved[] = " moved.";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(alive, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(rearranged) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(rearranged[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
String[(*index)++] = encode_ascii(' ');
|
||||
String[(*index)++] = encode_ascii(' '); //Format
|
||||
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(items) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(items[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
String[(*index)++] = encode_ascii(' ');
|
||||
String[(*index)++] = encode_ascii(' '); //Format
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
for (int i = 0; i < (sizeof(moved) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(moved[i]);
|
||||
outputString[0] = 0x1D;
|
||||
outputString[1] = 0xFF; //END
|
||||
outputString[2] = 0;
|
||||
outputString[3] = 0xFF; //END
|
||||
}
|
||||
|
||||
void setupFull_Both_Alive(byte *String, int *index, byte user, byte target, byte item)
|
||||
byte *readCharacterGive(byte *outputString, byte chr, byte source, byte target, byte item)
|
||||
{
|
||||
char tried[] = " tried to give";
|
||||
char the[] = " the ";
|
||||
char to[] = " to ";
|
||||
char but[] = "but ";
|
||||
char was[] = " was already";
|
||||
char carrying[] = " carrying too much stuff.";
|
||||
int index = 0; //Index used by multi-characters entries
|
||||
struct PC *tmp; //Struct to get alive character
|
||||
byte alive;
|
||||
byte *item_str; //Item string
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(tried) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(tried[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(the) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(the[i]);
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(to) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(to[i]);
|
||||
|
||||
getCharName(target, String, index);
|
||||
|
||||
String[(*index)++] = encode_ascii(',');
|
||||
|
||||
String[(*index)++] = 0x2;
|
||||
String[(*index)++] = 0xFF; //prompt + newline
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
|
||||
for (int i = 0; i < (sizeof(but) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(but[i]);
|
||||
|
||||
getPronoun(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(was) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(was[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(carrying) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(carrying[i]);
|
||||
}
|
||||
|
||||
void setupFull_Target_Dead(byte *String, int *index, byte user, byte target, byte item)
|
||||
{
|
||||
char tried[] = " tried to add";
|
||||
char the[] = " the ";
|
||||
char to[] = " to ";
|
||||
char s_stuff[]= "'s stuff,";
|
||||
char but[] = "but there was no room for it.";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(tried) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(tried[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(the) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(the[i]);
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(to) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(to[i]);
|
||||
|
||||
getCharName(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(s_stuff) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(s_stuff[i]);
|
||||
|
||||
String[(*index)++] = 0x2;
|
||||
String[(*index)++] = 0xFF; //prompt + newline
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
|
||||
for (int i = 0; i < (sizeof(but) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(but[i]);
|
||||
}
|
||||
|
||||
void setupFull_User_Dead(byte *String, int *index, byte user, byte target, byte item)
|
||||
{
|
||||
char tried[] = " tried to take";
|
||||
char the[] = " the ";
|
||||
char from[] = " from ";
|
||||
char s_stuff[]= "'s stuff,";
|
||||
char but[] = "but ";
|
||||
char was[] = " was already";
|
||||
char carrying[] = " carrying too much stuff.";
|
||||
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(tried) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(tried[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(the) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(the[i]);
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(from) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(from[i]);
|
||||
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(s_stuff) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(s_stuff[i]);
|
||||
|
||||
String[(*index)++] = 0x2;
|
||||
String[(*index)++] = 0xFF; //prompt + newline
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
|
||||
for (int i = 0; i < (sizeof(but) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(but[i]);
|
||||
|
||||
getPronoun(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(was) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(was[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(carrying) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(carrying[i]);
|
||||
}
|
||||
|
||||
void setupFull_Both_Dead(byte *String, int *index, byte user, byte target, byte item)
|
||||
{
|
||||
struct PC *tmp; //Get alive character
|
||||
byte alive = 0;
|
||||
while((alive == user) || (alive == target))
|
||||
alive++;
|
||||
for(int i = alive; i < 4; i++)
|
||||
switch(chr)
|
||||
{
|
||||
tmp = &(m2_ness_data[i]);
|
||||
if((tmp->ailment != UNCONSCIOUS) && (tmp->ailment != DIAMONDIZED))
|
||||
{
|
||||
alive = i;
|
||||
case PROMPT:
|
||||
outputString[0] = 2;
|
||||
outputString[1] = 0xFF;
|
||||
index = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
char tried[] = " tried to add";
|
||||
char s_[] = "'s ";
|
||||
char to[] = " to ";
|
||||
char s_stuff[]= "'s stuff,";
|
||||
char but[] = "but there was no room for it.";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(alive, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(tried) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(tried[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
String[(*index)++] = encode_ascii(' ');
|
||||
String[(*index)++] = encode_ascii(' '); //Format
|
||||
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(s_) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(s_[i]);
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(to) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(to[i]);
|
||||
|
||||
getCharName(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(s_stuff) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(s_stuff[i]);
|
||||
|
||||
String[(*index)++] = 0x2;
|
||||
String[(*index)++] = 0xFF; //prompt + newline
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
|
||||
for (int i = 0; i < (sizeof(but) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(but[i]);
|
||||
}
|
||||
|
||||
void setup_Both_Alive(byte *String, int *index, byte user, byte target, byte item)
|
||||
{
|
||||
char gave[] = " gave";
|
||||
char the[] = " the ";
|
||||
char to[] = " to ";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(gave) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(gave[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(the) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(the[i]);
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(to) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(to[i]);
|
||||
|
||||
getCharName(target, String, index);
|
||||
|
||||
String[(*index)++] = encode_ascii('.');
|
||||
}
|
||||
|
||||
void setup_Target_Dead(byte *String, int *index, byte user, byte target, byte item)
|
||||
{
|
||||
char added[] = " added";
|
||||
char the[] = " the ";
|
||||
char to[] = " to ";
|
||||
char s_stuff[] = "'s stuff.";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(added) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(added[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(the) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(the[i]);
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(to) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(to[i]);
|
||||
|
||||
getCharName(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(s_stuff) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(s_stuff[i]);
|
||||
}
|
||||
|
||||
void setup_User_Dead(byte *String, int *index, byte user, byte target, byte item)
|
||||
{
|
||||
char took[] = " took";
|
||||
char the[] = " the ";
|
||||
char from[] = " from ";
|
||||
char s_stuff[] = "'s stuff.";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(took) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(took[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(the) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(the[i]);
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
for (int i = 0; i < (sizeof(from) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(from[i]);
|
||||
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(s_stuff) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(s_stuff[i]);
|
||||
}
|
||||
|
||||
void setup_Both_Dead(byte *String, int *index, byte user, byte target, byte item)
|
||||
{
|
||||
struct PC *tmp; //Get alive character
|
||||
byte alive = 0;
|
||||
while((alive == user) || (alive == target))
|
||||
alive++;
|
||||
for(int i = alive; i < 4; i++)
|
||||
{
|
||||
tmp = &(m2_ness_data[i]);
|
||||
if((tmp->ailment != UNCONSCIOUS) && (tmp->ailment != DIAMONDIZED))
|
||||
{
|
||||
alive = i;
|
||||
case NEWLINE:
|
||||
outputString[0] = 1;
|
||||
outputString[1] = 0xFF;
|
||||
index = 2;
|
||||
break;
|
||||
}
|
||||
case TARGET:
|
||||
getCharName(target, outputString, &index);
|
||||
break;
|
||||
case SOURCE:
|
||||
getCharName(source, outputString, &index);
|
||||
break;
|
||||
case ALIVE:
|
||||
alive = 0;
|
||||
while((alive == source))
|
||||
alive++;
|
||||
for(int i = alive; i < 4; i++)
|
||||
{
|
||||
tmp = &(m2_ness_data[i]);
|
||||
if((tmp->ailment != UNCONSCIOUS) && (tmp->ailment != DIAMONDIZED))
|
||||
{
|
||||
alive = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
getCharName(alive, outputString, &index);
|
||||
break;
|
||||
case TARGET_POSS:
|
||||
getPossessive(target, outputString, &index);
|
||||
break;
|
||||
case SOURCE_POSS:
|
||||
getPossessive(source, outputString, &index);
|
||||
break;
|
||||
case TARGET_PRON:
|
||||
getPronoun(target, outputString, &index);
|
||||
break;
|
||||
case SOURCE_PRON:
|
||||
getPronoun(source, outputString, &index);
|
||||
break;
|
||||
case ITEM:
|
||||
item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(outputString, item_str, &index, 0);
|
||||
break;
|
||||
default:
|
||||
outputString[0] = chr + CHAR_OFFSET;
|
||||
index = 1;
|
||||
}
|
||||
|
||||
char added[] = " added ";
|
||||
char _s[] = "'s";
|
||||
char to[] = " to";
|
||||
char s_stuff[] = "'s stuff.";
|
||||
|
||||
String[(*index)++] = 0x70; //Initial bullet
|
||||
getCharName(alive, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(added) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(added[i]);
|
||||
|
||||
getCharName(user, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(_s) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(_s[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
String[(*index)++] = encode_ascii(' '); //Format
|
||||
String[(*index)++] = encode_ascii(' ');
|
||||
|
||||
byte *item_str = m2_strlookup(m2_items_offsets, m2_items_strings, item);
|
||||
copy_name(String, item_str, index, 0);
|
||||
|
||||
for (int i = 0; i < (sizeof(to) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(to[i]);
|
||||
|
||||
String[(*index)++] = 1;
|
||||
String[(*index)++] = 0xFF; //newline
|
||||
|
||||
String[(*index)++] = encode_ascii(' '); //Format
|
||||
String[(*index)++] = encode_ascii(' ');
|
||||
|
||||
getCharName(target, String, index);
|
||||
|
||||
for (int i = 0; i < (sizeof(s_stuff) - 1); i++)
|
||||
String[(*index)++] = encode_ascii(s_stuff[i]);
|
||||
return outputString + index;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,29 @@
|
|||
#include "pc.h"
|
||||
#include "input.h"
|
||||
|
||||
#define SELF 0
|
||||
#define SELF_DEAD 1
|
||||
#define ALIVE_BOTH 2
|
||||
#define GIVER_DEAD 3
|
||||
#define TARGET_DEAD 4
|
||||
#define DEAD 5
|
||||
#define ALIVE_BOTH_FULL 6
|
||||
#define GIVER_DEAD_FULL 7
|
||||
#define TARGET_DEAD_FULL 8
|
||||
#define DEAD_FULL 9
|
||||
|
||||
#define END 0xFF
|
||||
#define PROMPT 0xFE
|
||||
#define NEWLINE 0xFD
|
||||
#define TARGET 0xFC
|
||||
#define SOURCE 0xFB
|
||||
#define ALIVE 0xFA
|
||||
#define TARGET_POSS 0xF9
|
||||
#define SOURCE_POSS 0xF8
|
||||
#define TARGET_PRON 0xF7
|
||||
#define SOURCE_PRON 0xF6
|
||||
#define ITEM 0xF5
|
||||
|
||||
typedef enum DIRECTION_MOVED
|
||||
{
|
||||
DIRECTION_NONE,
|
||||
|
@ -16,17 +39,10 @@ int goods_outer_process(WINDOW* window, int y_offset, bool give);
|
|||
int goods_inner_process(WINDOW *window, unsigned short *items);
|
||||
void goods_print_items(WINDOW *window, unsigned short *items, int y_offset);
|
||||
void shop_print_items(WINDOW *window, unsigned char *items, int y_offset, int itemsnum);
|
||||
void setupSelf_Alive(byte *String, int *index, byte user, byte item);
|
||||
void setupSelf_Dead(byte *String, int *index, byte user, byte item);
|
||||
void setupFull_Both_Alive(byte *String, int *index, byte user, byte target, byte item);
|
||||
void setupFull_Target_Dead(byte *String, int *index, byte user, byte target, byte item);
|
||||
void setupFull_User_Dead(byte *String, int *index, byte user, byte target, byte item);
|
||||
void setupFull_Both_Dead(byte *String, int *index, byte user, byte target, byte item);
|
||||
void setup_Both_Alive(byte *String, int *index, byte user, byte target, byte item);
|
||||
void setup_Target_Dead(byte *String, int *index, byte user, byte target, byte item);
|
||||
void setup_User_Dead(byte *String, int *index, byte user, byte target, byte item);
|
||||
void setup_Both_Dead(byte *String, int *index, byte user, byte target, byte item);
|
||||
void give_print(byte item, byte target, byte source, WINDOW *window, byte *str);
|
||||
void readStringGive(byte *outputString, byte *baseString, byte source, byte target, byte item);
|
||||
byte *readCharacterGive(byte *outputString, byte chr, byte source, byte target, byte item);
|
||||
|
||||
|
||||
extern void m2_soundeffect(int index);
|
||||
extern int m2_div(int dividend, int divisor);
|
||||
|
@ -36,6 +52,7 @@ extern void m2_clearwindowtiles(WINDOW* window);
|
|||
extern int bin_to_bcd(int value, int* digit_count);
|
||||
|
||||
extern int m2_items;
|
||||
extern byte* give_strings_table[];
|
||||
extern PC m2_ness_data[];
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1936,6 +1936,50 @@ flyover_tea:
|
|||
flyover_coffee:
|
||||
.include "data/flyover-coffee.asm"
|
||||
|
||||
give_self:
|
||||
.include "m12-give-strings/m12-give-self-alive.asm"
|
||||
|
||||
give_self_dead:
|
||||
.include "m12-give-strings/m12-give-self-dead.asm"
|
||||
|
||||
give_alive:
|
||||
.include "m12-give-strings/m12-give-both-alive.asm"
|
||||
|
||||
give_giver_dead:
|
||||
.include "m12-give-strings/m12-give-giver-dead.asm"
|
||||
|
||||
give_target_dead:
|
||||
.include "m12-give-strings/m12-give-target-dead.asm"
|
||||
|
||||
give_dead:
|
||||
.include "m12-give-strings/m12-give-both-dead.asm"
|
||||
|
||||
give_alive_full:
|
||||
.include "m12-give-strings/m12-give-both-alive-full.asm"
|
||||
|
||||
give_giver_dead_full:
|
||||
.include "m12-give-strings/m12-give-giver-dead-full.asm"
|
||||
|
||||
give_target_dead_full:
|
||||
.include "m12-give-strings/m12-give-target-dead-full.asm"
|
||||
|
||||
give_dead_full:
|
||||
.include "m12-give-strings/m12-give-both-dead-full.asm"
|
||||
|
||||
.align 4
|
||||
give_strings_table:
|
||||
dw give_self
|
||||
dw give_self_dead
|
||||
dw give_alive
|
||||
dw give_giver_dead
|
||||
dw give_target_dead
|
||||
dw give_dead
|
||||
dw give_alive_full
|
||||
dw give_giver_dead_full
|
||||
dw give_target_dead_full
|
||||
dw give_dead_full
|
||||
|
||||
.align 4
|
||||
m2InsaneCultist:
|
||||
.incbin "data/m2-insane-cultist.bin"
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\csender tried to give\n the \citem\n to \creceiver,\prompt@but \creceiverpronoun was already\n carrying too much stuff."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\csender gave\n the \citem\n to \creceiver."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\calive tried to add\n \csender's \citem\n to \creceiver's stuff,\prompt@but there was no room for it."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\calive added \csender's\n \citem to\n \creceiver's stuff."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\creceiver tried to take\n the \citem\n from \csender's stuff,\prompt@but \creceiverpronoun was already\n carrying too much stuff."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\creceiver took\n the \citem\n from \csender's stuff."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\csender rearrenged \csenderpossessive own\n items and the\n \citem moved."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\calive rearrenged\n \creceiver's items and the\n \citem moved."
|
|
@ -0,0 +1,120 @@
|
|||
00=\x00
|
||||
01=\x01
|
||||
17=\x17
|
||||
1C=\x1C
|
||||
26=\x26
|
||||
30=\x30
|
||||
3E=\x3E
|
||||
44=\x44
|
||||
4A=\x4A
|
||||
4C=\x4C
|
||||
56=\x56
|
||||
|
||||
00=
|
||||
01=!
|
||||
02="
|
||||
03=#
|
||||
04=$
|
||||
05=%
|
||||
06=&
|
||||
07='
|
||||
08=(
|
||||
09=)
|
||||
0A=*
|
||||
0B=+
|
||||
0C=,
|
||||
0D=-
|
||||
0E=.
|
||||
0F=/
|
||||
10=0
|
||||
11=1
|
||||
12=2
|
||||
13=3
|
||||
14=4
|
||||
15=5
|
||||
16=6
|
||||
17=7
|
||||
18=8
|
||||
19=9
|
||||
1A=:
|
||||
1B=;
|
||||
1C=<
|
||||
1D==
|
||||
1E=>
|
||||
1F=?
|
||||
20=@
|
||||
21=A
|
||||
22=B
|
||||
23=C
|
||||
24=D
|
||||
25=E
|
||||
26=F
|
||||
27=G
|
||||
28=H
|
||||
29=I
|
||||
2A=J
|
||||
2B=K
|
||||
2C=L
|
||||
2D=M
|
||||
2E=N
|
||||
2F=O
|
||||
30=P
|
||||
31=Q
|
||||
32=R
|
||||
33=S
|
||||
34=T
|
||||
35=U
|
||||
36=V
|
||||
37=W
|
||||
38=X
|
||||
39=Y
|
||||
3A=Z
|
||||
3B=[8B]
|
||||
3C=[8C]
|
||||
3D=[8D]
|
||||
3E=[8E]
|
||||
3F=[8F]
|
||||
40=`
|
||||
41=a
|
||||
42=b
|
||||
43=c
|
||||
44=d
|
||||
45=e
|
||||
46=f
|
||||
47=g
|
||||
48=h
|
||||
49=i
|
||||
4A=j
|
||||
4B=k
|
||||
4C=l
|
||||
4D=m
|
||||
4E=n
|
||||
4F=o
|
||||
50=p
|
||||
51=q
|
||||
52=r
|
||||
53=s
|
||||
54=t
|
||||
55=u
|
||||
56=v
|
||||
57=w
|
||||
58=x
|
||||
59=y
|
||||
5A=z
|
||||
5B={
|
||||
5C=|
|
||||
5D=}
|
||||
5E=~
|
||||
5F=[AF]
|
||||
|
||||
F5=\citem
|
||||
F6=\csenderpronoun
|
||||
F7=\creceiverpronoun
|
||||
F8=\csenderpossessive
|
||||
F9=\creceiverpossessive
|
||||
FA=\calive
|
||||
FB=\csender
|
||||
FC=\creceiver
|
||||
FD=\n
|
||||
FE=\prompt
|
||||
/FF
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\csender tried to add\n the \citem\n to \creceiver's stuff,\prompt@but there was no room for it."
|
|
@ -0,0 +1,3 @@
|
|||
.loadtable "m12-give-strings/m12-give-table.tbl"
|
||||
|
||||
.str "@\csender added\n the \citem\n to \creceiver's stuff."
|
Loading…
Reference in New Issue