use of org.terasology.anatomy.event.AnatomyPartImpactedEvent in project Anatomy by Terasology.
the class AnatomySystem method dmgAnatomyPart.
@Command(shortDescription = "Damage Anatomy part for amount")
public void dmgAnatomyPart(@CommandParam("name") String partName, @CommandParam("amount") int amount) {
for (EntityRef clientEntity : entityManager.getEntitiesWith(AnatomyComponent.class)) {
AnatomyComponent anatomyComponent = clientEntity.getComponent(AnatomyComponent.class);
AnatomyPartTag partTag = anatomyComponent.parts.get(partName);
if (partTag != null) {
clientEntity.send(new AnatomyPartImpactedEvent(amount, partTag));
}
}
}
use of org.terasology.anatomy.event.AnatomyPartImpactedEvent in project Anatomy by Terasology.
the class AnatomySystem method dmgAnatomyPart.
/**
* Console command - Damages a particular anatomy part for a given amount.
*/
@Command(shortDescription = "Damage Anatomy part for amount")
public String dmgAnatomyPart(@Sender EntityRef entityRef, @CommandParam("name") String partName, @CommandParam("amount") int amount) {
EntityRef clientEntity = entityRef.getComponent(ClientComponent.class).character;
AnatomyComponent anatomyComponent = clientEntity.getComponent(AnatomyComponent.class);
AnatomyPartTag partTag = anatomyComponent.parts.get(partName);
if (partTag != null) {
clientEntity.send(new AnatomyPartImpactedEvent(amount, partTag));
return "Inflicted " + amount + " damage to " + getAnatomyNameFromID(partTag.id, anatomyComponent);
} else {
return "No such part found.";
}
}
use of org.terasology.anatomy.event.AnatomyPartImpactedEvent in project Anatomy by Terasology.
the class AnatomySystem method dmgAnatomyPartAll.
@Command(shortDescription = "Damage ALL Anatomy parts for amount")
public void dmgAnatomyPartAll(@CommandParam("amount") int amount) {
for (EntityRef clientEntity : entityManager.getEntitiesWith(AnatomyComponent.class)) {
AnatomyComponent anatomyComponent = clientEntity.getComponent(AnatomyComponent.class);
List<String> keys = new ArrayList<>(anatomyComponent.parts.keySet());
for (String key : keys) {
AnatomyPartTag partTag = anatomyComponent.parts.get(key);
clientEntity.send(new AnatomyPartImpactedEvent(amount, partTag));
}
}
}
use of org.terasology.anatomy.event.AnatomyPartImpactedEvent in project Anatomy by Terasology.
the class AnatomySystem method dmgAnatomyPartAll.
/**
* Console command - Damages all anatomy parts for a given amount.
*/
@Command(shortDescription = "Damage ALL Anatomy parts for amount")
public String dmgAnatomyPartAll(@Sender EntityRef entityRef, @CommandParam("amount") int amount) {
EntityRef clientEntity = entityRef.getComponent(ClientComponent.class).character;
AnatomyComponent anatomyComponent = clientEntity.getComponent(AnatomyComponent.class);
List<String> keys = new ArrayList<>(anatomyComponent.parts.keySet());
String result = "";
for (String key : keys) {
result += "Inflicted " + amount + " damage to " + getAnatomyNameFromID(key, anatomyComponent) + "\n";
AnatomyPartTag partTag = anatomyComponent.parts.get(key);
clientEntity.send(new AnatomyPartImpactedEvent(amount, partTag));
}
return result;
}
use of org.terasology.anatomy.event.AnatomyPartImpactedEvent in project Anatomy by Terasology.
the class AnatomySystem method onDamage.
/**
* Receives an {@link OnDamagedEvent} and allocates the damage to an anatomy part.
*/
@ReceiveEvent
public void onDamage(OnDamagedEvent event, EntityRef entity, AnatomyComponent comp) {
if (comp != null) {
List<String> keys = new ArrayList<>(comp.parts.keySet());
// Randomly assign damage to a part, until positional damage is introduced.
AnatomyPartTag partTag = comp.parts.get(keys.get(random.nextInt(0, keys.size() - 1)));
entity.send(new AnatomyPartImpactedEvent(event.getDamageAmount(), partTag, event.getType(), event.getInstigator()));
}
}
Aggregations