[HELP][WIP][WB]Improve the siege.

Users who are viewing this thread

leandrojas_

Squire
Hello!
First of all I wish to apologize to you for my poor English.

Well, I come to ask for help. Because in my limited knowledge about the module system I do not find the solution.

I want to change the system of the siege of the game.
I hate to just fight in the walls and only with that having conquered the city.
So it is my desire to do more complicated and prolonged sieges of cities.

Because my English is not very good I will try to explain with pictures and so I avoid the tortuous task of writing.


This is my idea:

Separating the city into two parts (or more) and according to the number of parts (I call them "zone") the garrison of the city is divided.

Example:
muestra1n.jpg

Red: The normal scene, by default in the Native.
Blue. The new zone. With a new scene in which they fought in the streets of the city or in another section of the walls.

It's like this:
Green is the enemy. (or the attacker)
Green shows the progress and conquest during the siege.

muestra2h.jpg

muestra3a.jpg

muestra4n.jpg

muestra5.jpg

Sorry if I can not explain better. I think with the images is sufficient. But if you do not understand what I want. Please tell me.
Because I do not do well in the English language, surely I forget to mention something.

At the moment I would like to use scenes that I have created and to access and modify them. It is necessary, I believe, create a menu in module_game_menus.py

Like this:
In module_game_menus.py
Code:
      ("castle_cheat_town_walls",
      [
        (eq, "$cheat_mode", 1),
        (party_slot_eq,"$current_town",slot_party_type, spt_town),
      ], 
      "{!}CHEAT! Town Walls.",
      [
        (party_get_slot, ":scene", "$current_town", slot_town_walls),
        (set_jump_mission,"mt_ai_training"),
        (jump_to_scene,":scene"),
        (change_screen_mission),
      ]),


For that you need to add this in:
module_scenes.py
Code:
##############
  ("town_1_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001300010c800054d5c00004af000005d3f00002ca0",
    [],[],"outer_terrain_plain"),
  ("town_2_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001300010c800054d5c00004af000005d3f00002ca0",
    [],[],"outer_terrain_plain"),
  ("town_3_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000000300214100003ecfb00002b930000051900002c29",
    [],[],"outer_terrain_plain"),
  ("town_4_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001300010c800054d5c00004af000005d3f00002ca0",
    [],[],"outer_terrain_plain"),
  ("town_5_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000030024e108003fd0100007bd300006c31000061aa",
    [],[],"outer_terrain_plain"),
  ("town_6_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002300015e300063d8800002757000055df00001b08",
    [],[],"sea_outer_terrain_1"),
  ("town_7_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000013002491600055157000000d20000152a0000611a",
    [],[],"outer_terrain_plain"),
  ("town_8_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000013002491600055157000000d20000152a0000611a",
    [],[],"outer_terrain_plain"),
  ("town_9_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000140015033000651900000159f0000619800006af6",
    [],[],"outer_terrain_snow"),
  ("town_10_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200011af00065192000067110000688300003435",
    [],[],"outer_terrain_steppe"),
  ("town_11_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000140015033000651900000159f0000619800006af6",
    [],[],"outer_terrain_snow"),
  ("town_12_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000001300010c800054d5c00004af000005d3f00002ca0",
    [],[],"outer_terrain_plain"),
  ("town_13_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000130028e320005e17b00004a14000006d70000019d",
    [],[],"outer_terrain_plain"),
  ("town_14_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200011af00065192000067110000688300003435",
    [],[],"outer_terrain_steppe"),
  ("town_15_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000030024e108003fd0100007bd300006c31000061aa",
    [],[],"outer_terrain_plain"),
  ("town_16_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000013001c98d0005b56d000072a70000240a00001e09",
    [],[],"outer_terrain_steppe"),
  ("town_17_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200011af00065192000067110000688300003435",
    [],[],"outer_terrain_steppe"),
  ("town_18_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200011af00065192000067110000688300003435",
    [],[],"outer_terrain_steppe"),
  ("town_19_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200011af00065192000067110000688300003435",
    [],[],"outer_terrain_desert"),
  ("town_20_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000a0650001e9a00a505418000581f000028c800000143",
    [],[],"outer_terrain_desert"),
  ("town_21_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000150051a800004190400003f8c0000352b000014d8",
    [],[],"outer_terrain_desert"),
  ("town_22_walls_1_a",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000025a00723200046d1b00003e020000147600004387",
    [],[],"outer_terrain_desert"),
##############

After that:
Code:
  ("town_22_walls",sf_generate,"none", "none", (0,0),(100,100),-100,"0x000000025a00723200046d1b00003e020000147600004387",
    [],[],"outer_terrain_desert"),


And before that:
Code:
  ("town_1_alley",sf_generate,"none", "none", (0,0),(100,100),-100,"0x300bc5430001e0780000448a0000049f00007932",
    [],[],"outer_terrain_plain"),
This one in:
module_constants.py
Code:
###
slot_zona_1_a = 251
###

This other in:
module_scripts.py
(Only what is between "#")
Code:
	# Towns (loop)
      (try_for_range, ":town_no", towns_begin, towns_end),
        (store_sub, ":offset", ":town_no", towns_begin),
        (party_set_slot,":town_no", slot_party_type, spt_town),
        #(store_add, ":cur_object_no", "trp_town_1_seneschal", ":offset"),
        #(party_set_slot,":town_no", slot_town_seneschal, ":cur_object_no"),
        (store_add, ":cur_object_no", "scn_town_1_center", ":offset"),
        (party_set_slot,":town_no", slot_town_center, ":cur_object_no"),
        (store_add, ":cur_object_no", "scn_town_1_castle", ":offset"),
        (party_set_slot,":town_no", slot_town_castle, ":cur_object_no"),
        (store_add, ":cur_object_no", "scn_town_1_prison", ":offset"),
        (party_set_slot,":town_no", slot_town_prison, ":cur_object_no"),
        (store_add, ":cur_object_no", "scn_town_1_walls", ":offset"),
        (party_set_slot,":town_no", slot_town_walls, ":cur_object_no"),
##############
        (store_add, ":cur_object_no", "scn_town_1_walls_1_a", ":offset"),
        (party_set_slot,":town_no", slot_zona_1_a, ":cur_object_no"),
##############

        (store_add, ":cur_object_no", "scn_town_1_tavern", ":offset"),
        (party_set_slot,":town_no", slot_town_tavern, ":cur_object_no"),


And then this other in game_menus.py
Code:
      ("zona_1_a",
      [
        (eq, "$cheat_mode", 1),
        (party_slot_eq,"$current_town",slot_party_type, spt_town),
      ], 
      "ZONA 1A.",
      [
        (party_get_slot, ":scene", "$current_town", slot_zona_1_a),
        (set_jump_mission,"mt_ai_training"),
        (jump_to_scene,":scene"),
        (change_screen_mission),
      ]),

Then I should also add:

Inside: "....\mod\SceneObj\"
scn_town_1_walls_1_a.sco
scn_town_2_walls_1_a.sco
scn_town_3_walls_1_a.sco
scn_town_4....etc....


Ok ...
I think this should work.
But is that correct?

What else is needed for the scenes work correctly?
Keeping in mind that I want it to work the same way as the menu:

Code:
      ("castle_cheat_town_walls",
      [
        (eq, "$cheat_mode", 1),
        (party_slot_eq,"$current_town",slot_party_type, spt_town),
      ], 
      "{!}CHEAT! Town Walls.",
      [
        (party_get_slot, ":scene", "$current_town", slot_town_walls),
        (set_jump_mission,"mt_ai_training"),
        (jump_to_scene,":scene"),
        (change_screen_mission),
      ]),


Please help in this. In order to make it functional.

Also if you can explain how to do to divide the garrison of troops between the different scenes also appreciate it. Although I think this is something a little more complicated than simply run a menu.

Greetings!



Again I apologize for my poor English and could not elaborate more.

P/D: Paint rules!
 
Mm, maybe if you create a variable in mission template for castle assaults (ladder and belfry) that active second menu when player do something in "native" part.

By example:

-Normal assault menu. Player choose play it.
-Load normal scene, and when player get walls, you assign a variable 'walls_ok'.
-When that part of the battle finish, if walls_ok is active, new menu should be open with new phase for assault (streets) - (where you can load your new scene and new mission template).
-If walls_ok no active, then it load native menu for other assault. Or if enemy havent more troops finish assault.

This can take long to do, but it shouldnt be too difficult...
 
Idibil said:
Mm, maybe if you create a variable in mission template for castle assaults (ladder and belfry) that active second menu when player do something in "native" part.

By example:

-Normal assault menu. Player choose play it.
-Load normal scene, and when player get walls, you assign a variable 'walls_ok'.
-When that part of the battle finish, if walls_ok is active, new menu should be open with new phase for assault (streets) - (where you can load your new scene and new mission template).
-If walls_ok no active, then it load native menu for other assault. Or if enemy havent more troops finish assault.

This can take long to do, but it shouldnt be too difficult...


Yes.
This takes a lot of work.
But for now I want to do is to access the scenes to make them.
And when I already have completed some scenes, just beginning to work that part to run them in battle.

But for now I would like help to access them.

^-^U
 
Spanish:
Para acceder necesitas que se active el menu a través de la variable en cuanto acaba el primer asalto, entonces, en ese menu, carga el mision templates y la nueva escena.

English:
For Access you need that it active menu with variable, and then, with that menu, load mission template y new scene.
 
Idibil said:
Spanish:
Para acceder necesitas que se active el menu a través de la variable en cuanto acaba el primer asalto, entonces, en ese menu, carga el mision templates y la nueva escena.

English:
For Access you need that it active menu with variable, and then, with that menu, load mission template y new scene.

Spanish:
Si entiendo esa parte.
Pero antes me podrias decir si esta correcto mi menu? seria funcional?
Para poder despues usar la constante "slot_zona_1_a" de la misma forma que se usa "slot_town_wall".
Creo que si puedo hacer uso de esa constante podre facilitarme mucho el trabajo ^^U

English:
Yes, I understand that.
But before you tell me if it is correct the menu? It is functional?
I want to use the constant "slot_zona_1_a" in the same form used "slot_town_wall". I think if I can use this constant can make the job much easier.
 
Spanish:

Lo que pasa es que con el slot vas a tener que estar más pendiente para que no se quede así, y te cargen todos los asedios en esa ciudad en ese estadio. Pero vamos, la idea es la misma, lo que pasa es que asignas un slot a esa asentamiento.

Bajo mi punto de vista te facilita mucho más la variable, porque sirve para ese asedio, luego la capas y no se activa hasta el próximo. Pero lo que te sea más cómodo.

Respecto al codigo del menu que usas de base, podría servir perfectamente, y cómo va a ser una batalla en las calles, no hace falta que te compliques mucho más, ya que en cierta manera la batalla se convierte en un lead_charge. Es en el mission templates donde tendrás que fijarte más, para que cuando acabe la batalla te salte el menu de conquista si ganas.

No sé si me estoy explicando correctamente, ando fatal de tiempo últimamente.


English:

Slot is usable too, but you should look that all is right when you use/cancelled it in a settlement.
Variable is more easy to use because you add/delete for each siege.

Menu code base you wish use is right, you should add too, because it is similar to normal battle, lead_charge. Mission Template is more important here, because it is where you choose that next menu run.

 
Lumos said:
I'm deving something like this for TBS. It's still pretty much concept only, but if am successful, I'll give you my codes.

Thank you. ^-^
I would like to see your work.
Meanwhile I'll work on my scenes.
 
leandrojas_ said:
Separating the city into two parts (or more) and according to the number of parts (I call them "zone") the garrison of the city is divided.
In Rus under M&B some cities/castles has 3-5 zones (are not separated 'cause zones don't cover a scene in whole, more over zones usually intersect with each other).
Each zone is given by a quadrangle. 
Quadrangles are defined by 4 entry points.
When enough number of attackers (IIRC 1/3 from starting amount) riches next zone,  a spawn location for attackers is moved forward to the citadel, a the same time for defenders a spawn location is moved backward to the citadel.
Well, if all attackers are vanished from last zone they conquered, spawn locations are moved away from the citadel. 
When the final (citadel) zone is conquered, battle moves inside the citadel for the last stage like in native.
But in the contract to native, the number of reinforcements is not limited, and no matter how many defenders are slain  before the final zone is captured. So player can get bloodshed or almost bloodless fight or anything in-between depend on how efficient zones are captured.

There are also some small touches like bottle necks between zones, which bots protects, and nests for archers near bottle neck for defenders, where bots are scripted to climb up. Assaulting bots also are trying to capture zones instead killing everyone. And of courser the path from attacker's starting point to the citadel goes through all main sights of interest of the city.

This required the accurate scripting and a lot of work with scenes, but this is not a concept :smile:
 
Back
Top Bottom