Change town portal nodes so that ex2a specifies the type of flash
(0-normal, 1-none, 2-out only, 3-in only; forced to 1 if called while talking)
This commit is contained in:
@@ -1364,10 +1364,13 @@ void out_move_party(char x,char y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void teleport_party(short x,short y,short mode)
|
void teleport_party(short x,short y,short mode)
|
||||||
// mode - 0 full teleport flash 1 no teleport flash 2 only fade flash
|
// mode - 0=full teleport flash 1=no teleport flash 2=only fade flash 3=only arrival flash
|
||||||
{
|
{
|
||||||
short i;
|
short i;
|
||||||
location l;
|
location l;
|
||||||
|
bool fadeIn = false, fadeOut = false;
|
||||||
|
if(mode == 0 || mode == 2) fadeOut = true;
|
||||||
|
if(mode == 0 || mode == 3) fadeIn = true;
|
||||||
|
|
||||||
if (is_combat())
|
if (is_combat())
|
||||||
mode = 1;
|
mode = 1;
|
||||||
@@ -1375,15 +1378,12 @@ void teleport_party(short x,short y,short mode)
|
|||||||
l = univ.town.p_loc;
|
l = univ.town.p_loc;
|
||||||
update_explored(l);
|
update_explored(l);
|
||||||
|
|
||||||
if (mode != 1) {
|
if(fadeOut) {
|
||||||
start_missile_anim();
|
start_missile_anim();
|
||||||
for (i = 0; i < 9; i++)
|
for (i = 0; i < 9; i++)
|
||||||
add_explosion(l,-1,1,1,0,0);
|
add_explosion(l,-1,1,1,0,0);
|
||||||
do_explosion_anim(5,1);
|
do_explosion_anim(5,1);
|
||||||
}
|
|
||||||
if (mode != 1)
|
|
||||||
can_draw_pcs = false;
|
can_draw_pcs = false;
|
||||||
if (mode != 1) {
|
|
||||||
do_explosion_anim(5,2);
|
do_explosion_anim(5,2);
|
||||||
end_missile_anim();
|
end_missile_anim();
|
||||||
}
|
}
|
||||||
@@ -1398,14 +1398,14 @@ void teleport_party(short x,short y,short mode)
|
|||||||
update_explored(l);
|
update_explored(l);
|
||||||
draw_terrain(0);
|
draw_terrain(0);
|
||||||
|
|
||||||
if (mode == 0) {
|
if(fadeIn) {
|
||||||
start_missile_anim();
|
start_missile_anim();
|
||||||
for (i = 0; i < 14; i++)
|
for (i = 0; i < 14; i++)
|
||||||
add_explosion(center,-1,1,1,0,0);
|
add_explosion(center,-1,1,1,0,0);
|
||||||
do_explosion_anim(5,1);
|
do_explosion_anim(5,1);
|
||||||
}
|
}
|
||||||
can_draw_pcs = true;
|
can_draw_pcs = true;
|
||||||
if (mode == 0) {
|
if(fadeIn) {
|
||||||
do_explosion_anim(5,2);
|
do_explosion_anim(5,2);
|
||||||
end_missile_anim();
|
end_missile_anim();
|
||||||
}
|
}
|
||||||
@@ -3493,9 +3493,9 @@ void townmode_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
|
|||||||
}
|
}
|
||||||
else if(cChoiceDlog("basic-portal.xml",{"yes","no"}).show() == "yes") {
|
else if(cChoiceDlog("basic-portal.xml",{"yes","no"}).show() == "yes") {
|
||||||
*a = 1;
|
*a = 1;
|
||||||
if(which_mode == eSpecCtx::TALK || spec.ex2a == 0)
|
if(which_mode == eSpecCtx::TALK)
|
||||||
teleport_party(spec.ex1a,spec.ex1b,1);
|
teleport_party(spec.ex1a,spec.ex1b,1);
|
||||||
else teleport_party(spec.ex1a,spec.ex1b,0);
|
else teleport_party(spec.ex1a,spec.ex1b,spec.ex2a);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case eSpecType::TOWN_GENERIC_BUTTON:
|
case eSpecType::TOWN_GENERIC_BUTTON:
|
||||||
@@ -3583,7 +3583,7 @@ void townmode_spec(eSpecCtx which_mode,cSpecial cur_node,short cur_spec_type,
|
|||||||
*a = 1;
|
*a = 1;
|
||||||
if(which_mode == eSpecCtx::TALK)
|
if(which_mode == eSpecCtx::TALK)
|
||||||
teleport_party(spec.ex1a,spec.ex1b,1);
|
teleport_party(spec.ex1a,spec.ex1b,1);
|
||||||
else teleport_party(spec.ex1a,spec.ex1b,0);
|
else teleport_party(spec.ex1a,spec.ex1b,spec.ex2a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user