forked from github/server
Bug 2630: Drachen
1. Jungdrachen sind Drachen (RCF_DRAGON) 2. Ein Monster das nicht kämpfen kann, braucht nicht zu plündern. 3. make code more readable. 4. Wer schon bewacht, braucht keinen BEWACHE Befehl.
This commit is contained in:
parent
ea15af879e
commit
2e054f27cc
|
@ -721,7 +721,7 @@
|
|||
<attack type="4" damage="3d30"/>
|
||||
<attack type="6" spell="icy_dragonbreath" level="6" />
|
||||
</race>
|
||||
<race name="youngdragon" magres="50" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="300" ac="4" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes">
|
||||
<race name="youngdragon" magres="50" maxaura="1.000000" regaura="1.000000" weight="20000" capacity="10000" speed="1.000000" hp="300" ac="4" damage="2d15" unarmedattack="0" unarmeddefense="0" attackmodifier="4" defensemodifier="4" fly="yes" walk="yes" teach="no" getitem="yes" resistbash="yes" unarmedguard="yes" dragon="yes">
|
||||
<ai splitsize="6" killpeasants="yes" learn="yes" scarepeasants="yes"/>
|
||||
<skill name="magic" modifier="4"/>
|
||||
<skill name="tactics" modifier="4"/>
|
||||
|
|
|
@ -130,8 +130,9 @@ function process(rules, orders)
|
|||
end
|
||||
|
||||
turn_begin()
|
||||
|
||||
-- run the turn:
|
||||
-- create orders for monsters:
|
||||
plan_monsters()
|
||||
-- read orders for players:
|
||||
if eressea.read_orders(orders) ~= 0 then
|
||||
print("could not read " .. orders)
|
||||
return -1
|
||||
|
@ -140,8 +141,9 @@ function process(rules, orders)
|
|||
if nmr_check(config.maxnmrs or 80)~=0 then
|
||||
return -1
|
||||
end
|
||||
plan_monsters()
|
||||
callbacks(rules, 'init')
|
||||
|
||||
-- run the turn:
|
||||
turn_process()
|
||||
callbacks(rules, 'update')
|
||||
turn_end() -- ageing, etc.
|
||||
|
|
|
@ -214,10 +214,10 @@ int monster_attacks(unit * monster, bool rich_only)
|
|||
return result;
|
||||
}
|
||||
|
||||
static order *get_money_for_dragon(region * r, unit * udragon, int wanted)
|
||||
static order *get_money_for_dragon(region * r, unit * u, int wanted)
|
||||
{
|
||||
int money;
|
||||
bool attacks = attack_chance > 0.0;
|
||||
bool attacks = (attack_chance > 0.0) && armedmen(u);
|
||||
|
||||
/* falls genug geld in der region ist, treiben wir steuern ein. */
|
||||
if (rmoney(r) >= wanted) {
|
||||
|
@ -231,8 +231,8 @@ static order *get_money_for_dragon(region * r, unit * udragon, int wanted)
|
|||
/* falls der drache launisch ist, oder das regionssilber knapp, greift er alle an
|
||||
* und holt sich Silber von Einheiten, vorausgesetzt er bewacht bereits */
|
||||
money = 0;
|
||||
if (attacks && is_guard(udragon)) {
|
||||
int m = monster_attacks(udragon, true);
|
||||
if (attacks && is_guard(u)) {
|
||||
int m = monster_attacks(u, true);
|
||||
if (m > 0) money += m;
|
||||
}
|
||||
|
||||
|
@ -623,11 +623,11 @@ static order *plan_dragon(unit * u)
|
|||
rc_wyrm = get_race(RC_WYRM);
|
||||
}
|
||||
|
||||
if (ta == NULL) {
|
||||
move |= (rpeasants(r) == 0); /* when no peasants, move */
|
||||
move |= (rmoney(r) == 0); /* when no money, move */
|
||||
if (!move && ta == NULL) {
|
||||
move = (rpeasants(r) == 0); /* when no peasants, move */
|
||||
move = move || (rmoney(r) == 0); /* when no money, move */
|
||||
}
|
||||
move |= chance(0.04); /* 4% chance to change your mind */
|
||||
move = move || chance(0.04); /* 4% chance to change your mind */
|
||||
|
||||
if (rc == rc_wyrm && !move) {
|
||||
unit *u2;
|
||||
|
@ -739,6 +739,7 @@ void plan_monsters(faction * f)
|
|||
attrib *ta;
|
||||
order *long_order = NULL;
|
||||
bool can_move = true;
|
||||
bool guarding;
|
||||
|
||||
/* Ab hier nur noch Befehle fuer NPC-Einheiten. */
|
||||
if (u->faction != f || u->number <= 0) {
|
||||
|
@ -763,8 +764,9 @@ void plan_monsters(faction * f)
|
|||
/* Befehle muessen jede Runde neu gegeben werden: */
|
||||
free_orders(&u->orders);
|
||||
|
||||
/* All monsters guard the region: */
|
||||
if (u->status < ST_FLEE && !monster_is_waiting(u) && r->land) {
|
||||
guarding = is_guard(u);
|
||||
/* All monsters want to guard the region: */
|
||||
if (!guarding && u->status < ST_FLEE && !monster_is_waiting(u) && r->land) {
|
||||
unit_addorder(u, create_order(K_GUARD, u->faction->locale, NULL));
|
||||
}
|
||||
|
||||
|
@ -790,7 +792,7 @@ void plan_monsters(faction * f)
|
|||
else
|
||||
a_remove(&u->attribs, ta);
|
||||
}
|
||||
else if (!r->land || is_guard(u)) {
|
||||
else if (!r->land || guarding) {
|
||||
if (chance(attack_chance)) {
|
||||
int m = monster_attacks(u, false);
|
||||
if (m >= 0) {
|
||||
|
|
Loading…
Reference in New Issue