X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;ds=sidebyside;f=src%2Fserver%2Fmap_object_actions.c;h=174ec647b603fcfd19d6885539dbe0628bab392d;hb=e03020342a74aef143b1ec38c18966dac64181b5;hp=0cbc1bf5f3e4b24c5827b2b916829f75dfb7d1a8;hpb=0255432b4e8d3a7b3aec71c4e43e7fb063c45833;p=plomrogue diff --git a/src/server/map_object_actions.c b/src/server/map_object_actions.c index 0cbc1bf..174ec64 100644 --- a/src/server/map_object_actions.c +++ b/src/server/map_object_actions.c @@ -40,8 +40,10 @@ static void actor_hits_actor(struct MapObj * hitter, struct MapObj * hitted); /* Bonus stuff to actor_*() to happen if actor==player. Mostly writing of log * messages; _pick and _drop also decrement world.inventory_sel by 1 if >0. + * (match_dir() is just a little helper to playerbonus_move().) */ static void playerbonus_wait(); +static uint8_t match_dir(char d, char ** dsc_d, char match, char * dsc_match); static void playerbonus_move(char d, uint8_t passable); static void playerbonus_drop(uint8_t owns_none); static void playerbonus_pick(uint8_t picked); @@ -151,21 +153,28 @@ static void playerbonus_wait() -static void playerbonus_move(char d, uint8_t passable) +static uint8_t match_dir(char d, char ** dsc_d, char match, char * dsc_match) { - char * dsc_dir = "north"; - if ('E' == d) - { - dsc_dir = "east" ; - } - else if ('S' == d) + if (d == match) { - dsc_dir = "south"; - } - else if ('W' == d) - { - dsc_dir = "west" ; + * dsc_d = dsc_match; + return 1; } + return 0; +} + + + +static void playerbonus_move(char d, uint8_t passable) +{ + char * dsc_dir = "north"; + if ( match_dir(d, &dsc_dir, '6', "east") + || match_dir(d, &dsc_dir, '2', "south") + || match_dir(d, &dsc_dir, '4', "west") + || match_dir(d, &dsc_dir, '7', "north-west") + || match_dir(d, &dsc_dir, '9', "north-east") + || match_dir(d, &dsc_dir, '1', "south-west") + || match_dir(d, &dsc_dir, '3', "south-east")); char * dsc_move = "You move "; if (0 == passable) {