Update Factions authored by Lxlp's avatar Lxlp
...@@ -34,24 +34,24 @@ AI Goals, Targets, and Factions ...@@ -34,24 +34,24 @@ AI Goals, Targets, and Factions
use test environments!** use test environments!**
<!-- --> <!-- -->
```yaml
DecayingSkeleton: DecayingSkeleton:
Mobtype: skeleton Type: skeleton
Display: '&aa decaying skeleton' Display: '&aa decaying skeleton'
Health: 15 Health: 15
Damage: 1 Damage: 1
Faction: Undead Faction: Undead
AIGoalSelectors: AIGoalSelectors:
- clear - clear
- arrowattack - arrowattack
AITargetSelectors: AITargetSelectors:
- clear - clear
- players - players
Options: Options:
FollowRange: 10 FollowRange: 10
MovementSpeed: 0.2 MovementSpeed: 0.2
PreventOtherDrops: true PreventOtherDrops: true
```
- This example shows how the Skeleton AI generally works for - This example shows how the Skeleton AI generally works for
attacking. (minus all the fluff, such as randomly walking around). attacking. (minus all the fluff, such as randomly walking around).
...@@ -62,25 +62,27 @@ AI Goals, Targets, and Factions ...@@ -62,25 +62,27 @@ AI Goals, Targets, and Factions
* As you see **clear** is always first, which in this case wipes the mobs AI so you have a clean slate to work with. This is important otherwise your AI may not function the way you would expect. * As you see **clear** is always first, which in this case wipes the mobs AI so you have a clean slate to work with. This is important otherwise your AI may not function the way you would expect.
* Now lets say we want the skeleton to attack other mobs instead and we want him to use a melee attack instead of a ranged attack. See below for how we accomplish this. * Now lets say we want the skeleton to attack other mobs instead and we want him to use a melee attack instead of a ranged attack. See below for how we accomplish this.
DecayingSkeleton: ```yaml
Mobtype: skeleton DecayingSkeleton:
Display: '&aa decaying skeleton' Type: skeleton
Health: 15 Display: '&aa decaying skeleton'
Damage: 1 Health: 15
Faction: Undead Damage: 1
AIGoalSelectors: Faction: Undead
- clear AIGoalSelectors:
- meleeattack - clear
AITargetSelectors: - meleeattack
- clear AITargetSelectors:
- hurtbytarget - clear
- otherfactionmonsters - hurtbytarget
Equipment: - otherfactionmonsters
- COS_WoodSword:0 Equipment:
Options: - COS_WoodSword HAND
FollowRange: 10 Options:
MovementSpeed: 0.2 FollowRange: 10
PreventOtherDrops: true MovementSpeed: 0.2
PreventOtherDrops: true
```
- The skeleton AI now is programmed to attack other mobs, and any mobs - The skeleton AI now is programmed to attack other mobs, and any mobs
that attack it first. In addition, it will use the melee attack that attack it first. In addition, it will use the melee attack
...@@ -115,22 +117,24 @@ Example 1: Guards attack nearby monsters ...@@ -115,22 +117,24 @@ Example 1: Guards attack nearby monsters
<!-- --> <!-- -->
SummonedGuard1: ```yaml
Mobtype: skeleton SummonedGuard1:
Display: '&Ea town guard' Type: skeleton
Health: 500 Display: '&Ea town guard'
Damage: 5 Health: 500
Equipment: Damage: 5
- COS_StoneSword:0 Equipment:
Options: - COS_StoneSword HAND
Disguise: villager Options:
Despawn: true Despawn: true
FollowRange: 5 FollowRange: 5
AlwaysShowName: false AlwaysShowName: false
MovementSpeed: 0.35 MovementSpeed: 0.35
PreventOtherDrops: true PreventOtherDrops: true
KnockbackResistance: 1 KnockbackResistance: 1
PreventMobKillDrops: true PreventMobKillDrops: true
Disguise: villager
```
- So if we tie this mob to a mob spawner at our gates, he's going to - So if we tie this mob to a mob spawner at our gates, he's going to
go attack all of our players in the town so we need to make some go attack all of our players in the town so we need to make some
...@@ -138,31 +142,33 @@ Example 1: Guards attack nearby monsters ...@@ -138,31 +142,33 @@ Example 1: Guards attack nearby monsters
<!-- --> <!-- -->
SummonedGuard1: ```yaml
Mobtype: skeleton SummonedGuard1:
Display: '&Ea town guard' Type: skeleton
Health: 500 Display: '&Ea town guard'
Damage: 5 Health: 500
Equipment: Damage: 5
- COS_StoneSword:0 Equipment:
Faction: Guard - COS_StoneSword HAND
AIGoalSelectors: Faction: Guard
- clear AIGoalSelectors:
- opendoors - clear
- meleeattack - opendoors
AITargetSelectors: - meleeattack
- clear AITargetSelectors:
- hurtbytarget - clear
- otherfactionmonsters - hurtbytarget
Options: - otherfactionmonsters
Disguise: villager Options:
Despawn: true Despawn: true
FollowRange: 5 FollowRange: 5
AlwaysShowName: false AlwaysShowName: false
MovementSpeed: 0.35 MovementSpeed: 0.35
PreventOtherDrops: true PreventOtherDrops: true
KnockbackResistance: 1 KnockbackResistance: 1
PreventMobKillDrops: true PreventMobKillDrops: true
Disguise: Villager
```
- Now the mob will target other factions containing monsters besides - Now the mob will target other factions containing monsters besides
his own and will target anyone that hurts him (this will keep some his own and will target anyone that hurts him (this will keep some
...@@ -176,28 +182,30 @@ Example 1: Guards attack nearby monsters ...@@ -176,28 +182,30 @@ Example 1: Guards attack nearby monsters
<!-- --> <!-- -->
DecayingSkeleton: ```yaml
Mobtype: skeleton DecayingSkeleton:
Display: '&aa decaying skeleton' Type: skeleton
Health: 15 Display: '&aa decaying skeleton'
Damage: 1 Health: 15
Faction: Undead Damage: 1
AIGoalSelectors: Faction: Undead
- clear AIGoalSelectors:
- meleeattack - clear
AITargetSelectors: - meleeattack
- clear AITargetSelectors:
- hurtbytarget - clear
- players - hurtbytarget
Equipment: - players
- COS_RawHead:4 Equipment:
- COS_WoodSword:0 - COS_RawHead HEAD
Options: - COS_WoodSword HAND
Despawn: true Options:
FollowRange: 10 Despawn: true
AlwaysShowName: false FollowRange: 10
MovementSpeed: 0.2 AlwaysShowName: false
PreventOtherDrops: true MovementSpeed: 0.2
PreventOtherDrops: true
```
- Our decaying skeleton is now in the Undead faction (different then - Our decaying skeleton is now in the Undead faction (different then
the Guard faction) and so he will be attacked by the guard. Also, by the Guard faction) and so he will be attacked by the guard. Also, by
...@@ -236,70 +244,72 @@ Example 2: Orcs and Goblins attack each other ...@@ -236,70 +244,72 @@ Example 2: Orcs and Goblins attack each other
<!-- --> <!-- -->
OrcCenturion: ```yaml
Mobtype: villagezombie OrcCenturion:
Display: '&aan orc centurion' Type: villagezombie
Health: 50 Display: '&aan orc centurion'
Damage: 4 Health: 50
Faction: Orcs Damage: 4
AIGoalSelectors: Faction: Orcs
- clear AIGoalSelectors:
- opendoors - clear
- meleeattack - opendoors
AITargetSelectors: - meleeattack
- clear AITargetSelectors:
- hurtbytarget - clear
- specificfactionmonsters Goblin - hurtbytarget
- players - specificfactionmonsters Goblin
Equipment: - players
- C_DeathfistSkullcap:4 Equipment:
- C_DeathfistTunic:3 - C_DeathfistSkullcap HEAD
- C_DeathfistLeggings:2 - C_DeathfistTunic CHEST
- C_DeathfistBoots:1 - C_DeathfistLeggings LEGS
- COS_WoodSword:0 - C_DeathfistBoots FEET
Options: - COS_WoodSword HAND
Despawn: true Options:
FollowRange: 10 Despawn: true
AlwaysShowName: false FollowRange: 10
MovementSpeed: 0.25 AlwaysShowName: false
PreventOtherDrops: true MovementSpeed: 0.25
PreventItemPickup: true PreventOtherDrops: true
KnockbackResistance: 0.25 PreventItemPickup: true
PreventMobKillDrops: true KnockbackResistance: 0.25
PreventMobKillDrops: true
GoblinBattlemaster: ```
Mobtype: zombie ```yaml
Display: '&aa goblin battlemaster' GoblinBattlemaster:
Health: 80 Type: zombie
Damage: 4 Display: '&aa goblin battlemaster'
Faction: Goblin Health: 80
AIGoalSelectors: Damage: 4
- clear Faction: Goblin
- opendoors AIGoalSelectors:
- meleeattack - clear
AITargetSelectors: - opendoors
- clear - meleeattack
- hurtbytarget AITargetSelectors:
- specificfactionmonsters Orcs - clear
- players - hurtbytarget
Equipment: - specificfactionmonsters Orcs
- COS_BronzeHead:4 - players
- COS_BronzeChest:3 Equipment:
- COS_BronzeLegs:2 - COS_BronzeHead HEAD
- COS_BronzeFeet:1 - COS_BronzeChest CHEST
- COS_WoodAxe:0 - COS_BronzeLegs LEGS
Skills: - COS_BronzeFeet FEET
- skill BashI ~onAttack >0 0.25 - COS_WoodAxe HAND
Options: Skills:
Despawn: true - skill{s=BashI} ~onAttack >0 0.25
FollowRange: 10 Options:
AlwaysShowName: false Despawn: true
MovementSpeed: 0.25 FollowRange: 10
PreventOtherDrops: true AlwaysShowName: false
PreventItemPickup: true MovementSpeed: 0.25
KnockbackResistance: 0.4 PreventOtherDrops: true
PreventMobKillDrops: true PreventItemPickup: true
KnockbackResistance: 0.4
PreventMobKillDrops: true
```
- So there are a few things we've configured here of note. - So there are a few things we've configured here of note.
<!-- --> <!-- -->
... ...
......