70 lines
2.5 KiB
Plaintext

void script_2132(int arg0,int arg1,int arg2,int arg3,int arg4) {
int ivar5;
int ivar6;
int ivar7;
int ivar8;
flow_0:
ivar5 = add(getWidgetActualX(new WidgetPointer(arg0)), arg1);
ivar6 = add(getWidgetActualY(new WidgetPointer(arg0)), arg2);
if ((getWidgetActualX(new WidgetPointer(arg3)) >= ivar5) && (getWidgetActualX(new WidgetPointer(arg3)) < add(ivar5, getWidgetActualWidth(new WidgetPointer(arg0))))) {
if ((getWidgetActualY(new WidgetPointer(arg3)) >= ivar6) && (getWidgetActualY(new WidgetPointer(arg3)) < add(ivar6, getWidgetActualHeight(new WidgetPointer(arg0))))) {
ivar5 = subtract(ivar5, add(rndExcl(3), 2));
ivar6 = subtract(ivar6, add(rndExcl(3), 2));
if (arg4 <= getClientCycle()) {
playSoundEffect(819, 1, 0);
arg4 = add(add(getClientCycle(), 20), rndExcl(40));
}
}
} else {
if (((ivar5 >= getWidgetActualX(new WidgetPointer(arg3))) && (ivar5 < add(getWidgetActualX(new WidgetPointer(arg3)), getWidgetActualWidth(new WidgetPointer(arg3))))) && ((ivar6 >= getWidgetActualY(new WidgetPointer(arg3))) && (ivar6 < add(getWidgetActualY(new WidgetPointer(arg3)), getWidgetActualHeight(new WidgetPointer(arg3)))))) {
ivar5 = add(add(ivar5, rndExcl(3)), 2);
ivar6 = add(add(ivar6, rndExcl(3)), 2);
if (arg4 <= getClientCycle()) {
playSoundEffect(819, 1, 0);
arg4 = add(add(getClientCycle(), 20), rndExcl(40));
}
}
}
ivar5 = max(ivar5, 0);
ivar6 = max(ivar6, 0);
ivar7 = subtract(getWidgetActualWidth(new WidgetPointer(getWidgetParentId(new WidgetPointer(arg0)))), getWidgetActualWidth(new WidgetPointer(arg0)));
ivar5 = min(ivar5, ivar7);
ivar8 = subtract(getWidgetActualHeight(new WidgetPointer(getWidgetParentId(new WidgetPointer(arg0)))), getWidgetActualHeight(new WidgetPointer(arg0)));
ivar6 = min(ivar6, ivar8);
IF (ivar5 <= 0)
GOTO flow_14
GOTO flow_15
flow_14:
IF (arg1 < 0)
GOTO flow_17
flow_15:
IF ((ivar5 >= ivar7) && (arg1 > 0))
GOTO flow_17
GOTO flow_18
flow_17:
arg1 = subtract(0, arg1);
flow_18:
IF (ivar6 <= 0)
GOTO flow_19
GOTO flow_20
flow_19:
IF (arg2 < 0)
GOTO flow_22
flow_20:
IF ((ivar6 >= ivar8) && (arg2 > 0))
GOTO flow_22
GOTO flow_23
flow_22:
arg2 = subtract(0, arg2);
flow_23:
if (((boolean)arg1)) {
arg1 = add(rndExcl(3), 1);
}
if (((boolean)arg2)) {
arg2 = add(rndExcl(3), 1);
}
setWidgetPosition(ivar5, ivar6, 0, 0, new WidgetPointer(arg0));
setScriptCallOnGameloop(2132, new WidgetPointer(arg0), arg1, arg2, new WidgetPointer(arg3), arg4, "IiiIi", new WidgetPointer(arg0));
return;
}