From 25c9518766f7a3350163d9dbe552191d5c00e14e Mon Sep 17 00:00:00 2001 From: nick206265 Date: Thu, 6 Mar 2025 07:50:18 +0300 Subject: [PATCH 1/4] first step --- src/units/mechos.cpp | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/units/mechos.cpp b/src/units/mechos.cpp index 87822288..27ef5dc4 100644 --- a/src/units/mechos.cpp +++ b/src/units/mechos.cpp @@ -2959,12 +2959,42 @@ int InsectUnit::test_objects_collision() int log = 0; BaseObject* p; + int d,l,i; + + p = (BaseObject*)(BulletD.Tail); + while(p){ + if(p->Visibility == VISIBLE){ +// if(p->ID != ID_BULLET) +// ErrH.Abort("Big BUG with memory"); + if(((BulletObject*)(p))->ShowID == BULLET_SHOW_TYPE_ID::CRATER){ + i = radius + p->radius; + l = getDistY(p->R_curr.y,R_curr.y); + if(l < i){ + d = getDistX(p->R_curr.x,R_curr.x); + if(d < i && R_curr.z <= p->R_curr.z + i && (d*d + l*l) < i*i){ + Touch(p); + p->Touch(this); + }; + }; + }else log += test_object_to_baseobject(p); + }; + p = (BaseObject*)(p->NextTypeList); + }; + p = (BaseObject*)(ActD.Tail); while(p && p != this){ if(p->Visibility == VISIBLE) log += test_object_to_baseobject(p); p = (BaseObject*)(p->NextTypeList); }; + + p = (BaseObject*)(JumpD.Tail); + while(p){ + if(p->Visibility == VISIBLE) + log += test_object_to_baseobject(p); + p = (BaseObject*)(p->NextTypeList); + }; + return 0; }; @@ -3625,7 +3655,7 @@ void InsectUnit::Touch(GeneralObject* p) if (ActD.Active) { Health = Health - uvsInsectTable[BeebType]->DamageFromRam; ActD.Active->BulletCollision((ActD.Active->MaxEnergy + ActD.Active->MaxArmor) / uvsInsectTable[BeebType]->RamDamage,NULL); - std::cout<<" CxDebug: InsectUnit::Touch (ID_VANGER): Damaging player and himself a little, health:"<Status & SOBJ_ACTIVE){ @@ -3661,9 +3691,14 @@ void InsectUnit::Touch(GeneralObject* p) break; case ID_BULLET: case ID_JUMPBALL: + if (p->ID == ID_BULLET) { + std::cout<<" *** BULLET"<ID == ID_JUMPBALL) { + std::cout<<" *** JUMPBALL"< 2 && Health > 0) { Health = Health - uvsInsectTable[BeebType]->DamageFromBullet; - std::cout<<" CxDebug: InsectUnit::Touch (ID_BULLET || ID_JUMPBALL): Health:"<ActIntBuffer.data1 > 0){ GunStatus = GUN_FIRE; - ItemData->ActIntBuffer.data1--; + //ItemData->ActIntBuffer.data1--; if(NetworkON) NetUpdate(); if(ActD.Active) SOUND_CRUSTEST_SHOT(getDistX(ActD.Active->R_curr.x,Owner->R_curr.x)); From 23ac494f11ebde849adea58f95392ae77c35601b Mon Sep 17 00:00:00 2001 From: nick206265 Date: Thu, 6 Mar 2025 09:03:51 +0300 Subject: [PATCH 2/4] revert debug prints and infinite ammo --- src/units/mechos.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/units/mechos.cpp b/src/units/mechos.cpp index 27ef5dc4..a2a3d08c 100644 --- a/src/units/mechos.cpp +++ b/src/units/mechos.cpp @@ -3655,7 +3655,7 @@ void InsectUnit::Touch(GeneralObject* p) if (ActD.Active) { Health = Health - uvsInsectTable[BeebType]->DamageFromRam; ActD.Active->BulletCollision((ActD.Active->MaxEnergy + ActD.Active->MaxArmor) / uvsInsectTable[BeebType]->RamDamage,NULL); - std::cout<<" 000 CxDebug: InsectUnit::Touch (ID_VANGER): Damaging player and himself a little, health:"<Status & SOBJ_ACTIVE){ @@ -3691,14 +3691,9 @@ void InsectUnit::Touch(GeneralObject* p) break; case ID_BULLET: case ID_JUMPBALL: - if (p->ID == ID_BULLET) { - std::cout<<" *** BULLET"<ID == ID_JUMPBALL) { - std::cout<<" *** JUMPBALL"< 2 && Health > 0) { Health = Health - uvsInsectTable[BeebType]->DamageFromBullet; - std::cout<<" *** CxDebug: InsectUnit::Touch (ID_BULLET || ID_JUMPBALL): Health:"<ActIntBuffer.data1 > 0){ GunStatus = GUN_FIRE; - //ItemData->ActIntBuffer.data1--; + ItemData->ActIntBuffer.data1--; if(NetworkON) NetUpdate(); if(ActD.Active) SOUND_CRUSTEST_SHOT(getDistX(ActD.Active->R_curr.x,Owner->R_curr.x)); From 6c433b4f6b2a1b86e7a5707b518e4b51bc08b6cc Mon Sep 17 00:00:00 2001 From: nick206265 Date: Fri, 26 Dec 2025 21:11:37 +0300 Subject: [PATCH 3/4] overwrite boltuns in pack to 5 && make jablee drop 10 seeds instead of 1 --- src/units/items.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/units/items.cpp b/src/units/items.cpp index b263c4c1..eb5c9c50 100644 --- a/src/units/items.cpp +++ b/src/units/items.cpp @@ -1803,6 +1803,9 @@ StuffObject* addDevice(int x,int y,int z,int device_type,int param1,int param2,V }; if(p){ + if(device_type == UVS_ITEM_TYPE::CRUSTEST_CANNON_AMMO){ + param2 = 5; // Override ammo count + } p->ActIntBuffer.data0 = param1; p->ActIntBuffer.data1 = param2; @@ -2049,7 +2052,7 @@ void SkyFarmerObject::Init(void) Status = SOBJ_DISCONNECT; }; -const int MAX_DROP_SEED = 1; +const int MAX_DROP_SEED = 10; const int MAX_DROP_POINT = MAX_DROP_SEED*10; void SkyFarmerObject::CreateSkyFarmer(int x_pos,int y_pos,int x_speed,int y_speed,int corn_type,int corn,int time) From 47c9ee329b06dd5ee8aee5b0c8763dd817cbc003 Mon Sep 17 00:00:00 2001 From: nick206265 Date: Sat, 27 Dec 2025 14:50:18 +0300 Subject: [PATCH 4/4] crater parameters (terrain deformation) && TapeSize actual usage && ffmpeg find libs - use suffix --- cmake/FindFFMPEG.cmake | 12 ++++++++++++ src/units/mechos.cpp | 8 ++++++-- src/units/moveland.cpp | 2 +- src/units/moveland.h | 2 +- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cmake/FindFFMPEG.cmake b/cmake/FindFFMPEG.cmake index 98c04e26..59c693ed 100644 --- a/cmake/FindFFMPEG.cmake +++ b/cmake/FindFFMPEG.cmake @@ -83,6 +83,8 @@ FIND_LIBRARY(AVUTIL_LIBRARY /local/bin /mingw/bin /bin + PATH_SUFFIXES + libavutil ) FIND_LIBRARY(AVCODEC_LIBRARY @@ -101,6 +103,8 @@ FIND_LIBRARY(AVCODEC_LIBRARY /local/bin /mingw/bin /bin + PATH_SUFFIXES + libavcodec ) FIND_LIBRARY(AVFORMAT_LIBRARY @@ -120,6 +124,8 @@ FIND_LIBRARY(AVFORMAT_LIBRARY /mingw/bin /mingw/lib /bin + PATH_SUFFIXES + libavformat ) get_filename_component(FFMPEG_PARENT_DIR ${AVCODEC_INCLUDE_DIR} DIRECTORY) @@ -130,6 +136,9 @@ SET(FFMPEG_INCLUDE_DIRS ${AVFORMAT_INCLUDE_DIR} ${FFMPEG_PARENT_DIR} ) +MESSAGE(STATUS "Found FFMPEG_INCLUDE_DIRS") +MESSAGE(STATUS "FFMPEG_INCLUDE_DIRS: ${FFMPEG_INCLUDE_DIRS}") + SET(FFMPEG_LIBRARIES) @@ -138,6 +147,7 @@ IF(AVUTIL_LIBRARY) ${FFMPEG_LIBRARIES} ${AVUTIL_LIBRARY} ) + MESSAGE(STATUS "Found AVUTIL_LIBRARY") ENDIF(AVUTIL_LIBRARY) IF(AVCODEC_LIBRARY) @@ -145,6 +155,7 @@ IF(AVCODEC_LIBRARY) ${FFMPEG_LIBRARIES} ${AVCODEC_LIBRARY} ) + MESSAGE(STATUS "Found AVCODEC_LIBRARY") ENDIF(AVCODEC_LIBRARY) IF(AVFORMAT_LIBRARY) @@ -152,6 +163,7 @@ IF(AVFORMAT_LIBRARY) ${FFMPEG_LIBRARIES} ${AVFORMAT_LIBRARY} ) + MESSAGE(STATUS "Found AVFORMAT_LIBRARY") ENDIF(AVFORMAT_LIBRARY) IF(FFMPEG_INCLUDE_DIRS AND FFMPEG_LIBRARIES) diff --git a/src/units/mechos.cpp b/src/units/mechos.cpp index a2a3d08c..dbec0eb1 100644 --- a/src/units/mechos.cpp +++ b/src/units/mechos.cpp @@ -10689,8 +10689,12 @@ void GunSlot::Quant(void) g->CreateBullet(this,pData); }; }else{ - g = JumpD.CreateBall(); - g->CreateBullet(this,pData); + for(i = 0;i < pData->TapeSize;i++){ + g = JumpD.CreateBall(); + g->CreateBullet(this,pData); + }; + //g = JumpD.CreateBall(); + //g->CreateBullet(this,pData); }; break; case GUN_WAIT: diff --git a/src/units/moveland.cpp b/src/units/moveland.cpp index 8c70d40c..78791a11 100644 --- a/src/units/moveland.cpp +++ b/src/units/moveland.cpp @@ -397,7 +397,7 @@ void LocalMapProcess::Quant(void) DestroySmooth(p->R_curr.x,p->R_curr.y,35,20,0,-63,83,4,4); break; case MAP_POINT_CRATER10: - DestroySmooth(p->R_curr.x,p->R_curr.y,35,20,0,-512,83,4,2); + DestroySmooth(p->R_curr.x,p->R_curr.y,35,20,0,-512,83,4,4); break; case MAP_POINT_CRATER11: // for(i = 0;i < TERRAIN_MAX;i++) SmoothTerrainMask[i] = 1; diff --git a/src/units/moveland.h b/src/units/moveland.h index 4d4ca709..7222e269 100644 --- a/src/units/moveland.h +++ b/src/units/moveland.h @@ -30,7 +30,7 @@ const int MAP_POINT_DUST09 = 8;*/ const int MAP_DUST_PROCESS = 0; const int MAP_SMOKE_PROCESS = 1; -const int MAX_DESTROY_RADIUS = 64; +const int MAX_DESTROY_RADIUS = 640; const int MAP_LAVA_SPOT = 0; const int MAP_LIGHT_POINT = 1;