Increases raider starting loadout diversity (#9839)

This commit is contained in:
fernerr
2020-09-03 11:00:25 +02:00
committed by GitHub
parent 0cd045ff10
commit d36a78471e
10 changed files with 300 additions and 193 deletions

View File

@@ -21,57 +21,6 @@ var/datum/antagonist/raider/raiders
id_type = /obj/item/card/id/syndicate
var/list/raider_guns = list(
/obj/item/gun/energy/rifle/laser,
/obj/item/gun/energy/rifle/laser/xray,
/obj/item/gun/energy/rifle/icelance,
/obj/item/gun/energy/retro,
/obj/item/gun/energy/xray,
/obj/item/gun/energy/mindflayer,
/obj/item/gun/energy/toxgun,
/obj/item/gun/energy/stunrevolver,
/obj/item/gun/energy/rifle/ionrifle,
/obj/item/gun/energy/taser,
/obj/item/gun/energy/crossbow/largecrossbow,
/obj/item/gun/launcher/crossbow,
/obj/item/gun/launcher/grenade,
/obj/item/gun/launcher/pneumatic,
/obj/item/gun/launcher/harpoon,
/obj/item/gun/projectile/automatic/mini_uzi,
/obj/item/gun/projectile/automatic/c20r,
/obj/item/gun/projectile/automatic/wt550,
/obj/item/gun/projectile/automatic/rifle/sts35,
/obj/item/gun/projectile/automatic/tommygun,
/obj/item/gun/projectile/automatic/x9,
/obj/item/gun/projectile/silenced,
/obj/item/gun/projectile/shotgun/pump,
/obj/item/gun/projectile/shotgun/pump/combat,
/obj/item/gun/projectile/shotgun/doublebarrel,
/obj/item/gun/projectile/shotgun/doublebarrel/pellet,
/obj/item/gun/projectile/shotgun/doublebarrel/sawn,
/obj/item/gun/projectile/shotgun/pump/rifle,
/obj/item/gun/projectile/shotgun/foldable,
/obj/item/gun/projectile/colt,
/obj/item/gun/projectile/sec,
/obj/item/gun/projectile/pistol,
/obj/item/gun/projectile/deagle,
/obj/item/gun/projectile/revolver,
/obj/item/gun/projectile/revolver/deckard,
/obj/item/gun/projectile/revolver/derringer,
/obj/item/gun/projectile/revolver/lemat,
/obj/item/gun/projectile/contender,
/obj/item/gun/projectile/pirate,
/obj/item/gun/projectile/tanto,
/obj/item/gun/projectile/shotgun/pump/rifle/vintage
)
var/list/raider_holster = list(
/obj/item/clothing/accessory/holster/armpit,
/obj/item/clothing/accessory/holster/waist,
/obj/item/clothing/accessory/holster/hip
)
/datum/antagonist/raider/New()
..()
raiders = src
@@ -187,86 +136,11 @@ var/datum/antagonist/raider/raiders
player.force_update_limbs()
player.update_eyes()
player.regenerate_icons()
equip_weapons(player)
//Try to equip it, del if we fail.
var/obj/item/device/contract_uplink/new_uplink = new()
if (!player.equip_to_appropriate_slot(new_uplink))
qdel(new_uplink)
give_codewords(player)
return 1
/datum/antagonist/raider/proc/equip_weapons(var/mob/living/carbon/human/player)
var/new_gun = pick(raider_guns)
var/new_holster = pick(raider_holster) //raiders don't start with any backpacks, so let's be nice and give them a holster if they can use it.
var/turf/T = get_turf(player)
var/obj/item/primary = new new_gun(T)
var/obj/item/clothing/accessory/holster/holster = null
//Give some of the raiders a pirate gun as a secondary
if(prob(60))
var/obj/item/secondary = new /obj/item/gun/projectile/pirate(T)
if(!(primary.slot_flags & SLOT_HOLSTER))
holster = new new_holster(T)
holster.holstered = secondary
secondary.forceMove(holster)
else
player.equip_to_slot_or_del(secondary, slot_belt)
if(primary.slot_flags & SLOT_HOLSTER)
holster = new new_holster(T)
holster.holstered = primary
primary.forceMove(holster)
else if(!player.belt && (primary.slot_flags & SLOT_BELT))
player.equip_to_slot_or_del(primary, slot_belt)
else if(!player.back && (primary.slot_flags & SLOT_BACK))
player.equip_to_slot_or_del(primary, slot_back)
else
player.put_in_any_hand_if_possible(primary)
//If they got a projectile gun, give them a little bit of spare ammo
equip_ammo(player, primary)
if(holster)
var/obj/item/clothing/under/uniform = player.w_uniform
if(istype(uniform) && uniform.can_attach_accessory(holster))
uniform.attackby(holster, player)
else
player.put_in_any_hand_if_possible(holster)
/datum/antagonist/raider/proc/equip_ammo(var/mob/living/carbon/human/player, var/obj/item/gun/gun)
if(istype(gun, /obj/item/gun/projectile))
var/obj/item/gun/projectile/bullet_thrower = gun
if(bullet_thrower.magazine_type)
player.equip_to_slot_or_del(new bullet_thrower.magazine_type(player), slot_l_store)
if(prob(20)) //don't want to give them too much
player.equip_to_slot_or_del(new bullet_thrower.magazine_type(player), slot_r_store)
else if(bullet_thrower.ammo_type)
var/obj/item/storage/box/ammobox = new(get_turf(player.loc))
for(var/i in 1 to rand(3,5) + rand(0,2))
new bullet_thrower.ammo_type(ammobox)
player.put_in_any_hand_if_possible(ammobox)
return
if(istype(gun, /obj/item/gun/launcher/grenade))
var/list/grenades = list(
/obj/item/grenade/empgrenade,
/obj/item/grenade/smokebomb,
/obj/item/grenade/flashbang
)
var/obj/item/storage/box/ammobox = new(get_turf(player.loc))
for(var/i in 1 to 7)
var/grenade_type = pick(grenades)
new grenade_type(ammobox)
player.put_in_any_hand_if_possible(ammobox)
if(istype(gun, /obj/item/gun/launcher/harpoon))
var/obj/item/storage/backpack/duffel/bag = new(get_turf(player))
for(var/i in 1 to 4)
new /obj/item/material/harpoon(bag)
player.put_in_any_hand_if_possible(bag)
/datum/antagonist/raider/proc/equip_vox(var/mob/living/carbon/human/player)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/vox(player), slot_shoes) // REPLACE THESE WITH CODED VOX ALTERNATIVES.

View File

@@ -1445,12 +1445,12 @@
/obj/item/gun/energy/retro = 0.5,
/obj/item/gun/energy/toxgun = 0.5,
/obj/item/gun/projectile/automatic/improvised = 1,
/obj/item/gun/projectile/contender = 1,
/obj/item/gun/projectile/contender = 0.5,
/obj/item/gun/projectile/leyon = 1,
/obj/item/gun/projectile/revolver/derringer = 1,
/obj/item/gun/projectile/shotgun/pump/rifle/obrez = 1,
/obj/item/gun/projectile/shotgun/pump/rifle/vintage = 1,
/obj/item/gun/launcher/harpoon = 0.5
/obj/item/gun/launcher/harpoon = 1
)
var/list/Common = list(
@@ -1461,6 +1461,7 @@
/obj/item/gun/energy/rifle = 1,
/obj/item/gun/projectile/automatic/c20r = 1,
/obj/item/gun/projectile/automatic/mini_uzi = 1,
/obj/item/gun/projectile/automatic/tommygun = 1,
/obj/item/gun/projectile/automatic/wt550/lethal = 0.5,
/obj/item/gun/projectile/colt = 0.5,
/obj/item/gun/projectile/pistol/sol = 1,
@@ -1481,6 +1482,7 @@
/obj/item/gun/energy/blaster/rifle = 1,
/obj/item/gun/energy/pistol/hegemony = 1,
/obj/item/gun/energy/rifle/laser = 1,
/obj/item/gun/energy/rifle/icelance = 1,
/obj/item/gun/energy/rifle/ionrifle = 0.5,
/obj/item/gun/energy/vaurca/blaster = 1,
/obj/item/gun/energy/xray = 1,
@@ -1491,13 +1493,14 @@
/obj/item/gun/projectile/deagle/adhomai = 1,
/obj/item/gun/projectile/silenced = 1,
/obj/item/gun/projectile/dragunov = 1,
/obj/item/gun/projectile/plasma/bolter = 1,
/obj/item/gun/projectile/plasma/bolter = 0.5,
/obj/item/gun/projectile/shotgun/doublebarrel/sawn = 1,
/obj/item/gun/projectile/shotgun/foldable = 1,
/obj/item/gun/projectile/shotgun/pump/combat = 1,
/obj/item/gun/projectile/shotgun/pump/combat/sol = 1,
/obj/item/gun/projectile/automatic/rifle/adhomian = 1,
/obj/item/gun/projectile/musket = 0.5
/obj/item/gun/projectile/musket = 0.5,
/obj/item/gun/launcher/grenade = 1
)
var/list/Epic = list(
@@ -1515,7 +1518,8 @@
/obj/item/gun/projectile/automatic/rifle/z8 = 1,
/obj/item/gun/projectile/cannon = 1,
/obj/item/gun/projectile/gyropistol = 0.5,
/obj/item/gun/projectile/plasma = 1
/obj/item/gun/projectile/plasma = 0.5,
/obj/item/gun/projectile/revolver = 0.5
)
var/list/Legendary = list(
@@ -1533,27 +1537,45 @@
concealable = TRUE
/obj/random/weapon_and_ammo/post_spawn(var/obj/item/gun/projectile/spawned)
if(!istype(spawned, /obj/item/gun/projectile))
if(istype(spawned, /obj/item/gun/energy))
return
if(spawned.magazine_type)
var/obj/item/ammo_magazine/am = spawned.magazine_type
new am(spawned.loc)
new am(spawned.loc)
else if(istype(spawned, /obj/item/gun/projectile/shotgun) && spawned.caliber == "shotgun")
if(istype(spawned.loc, /obj/item/storage/box))
spawned.loc.icon_state = "largebox"
var/obj/item/storage/box/b = new /obj/item/storage/box(spawned.loc)
for(var/i = 0; i < 8; i++)
new spawned.ammo_type(b)
else if(spawned.ammo_type)
var/list/provided_ammo = list()
for(var/i = 0; i < (spawned.max_shells * 2); i++)
provided_ammo += new spawned.ammo_type(spawned.loc)
if(provided_ammo.len)
new /obj/item/ammo_pile(spawned.loc, provided_ammo)
if(istype(spawned, /obj/item/gun/projectile/musket))
new /obj/item/reagent_containers/powder_horn(spawned.loc)
else if(istype(spawned, /obj/item/gun/projectile))
if(spawned.magazine_type)
var/obj/item/ammo_magazine/am = spawned.magazine_type
new am(spawned.loc)
new am(spawned.loc)
else if(istype(spawned, /obj/item/gun/projectile/shotgun) && spawned.caliber == "shotgun")
if(istype(spawned.loc, /obj/item/storage/box))
spawned.loc.icon_state = "largebox"
var/obj/item/storage/box/b = new /obj/item/storage/box(spawned.loc)
for(var/i = 0; i < 8; i++)
new spawned.ammo_type(b)
else if(spawned.ammo_type)
var/list/provided_ammo = list()
for(var/i = 0; i < (spawned.max_shells * 2); i++)
provided_ammo += new spawned.ammo_type(spawned.loc)
if(provided_ammo.len)
new /obj/item/ammo_pile(spawned.loc, provided_ammo)
if(istype(spawned, /obj/item/gun/projectile/musket))
new /obj/item/reagent_containers/powder_horn(spawned.loc)
else if(istype(spawned, /obj/item/gun/launcher))
if(istype(spawned, /obj/item/gun/launcher/harpoon))
for(var/i in 1 to 4)
new /obj/item/material/harpoon(spawned.loc)
if(istype(spawned, /obj/item/gun/launcher/grenade))
var/list/grenade_types = list(
/obj/item/grenade/smokebomb,
/obj/item/grenade/flashbang,
/obj/item/grenade/empgrenade,
/obj/item/grenade/chem_grenade/incendiary
)
var/obj/item/storage/bag/plasticbag/bag = new /obj/item/storage/bag/plasticbag(spawned.loc)
for(var/i in 1 to 7)
var/chosen_type = pick(grenade_types)
new chosen_type(bag)
/obj/random/weapon_and_ammo/spawn_item()
var/obj/item/W = pick_gun()