diff --git a/artifacts/mods/gl_partycontrol.int b/artifacts/mods/gl_partycontrol.int index 2a338765..418f41f7 100644 Binary files a/artifacts/mods/gl_partycontrol.int and b/artifacts/mods/gl_partycontrol.int differ diff --git a/artifacts/mods/gl_partycontrol.ssl b/artifacts/mods/gl_partycontrol.ssl index 480bef2e..900fa068 100644 --- a/artifacts/mods/gl_partycontrol.ssl +++ b/artifacts/mods/gl_partycontrol.ssl @@ -172,7 +172,7 @@ procedure start begin if (controlMode > 0) then begin displayName := GetConfig("CombatControl", "DisplayName", 0); - if displayName then begin + if (displayName) then begin variable nameTag := add_iface_tag; debug_msg("NPC control - added new box: " + nameTag); if (nameTag <= 0) then begin // box added? @@ -199,6 +199,8 @@ procedure start begin register_hook_proc(HOOK_GAMEMODECHANGE, GameModeChange_Handler); register_hook_proc(HOOK_INVENTORYMOVE, InventoryMove_Handler); register_hook_proc(HOOK_INVENWIELD, InvenWield_Handler); + end else begin + exit; end end end diff --git a/artifacts/translations/german.ini b/artifacts/translations/german.ini index ff9e7c25..69562899 100644 --- a/artifacts/translations/german.ini +++ b/artifacts/translations/german.ini @@ -20,3 +20,20 @@ PartyOrderAttackRobot=::Piep:: RaceText=Geschlecht StyleText=Stil DoneBtn=OK + +;Custom names for player's unarmed attacks (max 16 characters) +[Unarmed] +;Punch=Boxen: +;Kick=Tretten: +;StrongPunch=Starker Hieb: +;HammerPunch=Hammerschlag: +;Haymaker=Heumacher: +;Jab= +;PalmStrike= +;PiercingStrike= +;StrongKick=Starker Tritt: +;SnapKick= +;PowerKick= +;HipKick= +;HookKick= +;PiercingKick= diff --git a/artifacts/translations/russian.ini b/artifacts/translations/russian.ini index 9bb4cae1..232f2361 100644 --- a/artifacts/translations/russian.ini +++ b/artifacts/translations/russian.ini @@ -20,3 +20,20 @@ PartyOrderAttackRobot=:: RaceText=Раса StyleText=Стиль DoneBtn=Закрыть + +;Имена для невооруженных атак игрока (макс. 16 символов) +[Hits] +;Punch=Удар рукой: +;Kick=Удар ногой: +;StrongPunch= +;HammerPunch= +;Haymaker= +;Jab= +;PalmStrike= +;PiercingStrike= +;StrongKick= +;SnapKick= +;PowerKick= +;HipKick= +;HookKick= +;PiercingKick= diff --git a/sfall/Game/GUI/render.cpp b/sfall/Game/GUI/render.cpp index bcfde0e5..c102b79d 100644 --- a/sfall/Game/GUI/render.cpp +++ b/sfall/Game/GUI/render.cpp @@ -135,7 +135,7 @@ void __fastcall Render::GNW_win_refresh(fo::Window* win, RECT* updateRect, BYTE* } surface = &win->surface[currRect->wRect.left - win->rect.x] + ((currRect->wRect.top - win->rect.y) * win->width); } else { - surface = new BYTE[height * width](); // black background + surface = new BYTE[height * width](); // black background (for main menu) widthFrom = width; // replace with rectangle } diff --git a/sfall/Modules/DamageMod.cpp b/sfall/Modules/DamageMod.cpp index 92dbdfe7..a6196793 100644 --- a/sfall/Modules/DamageMod.cpp +++ b/sfall/Modules/DamageMod.cpp @@ -47,22 +47,22 @@ void DamageMod::DamageGlovz(fo::ComputeAttackResult &ctd, DWORD &accumulatedDama mov edi, accumulatedDamage; begin: mov mValue, 0; // clear value - mov edx, dword ptr ds:[esi + 4]; // get the hit mode of weapon being used by an attacker + mov edx, dword ptr ds:[esi + 4]; // get the hit mode of weapon being used by the attacker mov eax, dword ptr ds:[esi]; // get pointer to critter attacking call fo::funcoffs::item_w_damage_; // get the raw damage value mov ebx, bonusRangedDamage; // get the bonus ranged damage value - cmp ebx, 0; // compare the range bonus damage value to 0 + test ebx, ebx; // compare the range bonus damage value to 0 jle rdJmp; // if the RB value is less than or equal to 0 then goto rdJmp add eax, ebx; // add the RB value to the RD value rdJmp: - cmp eax, 0; // compare the new damage value to 0 + test eax, eax; // compare the new damage value to 0 jle noDamageJmp; // goto noDamageJmp mov ebx, eax; // set the ND value mov edx, armorDT; // get the armorDT value - cmp edx, 0; // compare the armorDT value to 0 + test edx, edx; // compare the armorDT value to 0 jle bJmp; // if the armorDT value is less than or equal to 0 then goto bJmp mov eax, dword ptr ammoY; // get the ammoY value - cmp eax, 0; // compare the ammoY value to 0 + test eax, eax; // compare the ammoY value to 0 jg aJmp; // if the ammoY value is greater than 0 then goto aJmp mov eax, 1; // set the ammoY value to 1 aJmp: @@ -72,16 +72,10 @@ aJmp: jg grThan; // the dividend is greater than the divisor then goto grThan jmp setOne; // if the two values are equal then goto setOne lrThan: - mov ecx, edx; // store the dividend value temporarily - imul edx, 2; // multiply dividend value by 2 - sub edx, eax; // subtract divisor value from the dividend value - cmp edx, 0; // compare the result to 0 - jl setZero; // if the result is less than 0 then goto setZero - jg setOne; // if the result is greater than 0 then goto setOne - mov edx, ecx; // restore dividend value - and edx, 1; // if true (1) then odd if false (0) then even - jz setZero; // if the result is equal to 0 then setZero - jmp setOne; // if the result is not 0 then goto setOne + shl edx, 1; // multiply dividend value by 2 + cmp edx, eax; // compare the dividend value to the divisor value + jle setZero; // if the dividend value is less than or equal to the divisor value then goto setZero + jmp setOne; // if the dividend value is greater than the divisor value then goto setOne grThan: mov ecx, eax; // assign the divisor value xor eax, eax; // clear value @@ -90,15 +84,14 @@ bbbJmp: sub edx, ecx; // subtract the divisor value from the dividend value cmp edx, ecx; // compare the remainder value to the divisor value jge bbbJmp; // if the remainder value is greater or equal to the divisor value then goto bbbJmp + test edx, edx; // compare the remainder value to 0 jz endDiv; // if the remainder value is equal to 0 then goto endDiv - imul edx, 2; // multiply temp remainder value by 2 - sub edx, ecx; // subtract the divisor value from the temp remainder - cmp edx, 0; // compare the result to 0 - jl endDiv; // if the result is less than 0 then goto endDiv - jg addOne; // if the result is greater than 0 then goto addOne - mov ecx, eax; // assign the quotient value - and ecx, 1; // if true (1) then odd if false (0) then even - jz endDiv; // if the result is equal to zero goto endDiv + shl edx, 1; // multiply temp remainder value by 2 + cmp edx, ecx; // compare the temp remainder to the divisor value + jl endDiv; // if the temp remainder is less than the divisor value then goto endDiv + jg addOne; // if the temp remainder is greater than the divisor value then goto addOne + test al, 1; // check if the quotient value is even or odd + jz endDiv; // if the quotient value is even goto endDiv addOne: inc eax; // add 1 to the quotient value jmp endDiv; // goto endDiv @@ -124,13 +117,13 @@ endDiv: jmp cJmp; // goto cJmp bJmp: mov edx, armorDR; // get the armorDR value - cmp edx, 0; // compare the armorDR value to 0 + test edx, edx; // compare the armorDR value to 0 jle dJmp; // if the armorDR value is less than or equal to 0 then goto dJmp cJmp: - cmp ebx, 0; // compare the new damage value to 0 + test ebx, ebx; // compare the new damage value to 0 jle noDamageJmp; // goto noDamageJmp mov edx, armorDR; // get the armorDR value - cmp edx, 0; // compare the armorDR value to 0 + test edx, edx; // compare the armorDR value to 0 jle eJmp; // if the armorDR value is less than or equal to 0 then goto eJmp mov eax, difficulty; // get the CD value cmp eax, 100; // compare the CD value to 100 @@ -142,9 +135,9 @@ sdrJmp: sub edx, 20; // subtract 20 from the armorDR value aSubCJmp: mov eax, dword ptr ammoDRM; // get the ammoDRM value - cmp eax, 0; // compare the ammoDRM value to 0 + test eax, eax; // compare the ammoDRM value to 0 jl adrJmp; // if the ammoDRM value is less than 0 then goto adrJmp - je bSubCJmp; // if the ammoDRM value is equal to 0 then goto bSubCJmp + jz bSubCJmp; // if the ammoDRM value is equal to 0 then goto bSubCJmp xor ecx, ecx; // clear value sub ecx, eax; // subtract ammoDRM value from 0 mov eax, ecx; // set new ammoDRM value @@ -152,7 +145,7 @@ adrJmp: add edx, eax; // add the ammoDRM value to the armorDR value bSubCJmp: mov eax, dword ptr ammoX; // get the ammoX value - cmp eax, 0; // compare the ammoX value to 0 + test eax, eax; // compare the ammoX value to 0 jg cSubCJmp; // if the ammoX value is greater than 0 then goto cSubCJmp; mov eax, 1; // set the ammoX value to 1 cSubCJmp: @@ -203,7 +196,7 @@ bSubDJmp: divSix: add ebx, eax; // add the quotient value to the ND value eJmp: - cmp ebx, 0; // compare the new damage value to 0 + test ebx, ebx; // compare the new damage value to 0 jle noDamageJmp; // goto noDamageJmp mov eax, multiplyDamage; // get the Critical Multiplier (CM) value cmp eax, 2; // compare the CM value to 2 diff --git a/sfall/ddraw.vcxproj b/sfall/ddraw.vcxproj index 4960ce07..fcef30c3 100644 --- a/sfall/ddraw.vcxproj +++ b/sfall/ddraw.vcxproj @@ -164,7 +164,9 @@ false + 0x11000000 false + false MachineX86 @@ -215,7 +217,9 @@ false + 0x11000000 false + false MachineX86 @@ -267,7 +271,9 @@ false + 0x11000000 false + false MachineX86