diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 67c52379e8..dfddb2599e 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -375,6 +375,9 @@ // Hellhound strain flags #define HELLHOUND_NORMAL "Normal" +// Soldier strain flags +#define SOLDIER_NORMAL "Normal" + var/list/default_onmob_icons = list( WEAR_L_HAND = 'icons/mob/humans/onmob/items_lefthand_0.dmi', WEAR_R_HAND = 'icons/mob/humans/onmob/items_righthand_0.dmi', diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm index 878a591357..a3d5e476f8 100644 --- a/code/__DEFINES/xeno.dm +++ b/code/__DEFINES/xeno.dm @@ -634,8 +634,9 @@ #define XENO_CASTE_HIVELORD "Hivelord" #define XENO_CASTE_LURKER "Lurker" #define XENO_CASTE_WARRIOR "Warrior" +#define XENO_CASTE_SOLDIER "Soldier" #define XENO_CASTE_SPITTER "Spitter" -#define XENO_T2_CASTES list(XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER) +#define XENO_T2_CASTES list(XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_SOLDIER) //t3 #define XENO_CASTE_BOILER "Boiler" #define XENO_CASTE_PRAETORIAN "Praetorian" @@ -648,7 +649,7 @@ #define XENO_CASTE_HELLHOUND "Hellhound" #define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND) -#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND) +#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND, XENO_CASTE_SOLDIER) // Checks if two hives are allied to each other. // PARAMETERS: diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index a50e25ae9e..000551ba51 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -761,6 +761,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou M = /mob/living/carbon/xenomorph/predalien if(XENO_CASTE_HELLHOUND) M = /mob/living/carbon/xenomorph/hellhound + if(XENO_CASTE_SOLDIER) + M = /mob/living/carbon/xenomorph/soldier return M diff --git a/code/modules/admin/game_master/game_master.dm b/code/modules/admin/game_master/game_master.dm index 947c49aeb5..8607f856e5 100644 --- a/code/modules/admin/game_master/game_master.dm +++ b/code/modules/admin/game_master/game_master.dm @@ -29,7 +29,7 @@ GLOBAL_VAR_INIT(radio_communication_clarity, 100) // Spawn stuff #define DEFAULT_SPAWN_XENO_STRING XENO_CASTE_DRONE -#define GAME_MASTER_AI_XENOS list(XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_LURKER, XENO_CASTE_CRUSHER, XENO_CASTE_FACEHUGGER) +#define GAME_MASTER_AI_XENOS list(XENO_CASTE_DRONE, XENO_CASTE_SOLDIER, XENO_CASTE_RUNNER, XENO_CASTE_LURKER, XENO_CASTE_CRUSHER, XENO_CASTE_FACEHUGGER) #define DEFAULT_SPAWN_HIVE_STRING XENO_HIVE_NORMAL #define DEFAULT_XENO_AMOUNT_TO_SPAWN 1 diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Soldier.dm b/code/modules/mob/living/carbon/xenomorph/castes/Soldier.dm new file mode 100644 index 0000000000..4a93b4609d --- /dev/null +++ b/code/modules/mob/living/carbon/xenomorph/castes/Soldier.dm @@ -0,0 +1,49 @@ +/datum/caste_datum/soldier + caste_type = XENO_CASTE_SOLDIER + tier = 2 + melee_damage_lower = XENO_DAMAGE_TIER_3 + melee_damage_upper = XENO_DAMAGE_TIER_4 + melee_vehicle_damage = XENO_DAMAGE_TIER_2 + max_health = 360 + plasma_gain = XENO_PLASMA_GAIN_TIER_8 + plasma_max = XENO_PLASMA_TIER_10 + crystal_max = XENO_CRYSTAL_LOW + xeno_explosion_resistance = XENO_EXPLOSIVE_ARMOR_TIER_1 + armor_deflection = XENO_ARMOR_TIER_1 + evasion = XENO_EVASION_MEDIUM + speed = XENO_SPEED_TIER_7 + + caste_desc = "A warrior of hives." + evolves_to = list(XENO_CASTE_QUEEN, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD) //Add more here separated by commas + deevolves_to = list("Drone") + + minimap_icon = "warrior" + +/mob/living/carbon/xenomorph/soldier + caste_type = XENO_CASTE_SOLDIER + name = XENO_CASTE_SOLDIER + desc = "An alien warrior." + icon = 'icons/mob/xenos/soldier.dmi' + icon_size = 48 + icon_state = "Soldier Walking" + plasma_types = list(PLASMA_PURPLE) + tier = 2 + pixel_x = -12 + old_x = -12 + base_actions = list( + /datum/action/xeno_action/onclick/xeno_resting, + /datum/action/xeno_action/onclick/regurgitate, + /datum/action/xeno_action/watch_xeno, + /datum/action/xeno_action/activable/tail_stab, + /datum/action/xeno_action/activable/transfer_plasma, //fourth macro + /datum/action/xeno_action/onclick/tacmap, + ) + inherent_verbs = list( + /mob/living/carbon/xenomorph/proc/vent_crawl, + ) + gib_chance = 100 + claw_type = CLAW_TYPE_SHARP + + mutation_type = SOLDIER_NORMAL + icon_xeno = 'icons/mob/xenos/soldier.dmi' + icon_xenonid = 'icons/mob/xenonids/drone.dmi' diff --git a/colonialmarines.dme b/colonialmarines.dme index 9872ffc48e..3a7bae346b 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -2046,6 +2046,7 @@ #include "code\modules\mob\living\carbon\xenomorph\castes\Ravager.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Runner.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Sentinel.dm" +#include "code\modules\mob\living\carbon\xenomorph\castes\Soldier.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Spitter.dm" #include "code\modules\mob\living\carbon\xenomorph\castes\Warrior.dm" #include "code\modules\mob\living\carbon\xenomorph\items\iff_tag.dm" diff --git a/icons/mob/xenos/soldier.dmi b/icons/mob/xenos/soldier.dmi new file mode 100644 index 0000000000..c6d878e73d Binary files /dev/null and b/icons/mob/xenos/soldier.dmi differ diff --git a/icons/mob/xenos/wounds.dmi b/icons/mob/xenos/wounds.dmi index 65c5a84fbe..828a73e4be 100644 Binary files a/icons/mob/xenos/wounds.dmi and b/icons/mob/xenos/wounds.dmi differ