Creación de nuevos Logros

Necesitaremos tener a mano los siguientes archivos, que encontraréis en la carpeta gamedata:

Como es lógico, necesitarás descomprimir el juego para encontrar estos archivos. Aclaración by Dade: el archivo configs/gameplay/info_zaton.xml se utiliza para mostrar de dónde se sacan los nombres de las variables.

Ahora abre el archivo configs/misc/achievements.ltx y añade lo siguiente al final del mismo:

[sucker] ; Referencia del Logro
icor = ui_inGame2_lopuh ; Icono del Logro
hint = st_sp_achievement_22_hint ; Descripción mostrada en la PDA
name = st_sp_achievement_22_name ; Nombre
desc = st_sp_achievement_22_descr ; Descripción
functor = xr_statistic.sucker_functor ; Función que vamos a utilizar

Ahora abre configs/text/XXX/st_achievement.xml y añade al final:

<string id="st_sp_achievement_22_hint">
        <text>No caigas en la trampa.</text>
    </string>
    <string id="st_sp_achievement_22_descr">
        <text>Has dejado el artefacto al stalker estafador.</text>
    </string>
    <string id="st_sp_achievement_22_name">
        <text>Bardana</text>
    </string>

Seguidamente accede a scripts/xr_statistic.script y añade esto al final:

function sucker_functor() ; Nombre de la función, el mismo que pusimos en //functor//.
    if not has_alife_info("sucker_achievement_gained") then ; Se comprueba si ya has recibido este Logro.
        if has_alife_info("zat_b14_give_item_stalker") ; Se comprueba si has dado el artefacto al stalker.
then
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 200}) ; Como recompensa, tu relación con los stalkers libres ha mejorado (podrías poner -200 si quieres que el Logro tenga efectos negativos).
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"freedom", 200}) ; Como recompensa, la calidad de la relación que mantienes con Libertad ha aumentado 200 puntos.
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"dolg", 200}) ; Idem con Deber.
xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"bandit", 200}) ; Idem con los Bandidos.
            news_manager.send_tip(db.actor, "st_ach_diplomat", nil, "diplomat", nil, nil) ; Se informa del logro vía PDA.
            db.actor:give_info_portion("sucker_achievement_gained") ; Muestra del logro obtenido.
        end
    end
    return has_alife_info("sucker_achievement_gained")
end

NOTA by Dade: Cabe la posibilidad de que el juego crashee al leer el scripts/xr_statistic.script tal y como quedaría siguiendo las instrucciones. Si es así, tendréis que quitar los comentarios que he dejado (los ; y contenido posterior a los mismos) para explicar que hacía cada función.

Toca el turno al archivo scripts/xr_conditions.script, dónde tienes que encontrar:

friend_of_stalkers_functor = xr_statistic.friend_of_stalkers_functor

Y seguidamente, bajo la misma, añadir

sucker_functor = xr_statistic.sucker_functor

Todo está listo, de hecho ya está todo correctamente configurado. Sin embargo, como querremos bordar el trabajo tendremos que: